text:
US 6625671 B1 Abstract A method and apparatus is presented providing high-performance lossless data compression implemented in hardware for improving network communications. A compression module useful in a switching platform is also presented capable of compressing data stored in buffer memory. Instructions for a compression task are assigned to the compression module by a microprocessor writing a control block to a queue in stored local memory. The control block informs the compression module of the size and location of the unprocessed data, as well as a location in the buffer memory for storing the processed data and the maximum allowed size for the compressed data. Using this technique, the microprocessor can limit the compression of data to those data streams allowing compression, to those segments that are susceptible to compression, and to those segments that are large enough to show a transmission speed improvement via compression.
Claims(46) 1. A data processing module for processing raw data in a main buffer memory into processed data, the module comprising:
a) at least one processing engine having a processing device, an input buffer, and an output buffer;
b) a communications path linking the input and output buffers of the processing engine with the main buffer memory;
c) a processing control memory having
i) at least two different raw data memory locations each indicating a separate location in the main buffer memory of the raw data,
ii) at least one processed data memory location indicating a location in buffer memory for storing processed data; and
d) a buffer handling mechanism for directing raw data from the one of the raw data memory locations to one of the input buffers, and further for directing data from one of the output buffers to one of the processed memory locations.
2. The data processing module of
e) an instruction receiving interface for receiving processing instructions, the instructions indicating the raw data memory location, the processed data memory location, and a raw data length indicating the size of the raw data to be processed.
3. The data processing module of
e) an instruction receiving interface for receiving processing instructions, the instructions indicating the raw data memory location, the processed data memory location, and a raw data length indicating the size of the raw data to be processed.
4. The data processing module of
5. The data processing module of
6. The data processing module of
7. The data processing module of
8. The data processing module of
9. The data processing module of
10. The data processing module of
f) a compression header generation means for generating and writing to the buffer memory a compression header containing information regarding the size of the processed data.
11. The data processing module of
12. The data processing module of
13. The data processing module of
14. The data processing module of
15. The data processing module of
16. A data compression module for compressing data in a buffer memory, the data compression module comprising:
a) a buffer memory interface in communication with the buffer memory, the buffer memory interface allowing storage and retrieval access to memory locations in the buffer memory;
b) an instruction receiving interface, for receiving instructions relating to the compression and decompression of data in the buffer memory including a location in buffer memory of unprocessed data and a location in buffer memory for storage of processed data;
c) a plurality of compression engines, each in communication with the buffer memory interface;
d) a compression control circuitry in communication with the buffer memory interface and the instruction receiving interface, the compression control circuitry having circuitry for managing each compression engine independently.
17. An apparatus for transmitting data comprising:
a) a receiving port that receives raw data;
b) a buffer memory that stores data at specific memory locations, the buffer memory being in communication with the receiving port;
c) a microprocessor in communication with the buffer memory;
d) an instruction storage structure for storing processing instructions created by the microprocessor, the processing instructions indicating a location of raw data in the buffer memory;
e) a processing module in communication with the instruction storage structure and the buffer memory, the processing module having
i) a processing engine for converting the raw data into processed data; and
ii) a processing control for managing movement of the raw data from the buffer memory to the processing engine when indicated by the processing instructions, and for managing movement of the processed data from the processing engine to the buffer memory; and
f) a transmitting port that transmits the processed data.
18. The apparatus of
19. The apparatus of
20. The apparatus of
21. The apparatus of
22. The apparatus of
i) the size of the raw data;
ii) the decompression capabilities available to a receiving device; and
iii) the compressability of the data.
23. The apparatus of
24. The apparatus of
25. The apparatus of
26. The apparatus of
g) a receiving interface located between the receiving port and the buffer memory and a transmission interface located between the transmitting port and the buffer memory, each interface having converters capable of converting data between a known network or channel protocol and a common data protocol used for storing data in the buffer memory.
27. The apparatus of
28. The apparatus of
29. The apparatus of
30. A method for transmitting compressed data comprising the steps of:
a) receiving raw data having an original length and destination information on a reception port;
b) storing the raw data in a buffer memory;
c) analyzing the destination information of the raw data;
d) submitting compression instructions including a raw data buffer memory location to a compression module;
e) compressing in the compression module the raw data found at the raw data buffer memory location;
f) storing compressed data in the buffer memory at a location other than the raw data buffer memory location; and
g) transmitting the compressed data out a transmission port according to the destination information.
31. The method of
32. The method of
33. The method of
i) determining whether the size of the raw data exceeds a preset minimum size;
ii) determining whether a destination indicated by the destination information is capable of decompressing data; and
iii) determining whether recent raw data received from the reception port with the same destination information reached an acceptable level of compression.
34. The method of
35. An apparatus for transmitting compressed data comprising:
a) means for receiving raw data having an original length and destination information on a reception port
b) means for storing the raw data in a buffer memory;
c) means for analyzing the destination information of the raw data;
d) means for submitting compression instructions including a raw data buffer memory location to a compression module, the compression module having means for compressing the raw data found at the raw data buffer memory location;
e) means for storing the compressed data in the buffer memory at a location other than the raw data buffer memory location; and
f) means for transmitting the compressed data out a transmission port according to the destination information.
36. A method for compressing data comprising the steps of:
a) receiving uncompressed data formatted according to a first communications protocol incorporating destination information;
b) converting the uncompressed data to a common protocol;
c) storing the converted, uncompressed data in a buffer memory;
d) compressing the uncompressed data found in the buffer memory without compressing destination information;
e) storing the compressed data in the buffer memory at a memory location different from that of the uncompressed data;
f) converting the compressed data and the destination information into a second communications protocol;
g) transmitting the compressed data according to the second communications protocol.
37. A method for compressing and decompressing data in a compression module comprising the steps of:
a) reading a control block defining a task from a control block queue, the control block containing control information, read and write buffer memory locations, and read data size information;
b) analyzing the control information to determine whether the data is to be compressed or decompressed and so informing at least one compression device;
c) managing FIFO inputs and outputs of the at least one compression device by loading FIFO inputs with raw data from the read buffer memory location and by writing processed data from FIFO outputs to the write buffer memory location;
d) tracking the amount of data processed by the compression devices and terminating the task when all data has been processed; and
e) loading compressed data size, upon completion of a compression task, to a compression header at a known location proximate the write buffer memory location.
38. The method of
39. The method of
40. The method of
41. The method of
42. A method of compressing and decompressing data transmitted between two remote locations comprising:
a) receiving at a first location uncompressed data of an original length along with destination information identifying a second location;
b) storing the uncompressed data in a buffer memory;
c) taking the uncompressed data from the buffer memory and compressing the uncompressed data to a compressed length;
d) storing the compressed data in the buffer memory at a memory location different from that of the uncompressed data; and
e) transmitting to the second location the compressed data along with a compression header, the compression header containing the original length and the compressed length.
43. The method of
44. The method of
45. The method of
46. The method of
f) receiving the compression header and compressed data at the second location; and
g) decompressing the data at the second location, using the original length from the compression header to prevent decompression errors.
Description The present invention relates in general to methods and apparatus for electronic data communication, and particularly to a method of compressing buffered data being transmitted between digital devices. In conventional networked systems, data is often transmitted between digital devices over a variety of protocols. Switching platforms exist that are capable of converting and switching data from one protocol to another. For instance, data can be transmitted by an IBM mainframe over an ESCON channel protocol. A switching platform can receive such an ESCON data stream and redirect the data over a different channel protocol like SCSI, or even a network protocol such as ATM. Using such devices, IBM mainframes can communicate to otherwise incompatible devices such as a SCSI storage device using a known protocol like ESCON. Switching platforms may also allow remote access to devices that are physically located beyond the limits of a particular communications protocol. For instance, local ESCON data streams can be converted to a Wide Area Network protocol such as ATM and easily be transmitted across the continent. A separate switching platform at the receiving site can receive the data stream and convert it back to the original or another protocol, whatever is appropriate for the receiving device. When converting data streams between protocols and transmitting the data streams over large distances, it is important that the data flow between devices be as efficient as possible. To maximize transmission speeds, it is often useful to compress the data before transmission. It is well known, for instance, to compress all data in a data stream in order to speed transmission between two like devices. This type is transmission is well documented in protocols such as those used for modem to modem data compression. Unfortunately, several difficulties prevent the use of the same type of data compression techniques over channel or network communications. First, data transmitted over a channel or network must contain destination information that can be understood by devices on the channel or network. This destination information cannot be compressed or encrypted, or else other devices on the channel or network will not recognize the data and the data could not be properly routed. Second, data is often transmitted in fragments that are so small that fragment by fragment compression would sometimes slow down data transmission. Thus, it is important to selectively compress only those fragments large enough that compression actually reduces the transmission time. Third, the receiving device will usually expect to receive the data uncompressed. As a result, compression should only take place where a mechanism exists at the receiving end to decompress the data before the data is presented to the receiving device. If no such mechanism exists, the data stream should not be compressed. What is needed then is a compressing mechanism that overcomes these difficulties by compressing message packets in a way that header information is readable by other devices, and in a way that compression can be selectively engaged on both a fragment-by-fragment basis and on a path-by-path basis. The present invention meets this need by providing a mechanism for compressing data in a data stream without compressing destination information. The present invention is also capable of selectively compressing only those packets that are large enough that the time required for data compression will be offset by decreased transmission time. Finally, the present invention incorporates this compression technique in a multi-port gateway switch that can selectively engage compression only to those destinations that have the capability for decompression. Specifically, the present invention teaches a method and apparatus for implementing efficient data compression. According to one embodiment, a data compression module comprises compression control circuitry and a plurality of compression engines. The compression module receives instructions for compressing or decompressing through a control block interface. FIFOs are provided for the compression engines to store unprocessed and processed data. The compression control circuitry manages the data flow between the FIFOs and external buffer memory. The status of the compression or decompression task is stored in the compression control. In a further embodiment, the compression module is incorporated in a switching apparatus for selectively encoding messages transmitted over a network or channel protocol. The apparatus includes a microprocessor, a local memory coupled to the microprocessor, a multi-ported data buffer memory coupled to the microprocessor and a data compression module coupled to the buffer memory and the local memory. The microprocessor communicates to the microprocessor through control blocks stored in the local memory. Data to be processed and processed data are both stored in the multi-ported data buffer. In a further embodiment, the switching apparatus supports multiple simultaneous network or channel interfaces. Each of these interfaces is able to convert data streams from a particular network or channel protocol to a common data protocol used for storing data in the buffer memory. The data that is being transmitted between various interfaces can be compressed or uncompressed, depending on the compressability of the data, the capabilities of the receiving device, or the size of the data segments being transmitted. A method is also described that allows data in the buffer memory to be selectively compressed. This method includes the steps of writing a control block to the local memory, reading the control block to determine uncompressed data location and size as well as the location at which the compressed data is to be stored, compressing the data and storing the data at the appropriate locations in the buffer memory, and reporting the status and success of the compression by writing over a portion of the control block. FIG. 1 illustrates the switching platform environment in which the present invention is utilized. FIG. 2 illustrates the components of a control block as used in the present invention. FIG. 3 is a block diagram of a compression module according to one embodiment of the present invention. FIG. 4 illustrates the re-written first word of a control block as used in the present invention. FIG. 5 is a data flow logic diagram according to one embodiment of the present invention. FIG. 6 is a data flow logic diagram for performing a control block. FIG. 1 is a block diagram of switching platform 100 using the present invention. Platform 100 utilizes four major subcomponents, namely a microprocessor 110, local memory 120, a data compression module 130, and data buffer memory 140. These components communicate with one another and with input/output ports 150 as indicated by the two-way arrows in FIG. 1. This communication can occur in a variety of ways, but is accomplished in the preferred embodiment by incorporating the elements into separate modules connected by a PCI bus. As is shown in FIG. 1, buffer memory 140 is multi-ported memory, allowing microprocessor 110, data compression module 130, and the plurality of interfaces 160 all to have direct access to memory locations within buffer memory 140. This allows more efficient data movement within the switching platform 100. Each of the ports 150 is connected to the rest of the switching platform 100 through the use of interfaces 160. Each interface 160 is specially designed to translate to and from a particular network or channel protocol such as ESCON, SCSI, ATM, T3/E3, 10/100 Ethernet, and Fibre Channel. Each of the data streams coming through one of the ports 150 will contain headers with destination information that microprocessor 110 can comprehend. The incoming data is stored temporarily in buffer memory 140. When the data is ready to be transmitted, microprocessor 110 informs the appropriate interface 160 of the data's destination and the buffer memory location. The interface 160 then takes the destination information and the data found in the buffer memory location, and then constructs data segments appropriate for its protocol. As an example, a host computer 170 may be communicating via its ESCON channel 175 with a remote storage device 180 over the ATM wide area network 190. In such an arrangement, ESCON packets sent by host computer 170 will be received by switching platform 100 over the port 150 connected to ESCON channel 175. Microprocessor 110 will read the header information on this incoming data stream, and direct the data to be outputted over the interface 160 and port 150 connected to the ATM network 190. The interfaces 160 work cooperatively allowing the ESCON data stream to be interpreted by the first interface 160, and then stored in the Buffer Memory 140 in a common, raw format. The second interface 160 can then retrieve the data from Buffer Memory 140 in the raw format. The data and its destination information are then reformatted for ATM protocols and sent over the ATM network 190. Also connected to the ATM network 190 is a second switching platform 101 that can receive the data over the ATM network and convert it to a protocol (such as the SCSI channel protocol) appropriate for the remote storage device 180. Similarly, data received from the remote storage device 180 over the ATM network 190 will be temporarily stored in buffer 140 in the raw format before being routed to the host computer 170 over ESCON Channel 175. Thus, all data passing through the switching platform 100 will be temporarily stored in buffer memory 140. Processor 110 tracks the source and destination of this buffered data, along with information about the compression capabilities available along each of the ports 150. Processor 110 is able to recall this information from local memory 120. It is sometimes advantageous to compress the data before it is transmitted over a network. For instance, the data stream from host computer 170 to remote storage 180 could be sent faster over the ATM network 190 if it is first compressed. Of course, a device such as the second switching platform 101 must exist at the remote location to decompress the data before it is presented to remote storage device 180. By examining the source and destination information, the microprocessor is able to determine which information in buffered memory 140 must be compressed or decompressed, and which information should be transmitted as is. Once processor 110 has determined that some buffered data is to be compressed, it communicates this to data compression module 130 by writing information to a queue in local memory 120. Each entry in the queue provides the information necessary for compressing a contiguous block of data. This queue entry is referred to in the preferred embodiment as a control block. As can be seen in FIG. 2, a control block 200 consists of four words. The first word contains an ownership bit 210 that identifies ownership of the control block 200. When the ownership bit 210 is set to 0, the microprocessor 110 is considered to own the control block 200. When set to 1, the ownership bit 210 indicates that the compression module 130 owns the control block 200. The first word also contains a write length limit (or �Wr_Len�) 220. The write length limit 220 contains the maximum number of words that the data compression module 130 can use for the compressed data. If the length of the compressed data exceeds this limit 220, then compression on this data should be terminated by the data compression module 130 and an error should be returned. By setting the write length limit 220 to a known fraction of the length of the entire data segment to be compressed, the microprocessor 110 can prevent the data from being compressed when a predetermined compression ratio is not obtained. On decompression, the write limit 220 operates as a safety valve. An error occurs if the decompression task writes more data to buffer memory 140 than the expected ranged indicated by write limit 220. The first word of control block 200 also contains the read gather block length (or �Rd_Gather�) 230. The read gather block length 230 indicates the size of the total segment of data to be compressed. The second word of control block 200 contains the read length (or �Rd_Len�) 240, which indicates the length of the current block of data to be read in long words. The second word also contains the control block control 250, which allows the microprocessor 110 to communicate control information to the data compression module 130. The third word consists of the write pointer (or �Wr_Ptr�) 260, identifying the location in buffer memory 140 in which the result of the compression or decompression will be stored. The fourth word consists of the read pointer (or �Rd_Ptr�) 270, identifying the location in buffer memory 140 where the incoming data is held. The read length 240 is distinguished from the read gather block length 230 in that the read length 240 indicates how much of the data in the total data segment can be found in the buffer memory in the contiguous memory locations directly following the read pointer 270 memory location. If the total data segment being compressed is found in non-contiguous memory locations in the buffer memory 140, then multiple control blocks will be used to present this data to the data compression module 130. In these circumstances, the read gather block length 230 will indicate the size of the whole data segment, and will be larger than the read pointer 240 size, which only indicates the size of the current contiguous data size. As seen in FIG. 3, the data compression module 130 actually contains two compression engines 310, 320, allowing data compression module 130 to perform two separate compression tasks simultaneously. The two compression engines 310, 320 are identical, although more details of the first compression engine 310 are shown in FIG. 3. Microprocessor 110 allocates compression tasks between the two compression engines 310, 320 by maintaining two separate circular compression queues in local memory 120. Control blocks 200 placed in the first queue will be handled by the first compression engine 310, while control blocks 200 placed in the second queue will be performed by the second compression engine 320. Although a number of algorithms could be used to assign tasks between the two compression engines 310, 320, the present invention merely alternates tasks between the two engines 310, 320. More advanced work sharing algorithms could easily be developed, and would be well within the scope of the present invention. As shown in FIG. 1, local memory 120 is dual ported memory. This allows the compression module 130 direct access to the control block compression queues created by microprocessor 110. Once the microprocessor 110 is ready for a compression engine 310, 320 to begin working on a compression task, a control block is written to one of the queues in local memory 120. The microprocessor 110 then indicates to the compression module 130 that it may begin compression. As shown in FIG. 3, the main components of data compression module 130 are compression control 300, two compression engines 310, 320, a first and second switch 330, 340, a local bus 350, and a bus interface bridge 360. The compression control 300 is itself composed of a third switch 385, and three main sub-components: a first compression engine control 370, a second compression engine control 380, and a buffer control 390. The first and second compression engine controls 370, 380 are identical, although more details of the first compression engine control 370 are shown in FIG. 3. These three sub-components are implemented in the preferred embodiment as separate complex programmable logic devices, or CPLDs. The compression control 300 reads the control block queue stored in local memory 120 through local bus 350 and bus interface bridge 360. The bus interface bridge 360 serves to transfer communications from the local bus 350 used within the compression module 130 to the communication bus (such as PCI) used to communicate between major modules in the switching platform 100. One example of such a bus interface is a V961PBC chip produced by V3 Semiconductor, although those skilled in the art will recognize that other bus interface devices may be used without exceeding the scope of the present invention. Each compression engine control 370, 380 maintains a pointer to the current control block in its respective queue through a queue pointer register 372. This queue pointer register 372 is initialized by microprocessor 110 at the start-up of platform 100. The compression engine controls 370, 380 also maintain queue control register 374, control block control register 376, and control block status register 378. The queue control register contains bits that manage the function of the queue. In the preferred embodiment, the queue control register 374 contains the following control bits and associated meanings:
The microprocessor 110 sets the queue control register 374 by writing values directly to the queue control register 374. By setting the GO bit, microprocessor 110 indicates to compression module 130 that data is ready for processing. The control block control register 376 is set to the value of CB_Ctrl 250 when each control block 200 is read. The important values of the control block control register 376 are set forth below:
Note that the �compression� task can be either a request to compress a packet of data or to decompress a packet of data. The two different tasks are differentiated by the COMPRESS bit. One should also note that it is possible for one, both, or neither of the FIRST and LAST bits to be set. If a segment to be compressed is found in a single, contiguous memory location, only a single control block 200 will be used and both the FIRST and LAST bits will be set. Multiple control block 200 segments could have control blocks that are neither the first nor the last control block 200 in the segment. Additional values that need to be communicated between the microprocessor 110 and the data compression module 130 could be set in the control block control register 376. The control block status register 378 contains four bit values relating to the current compression task. In particular, the following four values are found in this register 378:
When a compression engine 310, 320 has completed its task, the appropriate compression engine control 370, 380 will alter the first word of the control block 200 that contained the instructions for that task. The modified first word 400 is shown in FIG. 4. The rewritten first word 400 contains at bit location 23 an ownership bit 210 set to 0. This indicates that the compression module 130 has completed the compression task. The rewritten first word also contains the length of the result of the compression task 410. Finally, the rewritten first word contains a control block status 420 of three bits in length, which informs the microprocessor 110 whether the compression was done with no errors, with an error, or with a data expansion error. This information is taken from the control block status register 378. Compression engines 310, 320 perform the actual compression or decompression of data. According to the preferred embodiment of the present invention, the compression algorithm is based on the Lemple-Ziv compression algorithm, and is embodied in a single device. One example of such a compression device is an ALDC1-20S-HA manufactured by IBM. One skilled in the art will recognize that incorporating a hardware compression implementation using the Lemple-Ziv algorithm guarantees complete data integrity. One so skilled would also realize that other compression hardware based upon the same or other compression algorithms could be used in place of the ALDC1-20S-HA devices used in the preferred embodiment. As shown in FIG. 3, each compression engine 310, 320 includes two ALDC devices: one ALDC upper 312 for upper byte processing and one ALDC lower 314 for lower byte processing. The division of compression work between upper and lower byte devices is well known in the prior art. To function properly, each compression engine 310, 320 must know the size of the entire data stream being compressed. This information is provided by microprocessor 110 through the Rd_Gather 230 value in control block 200. One unique aspect of the present invention is this use of variable length inputs and outputs in the compression stream. In conventional compression engines, standard length packets are used for input into or output from the compression engine. The compression engine controls 370 and 380 can communicate control instructions and read status information from the compression engines 310, 320 through the local bus 350. Data movement into and out of the ALDC upper 312 and the ALDC lower 314 does not pass through the local bus 350, but rather passes to and from buffer memory 140 through first and second switches 330, 340, and through FIFO buffers 316, 318. Each ALDC 312, 314 is connected to an input FIFO buffer 316, which stores incoming unprocessed data, and an output FIFO buffer 318, which stores outgoing processed data. FIFO management is maintained by compression control 300 through traditional techniques such as polling or interrupt processing. The input FIFOs 316 are first filled by unprocessed data requested from the buffer memory 140 by the compression control 300. By manipulating the first and second switch 330, 340, the compression control 300 can direct data received from buffer memory 140 to the incoming FIFOs 316 of the appropriate compression engine 310, 320. When the input FIFOs are empty or near empty, compression control 300 requests additional unprocessed data from buffer memory. The ALDC devices read data from the input FIFOs 316, compress or decompress the data, and write the processed data to output FIFOs 318. When an output FIFO 318 is at or near full, or when a compression task is complete, the data is directed by compression control 300 to be written to the buffer memory 140. Data movement to the compression engines 310, 320 is coordinated by the respective compression engine control 370, 380 and buffer control 390. Buffer control 390 contains four buffer memory registers for each compression engine. The four registers are as follows:
These registers are filled at the start of each control block processing. When the first compression control block is read, these registers are provided with the values of control block locations Rd_Ptr 270, Wr_Ptr 260, Rd_Len 240, and Wr_Len 220. The Rd_Len 396 is decreased for each word of data written from the buffer memory 140 to the input FIFOs 316 of the compression engines 310, 312. In this manner, the completion of the compression task represented by the control block 200 is determined merely by determining when the value of Rd_Len 396 is zero. Similarly, the value of Wr_Len 398 is decreased for each word of processed data written to the buffer memory 140. If, during compression, the value of Wr_Len 398 is ever zero or below, the minimum compression ratio requested by microprocessor 110 has not been reached. Consequently, the ERROR and EXP bits of control block status register 378 are set, and the microprocessor 110 will be informed of the error by examining the CB Status found in the re-written first word 400 of control block 200. The compression module 130 can be set to interrupt the microprocessor 110. The two events that can cause an interrupt are the normal completion of a control block 200 or the occurrence of an error. This interrupt behavior is governed by DONE_INT and ERR_INT in control block register 376. FIG. 5 is a logic flow diagram showing data flow and control block access from the point of view of the data compression module 130. The following discussion examines logic flow for one data compression engine 310, 320 only. Thanks to the separate compression engine controls 370, 380, and the separate control block queues in local memory 120, each compression engine 310, 320 is handled identically yet independently. Starting at block 500, the compression module 130 first determines if the CONFIG bit of the queue control register 374 is set at block 502. If so, it is necessary to configure the ALDC devices at step 504 and then clear the CONFIG bit in step 506 before checking the GO bit of the queue control register 374 at step 508. If the CONFIG bit is not set, the GO bit is immediately checked in step 508. If the GO bit is not set, then the compression module 130 has not been authorized by the microprocessor 110 to compress the next control block. As a result, the compression module 130 will simply wait for a short period at step 510 before starting over at step 500. If the GO bit is set, the compression module 130 will then read the control block 200 referenced by the current address in the queue pointer register 372 (step 512). Once read, the values from the control block 200 are stored in the control block control register 376; the buffer control memory registers 392, and 396; and the owner bit in the control block status register 378 (step 514). At this point, only the Rd_Ptr 392 and the Rd_Len 396 are loaded into the buffer control 390. The Wr_Ptr 394 and the Wr_Len 398 are only loaded once it is determined that the current control block 200 is the first control block in a segment. In step 516, the owner bit in queue control register 374 is checked to see if the current control block is valid, with the ownership of the control block assigned to compression module 130. If not, the compression module 130 will set the value of the GO bit in queue control register 374 to 0 in step 518. Then the compression module 130 will wait at step 510 before restarted at step 500. Upon restart, the compression module 130 will not get past the check of the GO bit in step 508 until microprocessor 110 directly sets that bit in the queue control register 374. Of course, step 516 could easily take place before loading the registers in step 514 by merely checking the ownership bit 210 in the control block 200 stored in local memory 120. Both step orders are within the scope of the present invention. In fact, many steps presented in connection with FIGS. 5 and 6 can be completed in a variety of orders. These minor order variations do not significantly alter the functionality of the data compression, and are considered to be within the scope of the present invention. If the ownership bit in queue control register 374 is valid, then the compression task associated with the control block 200 will be performed, as represented by step 600. The process of performing the compression task is described in more detail below in connection with FIG. 6. Once the compression task is completed, it is necessary to re-write the first word of the control block associated with the queue pointer 372. In this step 520, the contents of the queue control register 374 are written over memory locations 23:19 in the first word of 400 of control block 200. Note that since the ownership bit is stored in the first location of the queue control register 372, this will change the ownership bit stored at memory location 23. In addition to the status information, it is also necessary to write the length of the compressed or decompressed data outputted in this compression task. This length can be derived from the value in Wr_Len 398 as subtracted from the original value of Wr_Len 398, or can be obtained from the registers in the compression engines 310, 320 themselves. Finally, the queue pointer register 372 is incremented in step 522 so as to point to the next control block 200 in the control block queue. Note that since the queue is circular, this incrementation will eventually overflow a portion of the queue pointer register 372, bringing the address in the register 372 back to the first control block in the queue. Once the queue pointer 372 is incremented, the process is complete at step 524. Upon completion the system will preferably restart on the compression task in the next control block 200 by restarting at step 500. Turning now to FIG. 6, we see that the details of performing the compression task 600 in a control block 200 are set forth. The first step in this process is to determine whether the task is to compress the data or to decompress the data. This determination, made at step 602, is made by examining the COMPRESS bit in the control block control register 376. If step 602 determines that the data is to be compressed, the compression module 130 then needs to determine in step 604 whether this is the first control block in the data segment being compressed. Again, this determination is made by examining a bit in the control block register 376, namely the FIRST bit. If so, then it is necessary to inform the ALDC devices of the total size of the data to be compressed. This size is found in the control block 200 read at step 512 in the Rd_Gather location 230. This value tells the compression module of the size of the entire unprocessed data segment. Since each of the ALDC devices 312, 314 deal with only half of the data handled by the compression engine (either the upper or lower bytes), the Rd_Gather value 230 is divided by two before it is loaded into ALDC devices 312, 314 in step 606. Next, since this is the first control block 200, the Wr_Ptr 394 and the Wr_Len 398 are loaded with the appropriate values 260, 220 from the current control block 200. By only loading these values on the first control block 200 in a segment, the compression module is able to preserve the state of these values throughout a multiple control block non-contiguous segment. After loading the length value into ALDC devices 312, 314, or directly after determining that the current contiguous packet is not the first packet, compression module 130 then informs the ALDC devices 312, 314 that they are to compress the data. This occurs in step 610. Next, in step 612, the compression control 300 loads the input FIFO buffers 316 with unprocessed data from the buffer memory 140. This step also is responsible for taking processed data from the output FIFO buffers 318 and writing it to buffer memory 140. The read and write locations in buffer memory are specified in the registers in buffer control 390, as explained above. As data is written to and from FIFO buffers 316, 318, the Rd_Len 396 and the Wr_Len 398 are decreased accordingly. Compression module 130 periodically determines whether the Wr_Len 398 has reached zero in step 614. If so, the compression module 130 knows that the desired compression ratio was not met. Consequently, the write limit error bit, or EXP, is set in the control block status register 378 is set in step 616, and the performance of the compression task is considered complete (step 620). In some configurations, the ERROR bit will also be set on a data expansion error. In other configurations, it would be possible for the ERROR bit to signal only a non-data expansion error. In these latter cases, only the EXP bit would be set on data expansion errors. If the write limit has not been reached, the Rd_Len 396 value is checked to see if all of the data in the current contiguous block has been fed to the compression engine 310 or 320. If Rd_Len 396 is still above zero, the compression engine continues to manage the FIFO buffers 316, 318 in step 612. If step 622 finds that Rd_Len 396 is zero, the compression engine waits for all data in the input FIFOs 316 to be processed and the data in the output FIFOs 318 to be written to the buffer memory 140 before continuing. When step 624 is reached, the compression task represented by the control block 200 has been completed. Step 624 then checks to determine if this control block contained the last contiguous block of data in the total segment being compressed. This is done by checking the LAST bit in the control block control register 376. If not, the compression task is complete at step 620. If this is the last control block 200 in a segment, then it is necessary to write a compression header to the data stored in the buffer memory 140. The header is created by reading the value of registers in the ALDC devices 312, 314 in step 626. These registers indicate the size of the original data segment compressed (loaded to the registers in step 606), as well as the size of the upper compressed data and the lower compressed data. This information is then written as a compression header to the buffer memory in step 628. The compression header is defined to be sixteen bytes long, with the original, upper compressed, and lower compressed lengths each taking up four bytes. The final four bytes of the compression header are undefined. The compression header is written to the beginning of the data written to the buffer memory 140. This location was the original write location, or Wr_Ptr 260, from the first control block 200 associated with this data segment. To leave room for this header, the first processed data written to the buffer memory starts 16 bytes after this original write location. This can be accomplished by adding on the sixteen bytes before loading the Wr_Ptr 394 in step 608. The original write location must then be stored either in the control module 130 or simply by being left in the control block 200 stored in local memory 120. This storage allows the original write location to be available at step 628. After the compression header is written to buffer memory 140, the compression task completes at step 620. If the compression module 130 determines at step 602 that the control block 200 contains instructions to decompress data, then the next step is to determine whether the control block 200 contains the first contiguous data block in the segment. This is done at step 640, and is done in the same manner as step 604, which was described above in connection with compressing data. If this is the first control block 200, then the compression module reads the compression header from the buffer memory 140 in step 642. As explained above, this header contains the original length of the data segment, and the compressed upper and lower lengths of the compressed data. In step 644, the compressed upper and lower lengths are then loaded into the registers of the ALDC devices 312, 314, as is required for data decompression with these devices. In step 646, the Wr_Len register 398 in buffer control 390 is then loaded with the value of the Wr_Len 220 from control block 200. Step 646 also loads the Wr_Ptr 398 with the value of write pointer location 260 indicated in the control block 200. The ALDC devices are then told to decompress data in step 648, which is also the next step if step 640 determines that the control block 200 is not the first in a segment. Step 650 then manages data flow between FIFO buffers 316, 318 and buffer memory 140, as was described above in connection with step 612. Periodically, step 652 will check the value of Wr_Len 398 to see if the write limit has been exceeded. If so, the write limit error bit, or EXP, is set in the control block status register 378 is set in step 654, and the performance of the compression task is considered complete (step 620). Assuming step 652 does not find a write limit error, step 656 will check the value of Rd_Len 396 to see if all of the data in the current contiguous block has been fed to the decompression engine 310 or 320. If Rd_Len 396 is still above zero, the compression engine continues to manage the FIFO buffers 316, 318 in step 650. If Rd_Len 396 is zero, the decompression engine waits for all data in the input FIFOs 316 to be processed and the data in the output FIFOs 318 to be written to the buffer memory 140 before continuing. The compression engines 310, 320 are capable of interrupting the compression engine controls 370, 380 if they encounter an error. Upon such an interrupt, the ERROR bit in the control block status register 378 is set and the compression task for this control block 200 is completed. From the point of view of the microprocessor 110, the compression and decompression tasks are handled merely by making a control block entry in one of the compression queues and marking the owner as the compression engine. When data comes through one of the ports 150 and interfaces 160, it is stored in buffer memory 140 with the destination information known to microprocessor 110. The microprocessor 110 can engage in a variety of logic to determine whether or not the data should be compressed or decompressed. For instance, the microprocessor can compress only those data segments that are being transmitted to a location where another platform 101 is available to decompress the data. Additionally, microprocessor can determine the size of segment, and send only data segments of a certain size to the compression module 130. Since the compression technique used by the data compression module 130 does not overwrite data in the buffer memory, the microprocessor 110 maintains a great deal of control over data movement in the platform 100. For instance, the microprocessor 110 can have the compression module 130 attempt to meet a certain compression ratio on a data segment. If the status returned from the data compression module 130 indicates that the maximum compression size was exceeded, the microprocessor can choose to send the uncompressed data maintained in the buffer memory 140. In addition, if there is a problem with receiving compressed data at a remote platform 101, the microprocessor 110 can choose to re-send the uncompressed data in the next attempt. The microprocessor 110 could also maintain a temporal history of failures to achieve certain compression ratios between certain devices. In these circumstances, microprocessor 110 could select never to attempt compression along such a data path, or to suspend compression attempts for that data path temporarily. In addition, it should be realized that the utilization of the data compression module 130 in the switching platform 100 allows automatic compression of data without the compression of header information. The data incoming from an Interface 160 is stored in buffer memory 140. Data compression module 130 is then directed to compress the data without fear of the header information being compressed. When a second interface 160 then transmits the data stored in buffer memory, it treats the compressed data the same as it treats non-compressed data. The data is packetized according to the protocol known by the interface 160, and then header information is attached to the created packets. Using this technique, compression is easily achieved over interfaces that have been resistant to the development of compression schemes, such as ATM. It is also possible to add a one or more additional compression modules to the first compression module 130. In this case, the device recognizes that there are more than one compression modules during start-up diagnostics. The additional modules will automatically be configured as slaves to the first module, providing the system with four or more compression engines through one control interface, further increasing the efficiency of the compression processing. All that would be necessary is to establish and designate one control block queue for each compression engine. In addition to data compression, the framework of the present invention can also be utilized to encrypt data being transmitted over a switching platform. Secure computing environments will desire that all data be encrypted before being transmitted over public or publicly accessible networks. As explained above in connection with compression, it is important that the encryption take place without slowing data transmission, and that it can be implemented on data pathways selectively. A person of ordinary skill in data transmission could easily utilize the present invention for implementing a method and system of encrypting data. The compression engines in the above description would be replaced with encryption engines. The process for re-sending data uncompressed and for sending small data packets uncompressed would be skipped to ensure that all data sent over a public network is encrypted. It is to be understood that the above description is intended to be illustrative, and not restrictive. The invention is not to be taken as limited to all of the details of this description, as modifications and variations thereof may be made without departing from the spirit or scope of the invention. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. For instance, although the described embodiment of the present invention utilizes this shared queue structure, those skilled in the art will recognize that other methods of exchanging data and control packets can be used without exceeding the scope of the present invention. One skilled in the art would also recognize that other compression chips might be employed without exceeding the scope of the present invention. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. Patent Citations
Non-Patent Citations
Referenced by
Legal Events
Rotate |


text:
IMP Awards > Movie Poster Taglines
Movie Poster Taglines
"The rise and fall of New York's greatest nightclub empire" - Limelight (2011)
"The rise and fall of the American dream." - Startup.com (2001)
"The river that erased her past will write her future" - Up the Yangtze (2008)
"The road less travelled is about to get some company." - Moving McAllister (2007)
"The road to civilisation is not always civilised" - Meek's Cutoff (2011)
"The road to freedom is pure adventure." - Running Free (2000)
"The road to hell is paved with good intentions" - Six Gun Savior (2013)
"The road to the stars is open." - Man on a Mission (2012)
"The road will never let you go" - Devil's Mile (2014)
"The robot was just the beginning" - Underwater Dreams (2014)
"The rousing, rollicking adventure of the world's first rockin' rooster!" - Rock-A-Doodle (1992)
"The rules are set. The game is on." - Sleepover (2004)
"The rules are simple. You break them, you die..." - Carriers (2009)
"The rules have changed" - Transformers: Age of Extinction (2014)
"The rules of the game are about to change" - Gracie (2007)
"The Russians' guide to ripping off London" - Bigga Than Ben (2008)
"The S.A.T. is hard to take. It's even harder to steal." - The Perfect Score (2004)
"The Sandman is more than a dream" - Rise of the Guardians (2012)
"The sands will rise. The heavens will part. The power will be unleashed." - The Mummy (1999)
"The Santangelos asked for a miracle. God gave them something slightly more complicated. Their daughter Teresa." - Household Saints (1993)
"The scars of war last forever" - Intimate Enemies (2008)
"The scars of war will last forever." - The Messenger (2009)
"The scene behind the scenes." - Festival in Cannes (2002)
"The sea was their greatest love. And then they met her." - The Golden Boys (aka Chatham) (2009)
"The seamy side of fashion" - Garmento (2003)
"The search for her son was over. The search for her family was just beginning." - The Deep End of the Ocean (1999)
"The search for life beyond begins below." - Aliens of the Deep (2005)
"The search for life is about to end." - Last Days on Mars (2013)
"The search for our beginning could lead to our end" - Prometheus (2012)
"The search for our beginning could lead to our end." - Prometheus (2012)
"The search for the world's biggest wave" - Billabong Odyssey (2003)
"The search for true love begins outside the box" - Lars and the Real Girl (2007)
"The second chapter in the epic fantasy trilogy" - Day Watch (2007)
"The second coming" - The Last Exorcism Part II (2013)
"The secret is out" - Tinker, Tailor, Soldier, Spy (2011)
"The secret is out" - Scandal (tv)
"The secret isn't holding on to what you've got. It's letting go of what you've lost." - The Safety of Objects (2003)
"The secret lives of animals revealed!" - Barnyard (2006)
"The secret of life? The secret's in the sauce." - Fried Green Tomatoes (1991)
"The secret will never leave the ship" - Cargo (2006)
"The secrets that hold us together can also tear us apart." - Eve's Bayou (1997)
"The seeds of a revolution" - Earth Days (2009)
"The sequel you did Nazi coming" - Dead Snow 2: Red vs. Dead (2014)
"The sheltering has begun." - 6 Souls (2010)
"The sheltering has begun. He will find you..." - 6 Souls (2010)
"The shortest distance between friends isn't always a straight line." - The Broken Hearts Club (2000)
"The shortest distance between two people is a certain smile." - A Smile Like Yours (1997)
"The show must go on, but the clothes must come off." - Mrs. Henderson Presents (2005)
"The show was canceled... but the adventure has only begun." - Galaxy Quest (1999)
"The silent treatment - punishment or reward?" - Whitney (tv)

subset: commoncrawl


text:
Blog | Comments |
WoW | 2 Comments |
Recent Comments:
Breakfast Topic: Most frustrating non-drop {WoW}
Aug 6th 2009 11:28AM I've run some places a lot and done lots and lots of quests but my bane is...
The stupid Magisters headpiece off of Darkmaster Gandling in Scholomance. I don't even know how many times I've run that stupid place at level 60... level 70... a couple times at 80 even and it still... hasn't... dropped....
I've had that damned purple hood thing the Warlock gets more times than I can imagine. I still have the 7/8 other pieces of tier 0/0.5 in my bank just waiting for the magical day when I get that piece and I can run around Org wearing it.
I have a friend who had a similar problem until right before BC came out with the Breastpiece of Valor... Oh, it was a joyous day with much screaming in vent the day that thing dropped, followed by dancing around Orgrimmar with full Valor and Hand of Rag swinging.
Arcane Brilliance: Highly ineffective! {WoW}
Jun 25th 2009 11:17AM RE: Megaman music was the sweetest music in a video game:


text:
definition of Wikipedia
Advertizing ▼
This article may be expanded with text translated from the corresponding article in the Russian Wikipedia. (January 2012) Don't speak Russian? Click here to read a machine-translated version of the Russian article. Click [show] on the right to review important translation instructions before translating.
This article may be expanded with text translated from the corresponding article in the Ukrainian Wikipedia. (January 2012) Don't speak Ukrainian? Click here to read a machine-translated version of the Ukrainian article. Click [show] on the right to review important translation instructions before translating.
Russian United Democratic Party "Yabloko" Российская объединённая демократическая партия «Яблоко» |
Leader | Sergey Mitrokhin |
Founder | Grigory Yavlinsky Yuri Boldyrev Vladimir Lukin |
Founded | 1993 |
Headquarters | Moscow |
Ideology | Social liberalism, Social democracy |
Political position | Centre-left |
International affiliation | Liberal International |
European affiliation | European Liberal Democrat and Reform Party |
Official colours | Green, Red |
State Duma |
0 / 450
Seats in the Regional Parliaments |
12 / 3,787
Website | |
http://www.yabloko.ru/ | |
Politics of Russia Political parties Elections |
The Russian United Democratic Party "Yabloko" (Russian: Росси́йская объединённая демократи́ческая па́ртия «Я́блоко» Rossiyskaya obyedinyonnaya demokraticheskaya partiya "Yabloko"; (Russian: Я́блоко - "Apple") is a Russian social liberal party founded by Grigory Yavlinsky and currently led by Sergey Mitrokhin, an opposition member of the Moscow City Duma. The party logo consists of a red circle and a green isosceles triangle, suggesting an apple in a constructivist style.
Contents |
The party dates back to early 1990s. The immediate predecessor of the Yabloko party was the electoral cartel Yavlinsky-Boldyrev-Lukin, formed for the legislative elections of 1993. "Yabloko" is an acronym of the names of its founders: "Я" (Ya) for Grigory Yavlinsky; "Б" (B) for Yuri Boldyrev, and "Л" (L) for Vladimir Lukin, the name meaning "apple" in Russian. The party stands for the greater freedom and civil liberties in Russia, for greater integration with the West, better relations with the United States and membership in the European Union. The party opposed president Boris Yeltsin's and his prime ministers' policies, earning the reputation of a determined opposition movement that nevertheless was devoted to democratic reforms (in contrast, most of the opposition was communist and/or nationalist at that time).[1] Similarly, it has continued to oppose Vladimir Putin for what they see as his increasing authoritarianism and has called for the removal of his elected government "by constitutional means."
Originally established as a public organization in 1993, it transformed into a political party in 2001. It contested the legislative elections of 1993, 1995, 1999, and 2003, with the following results (including deputies elected on the party-list proportional as well as the single-member districts:
It is argued that the vote-count in the 2003 Russian parliamentary election was marred by fraud.[citation needed] Some exit-polls and parallel recounts conducted by opposition observers showed that Yabloko crossed the 5% threshold needed for parliamentary representation, gaining 6% of the vote, which should have been translated into some 20 parliamentary seats.[citation needed] Vladimir Putin himself telephoned Yavlinsky on the night of the election to congratulate his party on making it back into the Duma. However, most of these polls had a high margin of error (plus or minus three percent) and only showed Yabloko obtaining seats by a tiny margin. Official results announced by the Central Election Commission gave Yabloko 4.30% of the vote and no seats on the proportional party-list system. Only four Yabloko candidates won in individual district races and were elected to the Duma.
On 4 December 2005 Yabloko-United Democrats, a coalition formed by Yabloko and the Union of Rightist Forces, won 11% of the vote in the Moscow municipal elections and became one of only three parties (along with United Russia and the Communist Party) to enter the new Moscow City Duma. This success was seen by Yabloko leaders as a hopeful sign for the 2007 Russian parliamentary election, and reinforced the view that Yabloko and the Union of Rightist Forces need to unite in order to be elected to the State Duma in 2007.
The Commission on the Unification of Democratic Forces, under the chairmanship of Boris Nemtsov, was established by the Union of Rightist Forces on February 16, 2006. However, the merger plans were discarded in December 2006 since the differences seemed too large.[2]
The Russian Democratic Party Yabloko had been an observer of the Liberal International since 2002, and became a full member after the ELDR Bucharest congress in October 2006. The party's central office is located in Moscow.
In the Russian legislative election, 2007, Yabloko lost its representation in the State Duma.
In the Russian Regional elections on 4 December 2011 Yabloko won a few places in regional parliaments of Russia: 6 of 50 in Legislative Assembly of Saint Petersburg, 4 of 50 in Legislative Assembly of the Republic of Karelia and 1 of 44 in Pskov legislative body.
Year | Vote percent | Seats won |
1993 | 7.86 | 27 |
1995 | 6.89 | 45 |
1999 | 5.93 | 20 |
2003 | 4.30 | 4 |
2007 | 1.6 | 0 |
2011 | 3.43 | 0 |
Wikimedia Commons has media related to: Yabloko |
Advertizing ▼
sensagent's content
Dictionary and translator for handheld
New : sensagent is now available on your handheld
Advertising ▼
Webmaster Solution
A windows (pop-into) of information (full-content of Sensagent) triggered by double-clicking any word on your webpage. Give contextual explanation and translation from your sites !
With a SensagentBox, visitors to your site can access reliable information on over 5 million pages provided by Sensagent.com. Choose the design that fits your site.
Business solution
Improve your site content
Add new content to your site from Sensagent by XML.
Crawl products or adds
Get XML access to reach the best products.
Index images and define metadata
Get XML access to fix the meaning of your metadata.
Please, email us to describe your idea.
Lettris is a curious tetris-clone game where all the bricks have the same square shape but different content. Each square carries a letter. To make squares disappear and save space for other squares you have to assemble English words (left, right, up, down) from the falling squares.
Boggle gives you 3 minutes to find as many words (3 letters or more) as you can in a grid of 16 letters. You can also try the grid of 16 letters. Letters must be adjacent and longer words score better. See if you can get into the grid Hall of Fame !
English dictionary
Main references
Most English definitions are provided by WordNet .
English thesaurus is mainly derived from The Integral Dictionary (TID).
English Encyclopedia is licensed by Wikipedia (GNU).
The wordgames anagrams, crossword, Lettris and Boggle are provided by Memodata.
The web service Alexandria is granted from Memodata for the Ebay search.
The SensagentBox are offered by sensAgent.
Change the target language to find translations.
Tips: browse the semantic fields (see From ideas to words) in two languages to learn more.
last searches on the dictionary :
computed in 0.094s


text:
Man leads federal, state police on high-speed chase along BW Parkway
A man leaving the Maryland Live Casino was arrested Wednesday after leading state and federal police on a high-speed chase in his SUV along the Baltimore-Washington Parkway.
Bank robbery suspects in custody, I-270 open
One of Washington, D.C.'s busiest roadways played host Tuesday morning to a tense game of hide and seek.
Armed robbery pursuit ends in police shooting
Prince George's County Police say a pursuit after a liquor store robbery in Forestville ended in a crash and officer-involved shooting in northeast Washington.
Chase puts restrictions on debit card users due to Target breach
Chase is putting some temporary restrictions on debit cards affected by Target's security breach.
Man arrested after hitting cop, stealing police car on I-66
CommentA man spotted walking on I-66 on Thursday morning was arrested, but not before stealing an Arlington County Police car, fighting two state troopers and swinging a shovel at other responding officers.
Police make arrest in Arlington after chase
CommentOne suspect was arrested in Tysons Corner while a second was taken into custody in Arlington after a chase, authorities say.
RecommendedRecent Facebook Activity
Only On 7
ABC7 News at 4 Now Weekdays!
ABC7 is giving you MORE news in your afternoons with an extra hour, an hour earlier! Join ABC7's Leon Harris and Alison Starling for what's trending in your community and world. Every weekday afternoon at 4pm right after "The Queen Latifah Show" at 3pm on ABC7.


text:
Akiva Goldsman
Akiva Goldsman | |
Goldsman at the Paley Center for Media in Los Angeles, May 2011
Born | New York City |
July 7, 1962
Occupation | Director, producer, writer |
Years active | 1994–present |
Spouse(s) | Rebecca Spikings (?–2010; her death) |
Akiva J. Goldsman (born July 7, 1962) from Manhattan, New York is an American film and television writer, director, and producer.
He received an Academy Award for Best Adapted Screenplay for the 2001 film, A Beautiful Mind, which also won the Oscar for Best Picture.
Goldsman has been exclusively involved with Hollywood films. His filmography also includes the films Batman Forever and its sequel Batman & Robin, I Am Legend and Cinderella Man and numerous rewrites both credited and uncredited. In 2006 Goldsman re-teamed with A Beautiful Mind director Ron Howard for a high profile project, adapting Dan Brown's novel The Da Vinci Code for Howard's film version, receiving mixed reviews for his work.
Life and career[edit]
Akiva Goldsman was born in New York City to a Jewish family, on July 7, 1962, to Tev Goldsman, a therapist, and Mira Rothenberg, a child psychologist.[1] Both parents ran a group home for emotionally disturbed children. Goldsman's parents were occupied with their work, and Goldsman said, "By the time I was 10 or 12, I realized they had taken my parents away from me. I wanted nothing more to do with that world. I wanted to be a writer. I had a fantasy that someday I'd see my name on a book." In 1983, Goldsman attended Wesleyan University in Middletown, Connecticut.[2] After graduation, Goldsman studied creative writing at New York University and began writing screenplays.
In 1994, he wrote the screenplay that would become the film Silent Fall.[1] Afterward, director Joel Schumacher hired Goldsman to write The Client.[2] In the late 1990s, Akiva Goldsman wrote screenplays for A Time to Kill and Batman & Robin, which were considered subpar quality and got him nominated for the Golden Raspberry Awards. Goldsman came to the realization, "I sort of got lost. I was writing away from what I knew. It's a little like a cat chasing its tail. Once you start making movies that are less than satisfying, you start to lose your opportunity to make the satisfying ones. People are not serving them up to you, saying, 'You're the guy we want for this.'" Goldsman appealed to producer Brian Grazer to write the screenplay for A Beautiful Mind and ultimately won an Academy Award for Writing Adapted Screenplay. The star of A Beautiful Mind, Russell Crowe, later invited Goldsman and director Ron Howard to film Cinderella Man, and Goldsman wrote the film's screenplay.[3]
Goldsman has a production company at Warner Bros. called Weed Road Pictures. On April 6, 2010, it was announced that he will produce a PG-13 remake of the Troma cult film The Toxic Avenger.[4] On September 8, 2010, it was announced that he would write the first season of the television series based on the novels of Stephen King's The Dark Tower series. The project is currently in "development hell".[5]
Goldsman produced the Universal Pictures feature Lone Survivor, from writer/director Peter Berg, based on the book, Lone Survivor: The Eyewitness Account of Operation Redwing and the Lost Heroes of SEAL Team 10, by Marcus Luttrell. It tells the story of Luttrell's Navy SEAL team in 2005 Afghanistan, on a mission to kill a terrorist leader. The movie starred Mark Wahlberg, Ben Foster and Taylor Kitsch, and was released in 2013.[6]
Goldsman made his feature film directing debut with Winter's Tale, a film adaption of the Mark Helprin novel. Goldsman worked for seven years on developing the project with Warner Bros. Pictures, finally getting a green light on the script (which he wrote). The principal cast consisted of Colin Farrell, Russell Crowe, Jessica Brown Findlay, Jennifer Connelly, Will Smith and William Hurt.[7] The film was released on February 14, 2014. 2015 direct the Horror thriller film Stephanie,[8] with Frank Grillo in the leading role.[9]
In 2008, Goldsman joined the first season crew of the FOX horror/mystery series Fringe, as writer, director, and consulting producer. The first episode Goldsman directed and wrote was "Bad Dreams".[10][11] In its fifth season, Goldsman remained a consulting producer. Episodes he contributed to included:
- "Bad Dreams" (01.17)
- "The Road Not Taken" (01.19) (executive producer Jeff Pinkner and supervising producer J.R. Orci co-wrote a teleplay based on a story by Goldsman)
- "There's More Than One of Everything" (01.20) (co-executive producer J.H. Wyman and Pinkner co-wrote a teleplay based on a story by Goldsman and executive producer Bryan Burk)
- "A New Day in the Old Town" (02.01) (co-written by co-creator J.J. Abrams)
- "Peter" (02.16) (co-showrunners Jeff Pinkner, J.H. Wyman, and supervising producer Josh Singer co-wrote a teleplay based on a story by Pinkner, Goldsman, Singer, and Wyman)
- "Brown Betty" (02.20) (co-written by Wyman and Pinkner)
- "Over There (Part 1)" (02.22) (co-written with Pinkner and Wyman)
- "Over There (Part 2)" (02.23) (co-written by Pinkner and Wyman)
- "Subject 13" (03.15) (co-written with Wyman and Pinkner)
- "Stowaway" (03.17) (Danielle Dispaltro wrote a teleplay based on a story Pinkner, Goldsman, and Wyman)
- "Lysergic Acid Diethylamide" (03.19) (Wyman and Pinkner co-wrote a teleplay based on a story by Wyman, Goldsman, and Pinkner)
- "The Day We Died" (03.22) (Pinkner and Wyman co-wrote a teleplay based on a story Goldsman, Pinkner, and Wyman)
- "Neither Here Nor There" (04.01) (Wyman and Pinkner co-wrote a teleplay based on a story Wyman, Goldsman, and Pinkner)
- "Subject 9" (04.04) (co-written by Wyman and Pinkner)
- "Making Angels" (04.11) (co-written with Wyman and Pinkner)
- "Nothing as It Seems" (04.16) (co-written with Pinkner)
- "Letters of Transit" (04.19) (co-written by Wyman and Pinkner)
- "Brave New World (Part 1)" (04.21) (co-written by Wyman and Pinkner)
- "Brave New World (Part 2)" (04.22) (co-written with Wyman and Pinkner)
Personal life[edit]
Goldsman's second wife, film producer Rebecca Spikings-Goldsman, died of a heart attack on July 6, 2010, at the age of 42.[12] Rebecca was the daughter of producer Barry Spikings.
Year | Film | Credit | Notes |
1994 | The Client | writer | |
Silent Fall | writer | ||
1995 | Batman Forever | writer | co-wrote with Lee Batchler and Janet Scott Batchler |
1996 | A Time to Kill | writer | |
1997 | Batman & Robin | writer | |
1998 | Lost in Space | producer, writer | |
Practical Magic | writer | ||
1999 | Deep Blue Sea | producer | |
2001 | A Beautiful Mind | writer | Won Academy Award for Writing Adapted Screenplay |
2004 | Starsky & Hutch | producer | |
Mindhunters | producer | ||
I, Robot | writer | co-wrote with Jeff Vintar | |
2005 | Constantine | producer | |
Cinderella Man | writer | co-wrote with Cliff Hollingsworth | |
Mr. & Mrs. Smith | producer | ||
2006 | I'm Reed Fish | executive producer | |
Poseidon | producer | ||
The Da Vinci Code | writer | ||
2007 | The Cure | executive producer | TV pilot |
I Am Legend | producer, writer | ||
2008 | Hancock | producer | |
2009 | Angels & Demons | writer | co-wrote with David Koepp |
Kings | director | TV series, "The Sabbath Queen" (Season 1, Episode 8) | |
2009–2013 | Fringe | consulting producer, writer, director | TV series |
2010 | The Losers | producer | |
Fair Game | producer | ||
Jonah Hex | producer | ||
Paranormal Activity 2 | executive producer | ||
2011 | Paranormal Activity 3 | executive producer | |
2012 | Paranormal Activity 4 | executive producer | |
2013 | Lone Survivor | producer | |
2014 | Winter's Tale | writer, director, producer | |
2015 | The Divergent Series: Insurgent | writer | |
TBA | Titans | writer of the pilot[13] | Live action TV series adaptation of the fictional DC comic super hero team |
TBA | The Janson Directive | writer |
- ^ a b "Goldsman, Akiva". Current Biography 65 (9): 36–40. September 2004.
- ^ a b Levine, Bettijane (March 31, 2002). "A book signing, a big moment". The Record.
- ^ Covert, Colin (June 5, 2005). "Cinderella scribe". Star Tribune.
- ^ "The Toxic Avenger Mops Up in Redo Deal". Deadline.
- ^ Rice, Lynette (September 8, 2010). "Universal to produce three films and TV series based on Stephen King's 'The Dark Tower'". Entertainment Weekly. Archived from the original on September 10, 2010. Retrieved September 9, 2010.
- ^ Kroll, Justin (August 13, 2012). "Eric Bana circling 'Lone Survivor': Thesp in talks to join case of Peter Berg-helmed SEAL drama". Chicago Tribune. Retrieved August 14, 2012.
- ^ Fleming, Mike (August 1, 2012). "William Hurt Joins Akiva Goldsman's 'Winter's Tale'". Deadline Hollywood. Retrieved August 8, 2012.
- ^ Fleming, Mike (January 27, 2015). "Frank Grillo to Star in Akiva Goldsman's Horror-Thriller 'Stephanie'". The Wrap. Retrieved January 27, 2015.
- ^ Fleming, Mike (January 27, 2015). "Frank Grillo to Court Stephanie". Dread Central. Retrieved January 27, 2015.
- ^ "IMDB Filmography of Akiva Goldsman".
- ^ "Fringe: The Definitive and Exhaustive Chat with John Noble". The Los Angeles Times. September 2009.
- ^ "Producer Spikings-Goldsman dies of heart attack". Variety Magazine. July 7, 2010. Archived from the original on July 15, 2010. Retrieved August 1, 2010.
- ^ http://blogs.wsj.com/speakeasy/2014/09/11/titans-tv-series-based-on-dc-comic-may-come-to-tnt/
Further reading[edit]
- Thane, Christopher (November 1999). "Swimming with sharks". Fade In (Fade in Publishing Group Inc) 5 (3): 17.
- Divine, Christian (January 2002). "Peace of mind". Creative Screenwriting (Inside Information Group, Ltd) 9 (1): 69, 71–74.
- Fleming, Michael (June 2006). "Good as Goldsman". Fade In (Fade in Publishing Group Inc) 9 (2): [50]–52.
External links[edit]
- 1962 births
- American Jews
- American film producers
- American screenwriters
- Best Adapted Screenplay Academy Award winners
- Jewish American writers
- Living people
- New York University alumni
- People from Manhattan
- Wesleyan University alumni
- Writers Guild of America Award winners
- Best Screenplay Golden Globe winners
- Writers from New York City
- American television writers
- American television directors


text: until the embers fade..."She... did love me. Really, she did. I never doubted that for a moment. But I... I couldn't take it any more. Everything she did to me, she did out of love, and it hurt. So much."What she did? Oh god, don't get me started. She... she fed me stuff that made me just want to die, she cut out my tongue and put it back a year later, she... she made me sick, she made me see things that weren't there, made me do things I can't remember, made my life hell. All in the name of love. Yeah, that hurt, but I wasn't talking about that."I don't know when I did it. I just blacked out sometime after I got out of there, I don't know how long it was before I woke up. I don't know how long I was in there either, but I've heard some talk around town. Said the place had been abandoned for... for as long as anyone could remember. Eighty, ninety years. Maybe even a hundred. She said it had been three hundred. A-and here I am, don't look or feel a day over twenty six. God, she might have been right a


text:
Current Time
17 Relox
San Miguel de Allende
Tel: 52 415 152 0097
view web site ›
San Miguel de Allende
Tel: 52 415 152 0097
Concierge.com's insider take:
When you're visiting Mexico, there comes a time when you must devour nachos and enchiladas and sip giant margaritas as mariachis sing "Guadalajara," all without feeling totally touristy. You can do all that, plus dance to a salsa band or sing a Mexican ballad with your fellow diners, in the tchotchke-filled courtyard at this noisy, fun spot near the Jardín Principal. The molcajetes—stone mortar–type dishes filled with sizzling meats, grilled onions, and cheese—are juicy and flavorful.—Maribeth Mellin
User Reviews
write a review ›BEEN HERE? TELL US WHAT YOU THINK
Be the first to write a review of Los Milagros and share your tips with the Concierge.com community.


text:
Wadena County cuts back Kitchigami Library appropriation by $10,000
At its Dec. 13 meeting, the Wadena County Board of Commissioners voted unanimously to cut $10,000 from the customary $90,000 annual appropriation for support of the Kitchigami Regional Library.
When questioned about the vote, Board Chair Rodney Bounds said, "We have to live within our means."
Commissioner Ralph Miller explained his vote by saying, "People can buy their own books if they want to read."
Are you a newspaper subscriber but you don't have a Digital Access account yet? https://secure.forumcomm.com/?publisher_ID=40&event=subscriber/lookup.
You will need your subscription account number and phone number. Not sure if you have an account? Email us at email@example.com and we can help you.


text: This bra conversion kit gives you the option to convert your certain Bravado nursing bra(s) to a "regular bra" once you have completed your nursing journey and want to extend the life of your Bravado nursing apparel. The bra conversion is available for use on 3 of our Bravado nursing bra styles: 1. The Original Nursing Bra � Basic, Plus & Double Plus 2. The Bliss Nursing Bra 3. The Body Silk Seamless Nursing Bra A bra conversion kit comes already attached to newer versions of the above bra styles at the time of your purchase. NOTE: if you have the older style Original Nursing Bra with snaps instead of bra clips, the bra conversion kit will not work. Available in 3 COLORS: 1. Black 2. White 3. Butterscotch Manufactured by Bravado Designs $5.00 | After many times of washing and wearing, the bra cups in your Body Silk Seamless Nursing Bra may not look as nice as when you first purchased your bra. To help extend the life of your bra without having to invest in a whole new bra, we now offer additional removable bra cups to replace the ones that came with your bra. Order them at the time of purchase so that you always an extra set or at anytime! The size cup that you need is the same as the size of the bra that you are wearing - size S/M fits small and medium sized bras and L/XL fits large and x-large sized bras. Manufactured by Bravado Designs. $3.00 |


text:
Surf, Sun, and Food in the Bahamas
Surf and sun make everyone hungry. Whether you prefer a quick bite at a beachside bar or a five-course meal at a haute restaurant, Condé Nast Traveler's September-issue Bahamas guide has something to fill your belly--and plenty of conch for to go around. Here's a peek at a few of our favorite spots for noshing:
Snorkels and swim trunks are perfectly acceptable at Chat 'n' Chill, a beach party/restaurant on Exuma's Stocking Island. People float in by motorboat, kayak, and sailboat to
settle into pastel-colored lounge chairs scattered across the sand. The grill
turns out nicely charred chicken sandwiches and conch burgers, and on Sunday
there's a rowdy pig roast complete with live music and dancing (no phone;
sandwiches, $4-$7).
Early birds get the pastries at Arthur's
Bakery, a modest family-owned café on Harbour Island. If you miss breakfast
(the famed sticky buns sell out by 8:30 a.m.), you can console yourself with
the island's best coffee, hearty sandwiches on fresh-baked bread, and puckery
Key lime pie (Dunmore St.; 242-333-2285). In Gregory Town on Eleuthera, a tiny
hand-lettered sign points the way up a steep street to the bright-green Thompson
Bakery. Pineapple tarts are the specialty here: tender pastries filled with
delicately spiced fruit (Sugar Hill St.; 242-335-5053).
White gloves are only the
beginning at Graycliff, a mansion turned hotel in downtown Nassau.
Old-school dishes prevail (lobster Thermidor, anyone?), and a nightcap in the
parlor is de rigueur--or a glass from the 250,000-bottle wine cellar
(242-322-2796; entrées, $38-$68).
For more restaurants in the Bahamas, check out the September issue of Condé Nast Traveler or read "Must Love Conch" on cntraveler.com.
Further reading:
* Video: Watch senior editor Kate Maxwell dive into some lobster quesadillas at Sip Sip Eleuthera's Harbour Island
* Video: Exuma, a sailor's paradise
* Video: Cat Island is all about unplugging


text:
This is a discussion on Another OC acknowledged as a deterrent. within the Open Carry Issues & Discussions forums, part of the Defensive Carry Discussions category; Originally Posted by bmcgilvray "Officer 1: That's going to stay in its holster, right? Me: It typically does unless I tell it otherwise." Alternative reply: ...
Magazine <> clip - know the difference
martyr is a fancy name for crappy fighter
You have never lived until you have almost died. For those that have fought for it, life has a special flavor the protected will never know
Personally, I have no problem with this guys reply to the officer. It was a ridiculous question to ask in the first place; just as ridiculous as if any one of us would say such a thing to a LEO who we approached, or approached us. The foolish statement illustrates the attitude that some LEOs have towards civilians being armed, that simply because youre not in uniform, a member of the brotherhood, that because of that, you are in some way not qualified, or to be trusted with a firearm and the same level of defense as they are.
That being said, IMHO, I feel that simple common sense answers the question as to whether OC has a deterrent effect. I dont feel you can say in ALL cases, but I feel it is safe to say in MOST cases, the presence of an individual who is OCing at a location that is at the same time, being visited by a person or persons who intend to commit a crime, that those who intend on committing the crime will either delay their activity or forgo it all together and seek a venue that offers less risk to themselves. I think that is just common sense reasoning.
In the example presented here, it really doesnt matter what the group of thugs thought the open carrier was i.e. plain clothes LEO, or civilian with a gun, the fact is that the group noticed that an individual with a sidearm was present and aware of his surroundings, and that seems to have had the direct result of them quickly leaving the area. Had the open-carrier been carrying concealed, the apparent planned robbery would most likely have taken place.
I've read that one before. And I have gotten the "don't touch yours and I won't touch mine" response from LE. That was while CC'ing too. I had a LEO behind me as I bought some JHP ammo back when the price was sky high. His response to the price, "I hope you get a refund if you ever have to shoot anyone with that. Maybe give them a receipt. Ball ammo's killed everybody we needed to kill." Sometimes a witty response calms the situation down a bit.
I prefer to live dangerously free than safely caged!
"Our houses are protected by the good Lord and a gun. And you might meet 'em both if you show up here not welcome son." Josh Thompson "Way Out Here"
It may or may not have stopped a bad situation but everyone went home (good guys) at the end of the day. It's up to everyone on how they choose to carry and if you are comfortable with OC or CC go with it. I see there are some who are worried about giving up the element of surprise to the BG and they have a right too. I feel CC is best for me but, if you are aware of your surroundings (as we all should be, crappy world these days) then I see that there is really no tatical disadvantage to OC'ing. Just my thoughts though.
EXACTLY. Far more incidents of someone OC'ing obviously changing the mind of a criminal on their next move than of an OC'er being attacked for their gun can be shown. Again, we see someone stating what they perceive to be a possible outcome as something that most likely would happen any other time.
,=====o00o _
l_--- \___l---[]lllllll[]
(o)_)-o- (o)_)--o-)_)
Its sad that any of us feel a need to justify a legal activity. Its almost as if a person cannot show that his activity, however legal, is a benefit to society it is permissible to ban it.
Its no longer good enough to show that your activity harms no one else. Now you must also show that it has a legitimate value not only to you but to society.
Open carry bashers will never agree that it was the open carrier that prevented this nor will the open carriers fail to use this example of "See open carry does stop crimes". After reviewing threads Ad naseum about this subject, I have come to the conclusion that there are just people on both sides who are gong to point fingers and bash the others because they dont conform to THEIR way of thinking. Trying to justify one over the other sure does waste a lot of bandwidth without changing anyone's mind. Never mind open carry is legal in some places. There are just going to be some folks, for whatever reason, that look down their noses on people they dont feel are as smart as they are. That is what the argument is about really. I am smarter than you kind of argument. All the antis have to do is just sit back and let us pound ourselves. I will most likely continue to follow these types of threads just in case someone comes up with a magic solution. (Like carry like you want to as long as the law allows and I wont worry about it and will do what I think is best for me and my family, kinda solution)
The 1911 is an antiquated weapons system but then again, so am I.
Retired SF(SP) CMSgt 1979-2005
Lucky that this guy was perceptive enough to assess the situation. I feel like a persons instincts will kick in when something like this starts happening. Go with your gut. Glad everything turned out well for this guy.
In regards to the open carrying... I have always been under the impression that criminals, like most predatory animals, seek the weaker individuals of the herd. When they see confrontation, they will avoid the scene or pick a different target. There are so many variables, it is impossible to be sure what a criminal is going to do in any given situation. Whether it is more "tactical" to attempt to whip out a concealed gun and start firing, or more tactical to prevent a situation from happening by appearing as the "stronger" target, I couldn't tell anyone. They both seem to make sense, to me.
I personally do not have a problem if you want to open carry, or concealed carry, I am not opinionated on this issue, as I somtimes OC , usually it is when I am at the farm or around the house kicking cans as my dad calls it, but i prefer cc when i leave the house, course out here, it is a little different than the big cities, but one thing for sure, i will be carrying one way or the other....there is no option there.
Only two defining forces have ever offered to die for you, Jesus Christ and the American GI. One died for your soul, the other for your freedom.
I asked my stock broker the other day, what I should be investing in ....his reply, canned goods n ammo !!!
The problem, and the only REAL problem, I have with OC, that it seems that people either don't think about, or, refuse to consider, is that a gun carried in the open becomes a factor, whether you want it to or not.
In other words, it's just as easy to attract rude, unwanted and even provocative comments during an encounter with an idiot and escalate the situation in even a minor encounter where there may be an exchange of words with someone. They see the gun on your hip, and begin to feed off of that.
Take something like a minor traffic incident, where you accidently bump someone in a parking lot. The person you hit is angry because it may be your fault. You exchange words, but now he sees you have a gun on your hip. Now, it becomes a factor. I should not have to elaborate on this any further, as if anyone here has had a run in with certain types of people, it should be self explanatory how this could snowball.
I'm sure there will be no acknowledgement of the potential for this to happen by those who are so quick to jump on the platform to defend OC against any and all logic.
But in reality, this type of incident, in which OC may actually add fuel to the fire is just as likely to happen as the belief that it deters crime.
Once that weapon is viewed it becomes a factor, whether you want it to or not.
Ignorance is a long way from stupid, but left unchecked, can get there real fast.
Cant argue with this a bit. No matter how a weapon is carried there are going to be issues that MUST be taken into account. Common sense would tell one that someone open carrying must take weapons retention into account. Not that you dont while concealed carry but it becomes more important (in my mind) if you open carry. People are going to react in different ways once a weapon is observed. That is human nature. Because they choose to react negatively (their problem or issue in my opinion), we as weapons carriers have to take their reactions into account. Your concealed carry could be observed or you may be open carrying. Either way you have to be ready to deal with people's reaction. Dont let the fact that you CC lull you into a state where you are not prepared to be "outed" in a negative fashion. As humans, we have to deal with all types of personalities and "types" of people. We need to be prepared to diffuse a situation quicker than we might normally would if we are carrying just in case we encounter the types of folks if we can. If not, we have to have a plan to deal with them.
The 1911 is an antiquated weapons system but then again, so am I.
Retired SF(SP) CMSgt 1979-2005
Sure this could happen. Could it snowball without the introduction of a firearm just as easily? Yep. The aggressor might try to strangle you, or beat you with their car jack, just the same. Now, I'm not entirely disagreeing with you. People need to not be antagonists. They should not escalate a situation regardless if they are carrying a firearm in a concealed fashion, openly, or not carrying one at all. The famous quote of "an armed society is a polite society" can hold true for what you are saying. We should all carry ourselves politely, confidently, and with due diligence. We can all end up in bad situations, regardless of how and if we are carrying, though.
The only reason I brought this particular scenario up, is because, I heard about it from a fellow officer who responded to a disorder in a parking lot at a local grocery. The person who was hit also claimed the OC guy threatened him with the weapon he was carrying. Muddied the waters quite a bit. Witnesses stated they heard the man screaming, "What are you going to do, shoot me!?".
While noone saw the man actually pull his gun out of the holster, they did say he put his hand on it.
Unintended consequences arose here that would not have been, if the gun was not introduced into the mix.
It's harder for a legally armed man, wearing a gun in the open, to run away from a situation, than to stand there and take an ass whipping. And, when he gets scared, ( and he will, because that's why he is carrying in the first place for all the bad guys to see), he will use it. And when he does, it opens up a whole world of nightmares.
It's easier to run from trouble if noone sees a sidearm on your hip.
Ignorance is a long way from stupid, but left unchecked, can get there real fast.
Absolutely. Walk softly, carry a big stick. I do OC on the farm but it attracts un-needed attention elsewhere. If I am asking someone to leave my property because it is posted, I also conceal and politely ask them to leave. It seems to me that I read an article in the news a few weeks ago about someone OC'ing who lost their side arm to a thug. No injuries, just a robbery. Retention becomes an issue and you don't want your "purse" snatched.....
There's something happening here
What it is ain't exactly clear
There's a man with a gun over there
Telling me I got to beware


text:
By Quintin Smith on April 14th, 2011 at 8:28 pm.
GUNS! Kicks to the face! A knife fight! Jetpacks! Robots! …Robots having a knife fight! Some elderly dude doing a voice-over about how "The hunter does not question his purpose"! VTOL aircraft! Robots! Energy cannons! A guy hanging by his fingertips! Esplosions! Ground vehicles being delivered from orbit! A gun larger than my flat! It's all after the jump. When's this coming out again? May 4th? OK.
If you missed it, we posted Total Biscuit's opinions on the Section 8: Prejudice beta, and his less bombastic and more rational take on things can be found here.


text:
Kentucky Derby: Trainer Pletcher seeking Oaks-Derby double
CommentA win in the Kentucky Oaks on Friday has Todd Pletcher halfway toward a milestone last achieved 51 years ago.
Horse drug bute may have entered human food chain
CommentThe British government says eight horse carcasses have tested positive for the equine drug bute, and three of them may have entered the human food chain in France.
Laurel Park horse escapes
CommentRacetrack officials say a horse escaped from Laurel Park and galloped 1.6 miles on a road with traffic before being caught.
Metro Meteor makes unexpected career move to painting
CommentMetro, a 9-year-old thoroughbred with $300,000 in race earnings, is making an unexpected career move.
Pimlico Race Course, Laurel Park race track agreement reached
CommentGov. Martin O'Malley announced Friday that a 10-year agreement for racing at Pimlico Race Course and Laurel Park has been reached.
Northern Virginia Therapeutic Riding program helps kids develop motor skills
CommentThis is no ordinary therapeutic riding program. Special needs kids who can't speak are learning how to use their voices at this Northern Virginia Therapeutic Riding program.
I'll Have Another scratched from Belmont
CommentAccording to Dennis O'Neill, brother of trainer Doug O'Neill, the horse galloped Friday morning and after a veterinary scan, the tendon seemed "kind of tender."
Fairfax County horse stabbing: A month later, horses continue to heal
CommentNearly a month after a brutal and bizarre attack on a group of horses at an equestrian center in Fairfax County, detectives are still trying to figure out who would slash animals that are used for therapy for autistic children.
Drivers injured at Rosecroft Raceway
CommentThree drivers were hospitalized Tuesday night following a crash at Rosecroft Raceway in Oxon Hill.
Harris' Heroes: Simple Changes helps disabled children
CommentAt a ranch in Virginia, children with disabilities are learning to work with horses as they grow and improve themselves.
Days End Farm Horse Rescue caring for 150 neglected horses, seeks financial help
CommentA Maryland-based horse rescue is coming to the aid of over 150 malnourished and neglected horses. It has already placed some horses on caring farms, but will need financial help to keep up its work.
RecommendedRecent Facebook Activity
Only On 7
ABC7 News at 4 Now Weekdays!
ABC7 is giving you MORE news in your afternoons with an extra hour, an hour earlier! Join ABC7's Leon Harris and Alison Starling for what's trending in your community and world. Every weekday afternoon at 4pm right after "The Queen Latifah Show" at 3pm on ABC7.


text:
Introducing leggings. You'll never run out of inspiration.
Golden Gate Bridge fogged In
thick layer of fog..
Marin side.
Featured in Art and Words Group
as of july 14th 317 views
as of aug 8th
533 views
Nikon N90S
Nikon 50 to 200 lens
film Ektar 100
Oh wow – spectacular.
and it was thick.. thank you for you comment..
– Nancy Stafford
awesome image brilliant
thank you Brian for your comments
– Nancy Stafford
Post-card perfect shot!
thank you ER..
– Nancy Stafford
incredible piece!
thank you for featuring this image..
I just put it in this morning..
– Nancy Stafford
wow awesome shot Nancy, well done on your feature!! xoxox
thank you patricia,
I took the image on a really foggy day.. just above the bridge.
holy cow it was foggy twice as thick as i seen it..
it was like the bridge disappeared into the fog..
– Nancy Stafford
Fantastic SF image!! The fog and the landmarks really add the interest! Fantastic capture!!
thank you Barbara, for youcomment
– Nancy Stafford
thank you Lori for your comment
– Nancy Stafford
Excellent capture, Nancy
Thank You Big D…
the fog was so thick that morning a person could cut it with a knife..
and still not see the ocean..
– Nancy Stafford
great shot
thank you
– Nancy Stafford
Congratulations on winning the bridges in fog competition, well deserved, sensational capture.
wow i won it? wahooooooooooooooo
thank you for letting me know.. ..and thank you for your comment
– Nancy Stafford