text:
bithacks.h - bit hacks header file
A part of being a great programmer is having your personal code library. With a personal code library I mean a repository of code that you have an intimate knowledge of and that you can reuse quickly. If you are a C programmer, you don't want to reimplement linked lists, trees, various utility functions, macros and algorithms each time you write a new program. Rather you want to take them from your repository, adjust and incorporate in your code.
A good example is the implementation of linked lists in the Linux kernel. Every kernel developer knows it and uses it if necessary. They wouldn't reimplement it. Another example is all the code written by djb. It's so good that people have taken it and turned into libdjb code library.
With this article I'd like to open a new topic in this blog where I share code from my personal code library. I'll start with a C header file that I created just recently based on my Bit Hacks You Should Know About article.
This header file is called "bithacks.h" and it contains various macros for bit manipulations. I also wrote tests for all the macros in the "bithacks-test.c" program.
The most beautiful part of "bithacks.h" is the "B8" macro that allows to write something like " x = B8(10101010) " and turns it into " x = 170 " (because 10101010 in binary is 170 in decimal). I have not yet added B16 and B32 macros but I will add them when I publish the article on advanced bithacks. The credit for the B8 idea goes to Tom Torfs who was the first to write it.
The "bithacks.h" header provides the following macros:
- B8(x) - turns x written in binary into decimal,
- B_EVEN(x) - tests if x is even (bithack #1),
- B_ODD(x) - tests if x is odd (inverse of (bithack #1)),
- B_IS_SET(x, n) - tests if n-th bit is set in x (bithack #2),
- B_SET(x, n) - sets n-th bit in x (bithack #3),
- B_UNSET(x, n) - unsets n-th bit in x (bithack #4),
- B_TOGGLE(x, n) - toggles n-th bit in x (bithack #5),
- B_TURNOFF_1(x) - turns off the right-most 1-bit in x (bithack #6),
- B_ISOLATE_1(x) - isolates the right-most 1-bit in x (bithack #7),
- B_PROPAGATE_1(x) - propagates the right-most 1-bit in x (bithack #8),
- B_ISOLATE_0(x) - isolates the right-most 0-bit in x (bithack #9),
- B_TURNON_0(x) - turn on the right-most 0-bit in x (bithack #10).
Please see "bithacks-test.c" for many examples of these macros.
For those who don't want to download bithacks.h, here is its content:
/* ** bithacks.h - bit hacks macros. v1.0 ** ** Released under the MIT license. */ #ifndef BITHACKS_H #define BITHACKS_H #define HEXIFY(X) 0x##X##LU #define B8IFY(Y) (((Y&0x0000000FLU)?1:0) + \ ((Y&0x000000F0LU)?2:0) + \ ((Y&0x00000F00LU)?4:0) + \ ((Y&0x0000F000LU)?8:0) + \ ((Y&0x000F0000LU)?16:0) + \ ((Y&0x00F00000LU)?32:0) + \ ((Y&0x0F000000LU)?64:0) + \ ((Y&0xF0000000LU)?128:0)) #define B8(Z) ((unsigned char)B8IFY(HEXIFY(Z))) /* test if x is even */ #define B_EVEN(x) (((x)&1)==0) /* test if x is odd */ #define B_ODD(x) (!B_EVEN((x))) /* test if n-th bit in x is set */ #define B_IS_SET(x, n) (((x) & (1<<(n)))?1:0) /* set n-th bit in x */ #define B_SET(x, n) ((x) |= (1<<(n))) /* unset n-th bit in x */ #define B_UNSET(x, n) ((x) &= ~(1<<(n))) /* toggle n-th bit in x */ #define B_TOGGLE(x, n) ((x) ^= (1<<(n))) /* turn off right-most 1-bit in x */ #define B_TURNOFF_1(x) ((x) &= ((x)-1)) /* isolate right-most 1-bit in x */ #define B_ISOLATE_1(x) ((x) &= (-(x))) /* right-propagate right-most 1-bit in x */ #define B_PROPAGATE_1(x) ((x) |= ((x)-1)) /* isolate right-most 0-bit in x */ #define B_ISOLATE_0(x) ((x) = ~(x) & ((x)+1)) /* turn on right-most 0-bit in x */ #define B_TURNON_0(x) ((x) |= ((x)+1)) /* ** more bit hacks coming as soon as I post ** an article on advanced bit hacks */ #endif
And here are all the tests:
/* ** bithacks-test.c - tests for bithacks.h ** ** Released under the MIT license. */ #include <stdio.h> #include <stdlib.h> #include "bithacks.h" int error_count; #define TEST_OK(exp, what) do { \ if ((exp)!=(what)) { \ error_count++; \ printf("Test '%s' at line %d failed.\n", #exp, __LINE__); \ } } while(0) #define TEST_END do { \ if (error_count) { \ printf("Testing failed: %d failed tests.\n", error_count); \ } else { \ printf("All tests OK.\n"); \ } } while (0) void test_B8() { /* test B8 */ TEST_OK(B8(0), 0); TEST_OK(B8(1), 1); TEST_OK(B8(11), 3); TEST_OK(B8(111), 7); TEST_OK(B8(1111), 15); TEST_OK(B8(11111), 31); TEST_OK(B8(111111), 63); TEST_OK(B8(1111111), 127); TEST_OK(B8(00000000), 0); TEST_OK(B8(11111111), 255); TEST_OK(B8(1010), 10); TEST_OK(B8(10101010), 170); TEST_OK(B8(01010101), 85); } void test_B_EVEN() { /* test B_EVEN */ TEST_OK(B_EVEN(B8(0)), 1); TEST_OK(B_EVEN(B8(00000000)), 1); TEST_OK(B_EVEN(B8(1)), 0); TEST_OK(B_EVEN(B8(11111111)), 0); TEST_OK(B_EVEN(B8(10101010)), 1); TEST_OK(B_EVEN(B8(01010101)), 0); TEST_OK(B_EVEN(44), 1); TEST_OK(B_EVEN(131), 0); } void test_B_ODD() { /* test B_ODD */ TEST_OK(B_ODD(B8(0)), 0); TEST_OK(B_ODD(B8(00000000)), 0); TEST_OK(B_ODD(B8(1)), 1); TEST_OK(B_ODD(B8(11111111)), 1); TEST_OK(B_ODD(B8(10101010)), 0); TEST_OK(B_ODD(B8(01010101)), 1); TEST_OK(B_ODD(44), 0); TEST_OK(B_ODD(131), 1); } void test_B_IS_SET() { /* test B_IS_SET */ TEST_OK(B_IS_SET(B8(0), 0), 0); TEST_OK(B_IS_SET(B8(00000000), 0), 0); TEST_OK(B_IS_SET(B8(1), 0), 1); TEST_OK(B_IS_SET(B8(11111111), 0), 1); TEST_OK(B_IS_SET(B8(11111111), 1), 1); TEST_OK(B_IS_SET(B8(11111111), 2), 1); TEST_OK(B_IS_SET(B8(11111111), 3), 1); TEST_OK(B_IS_SET(B8(11111111), 4), 1); TEST_OK(B_IS_SET(B8(11111111), 5), 1); TEST_OK(B_IS_SET(B8(11111111), 6), 1); TEST_OK(B_IS_SET(B8(11111111), 7), 1); TEST_OK(B_IS_SET(B8(11110000), 0), 0); TEST_OK(B_IS_SET(B8(11110000), 1), 0); TEST_OK(B_IS_SET(B8(11110000), 2), 0); TEST_OK(B_IS_SET(B8(11110000), 3), 0); TEST_OK(B_IS_SET(B8(11110000), 4), 1); TEST_OK(B_IS_SET(B8(11110000), 5), 1); TEST_OK(B_IS_SET(B8(11110000), 6), 1); TEST_OK(B_IS_SET(B8(11110000), 7), 1); TEST_OK(B_IS_SET(B8(00001111), 0), 1); TEST_OK(B_IS_SET(B8(00001111), 1), 1); TEST_OK(B_IS_SET(B8(00001111), 2), 1); TEST_OK(B_IS_SET(B8(00001111), 3), 1); TEST_OK(B_IS_SET(B8(00001111), 4), 0); TEST_OK(B_IS_SET(B8(00001111), 5), 0); TEST_OK(B_IS_SET(B8(00001111), 6), 0); TEST_OK(B_IS_SET(B8(00001111), 7), 0); TEST_OK(B_IS_SET(B8(10101010), 0), 0); TEST_OK(B_IS_SET(B8(10101010), 1), 1); TEST_OK(B_IS_SET(B8(10101010), 2), 0); TEST_OK(B_IS_SET(B8(10101010), 3), 1); TEST_OK(B_IS_SET(B8(10101010), 4), 0); TEST_OK(B_IS_SET(B8(10101010), 5), 1); TEST_OK(B_IS_SET(B8(10101010), 6), 0); TEST_OK(B_IS_SET(B8(10101010), 7), 1); TEST_OK(B_IS_SET(B8(01010101), 0), 1); TEST_OK(B_IS_SET(B8(01010101), 1), 0); TEST_OK(B_IS_SET(B8(01010101), 2), 1); TEST_OK(B_IS_SET(B8(01010101), 3), 0); TEST_OK(B_IS_SET(B8(01010101), 4), 1); TEST_OK(B_IS_SET(B8(01010101), 5), 0); TEST_OK(B_IS_SET(B8(01010101), 6), 1); TEST_OK(B_IS_SET(B8(01010101), 7), 0); } void test_B_SET() { /* test B_SET */ unsigned char x; x = B8(00000000); TEST_OK(B_SET(x, 0), B8(00000001)); TEST_OK(B_SET(x, 1), B8(00000011)); TEST_OK(B_SET(x, 2), B8(00000111)); TEST_OK(B_SET(x, 3), B8(00001111)); TEST_OK(B_SET(x, 4), B8(00011111)); TEST_OK(B_SET(x, 5), B8(00111111)); TEST_OK(B_SET(x, 6), B8(01111111)); TEST_OK(B_SET(x, 7), B8(11111111)); x = B8(11111111); TEST_OK(B_SET(x, 0), B8(11111111)); TEST_OK(B_SET(x, 1), B8(11111111)); TEST_OK(B_SET(x, 2), B8(11111111)); TEST_OK(B_SET(x, 3), B8(11111111)); TEST_OK(B_SET(x, 4), B8(11111111)); TEST_OK(B_SET(x, 5), B8(11111111)); TEST_OK(B_SET(x, 6), B8(11111111)); TEST_OK(B_SET(x, 7), B8(11111111)); } void test_B_UNSET() { unsigned char x; x = B8(11111111); TEST_OK(B_UNSET(x, 0), B8(11111110)); TEST_OK(B_UNSET(x, 1), B8(11111100)); TEST_OK(B_UNSET(x, 2), B8(11111000)); TEST_OK(B_UNSET(x, 3), B8(11110000)); TEST_OK(B_UNSET(x, 4), B8(11100000)); TEST_OK(B_UNSET(x, 5), B8(11000000)); TEST_OK(B_UNSET(x, 6), B8(10000000)); TEST_OK(B_UNSET(x, 7), B8(00000000)); x = B8(00000000); TEST_OK(B_UNSET(x, 0), B8(00000000)); TEST_OK(B_UNSET(x, 1), B8(00000000)); TEST_OK(B_UNSET(x, 2), B8(00000000)); TEST_OK(B_UNSET(x, 3), B8(00000000)); TEST_OK(B_UNSET(x, 4), B8(00000000)); TEST_OK(B_UNSET(x, 5), B8(00000000)); TEST_OK(B_UNSET(x, 6), B8(00000000)); TEST_OK(B_UNSET(x, 7), B8(00000000)); } void test_B_TOGGLE() { unsigned char x = B8(11111111); TEST_OK(B_TOGGLE(x, 0), B8(11111110)); TEST_OK(B_TOGGLE(x, 0), B8(11111111)); TEST_OK(B_TOGGLE(x, 1), B8(11111101)); TEST_OK(B_TOGGLE(x, 1), B8(11111111)); TEST_OK(B_TOGGLE(x, 2), B8(11111011)); TEST_OK(B_TOGGLE(x, 2), B8(11111111)); TEST_OK(B_TOGGLE(x, 3), B8(11110111)); TEST_OK(B_TOGGLE(x, 3), B8(11111111)); TEST_OK(B_TOGGLE(x, 4), B8(11101111)); TEST_OK(B_TOGGLE(x, 4), B8(11111111)); TEST_OK(B_TOGGLE(x, 5), B8(11011111)); TEST_OK(B_TOGGLE(x, 5), B8(11111111)); TEST_OK(B_TOGGLE(x, 6), B8(10111111)); TEST_OK(B_TOGGLE(x, 6), B8(11111111)); TEST_OK(B_TOGGLE(x, 7), B8(01111111)); TEST_OK(B_TOGGLE(x, 7), B8(11111111)); } void test_B_TURNOFF_1() { unsigned char x; x = B8(11111111); TEST_OK(B_TURNOFF_1(x), B8(11111110)); TEST_OK(B_TURNOFF_1(x), B8(11111100)); TEST_OK(B_TURNOFF_1(x), B8(11111000)); TEST_OK(B_TURNOFF_1(x), B8(11110000)); TEST_OK(B_TURNOFF_1(x), B8(11100000)); TEST_OK(B_TURNOFF_1(x), B8(11000000)); TEST_OK(B_TURNOFF_1(x), B8(10000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); x = B8(10101010); TEST_OK(B_TURNOFF_1(x), B8(10101000)); TEST_OK(B_TURNOFF_1(x), B8(10100000)); TEST_OK(B_TURNOFF_1(x), B8(10000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); x = B8(01010101); TEST_OK(B_TURNOFF_1(x), B8(01010100)); TEST_OK(B_TURNOFF_1(x), B8(01010000)); TEST_OK(B_TURNOFF_1(x), B8(01000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); TEST_OK(B_TURNOFF_1(x), B8(00000000)); } void test_B_ISOLATE_1() { unsigned char x; x = B8(11111111); TEST_OK(B_ISOLATE_1(x), B8(00000001)); TEST_OK(B_ISOLATE_1(x), B8(00000001)); x = B8(11111110); TEST_OK(B_ISOLATE_1(x), B8(00000010)); TEST_OK(B_ISOLATE_1(x), B8(00000010)); x = B8(11111100); TEST_OK(B_ISOLATE_1(x), B8(00000100)); TEST_OK(B_ISOLATE_1(x), B8(00000100)); x = B8(11111000); TEST_OK(B_ISOLATE_1(x), B8(00001000)); TEST_OK(B_ISOLATE_1(x), B8(00001000)); x = B8(11110000); TEST_OK(B_ISOLATE_1(x), B8(00010000)); TEST_OK(B_ISOLATE_1(x), B8(00010000)); x = B8(11100000); TEST_OK(B_ISOLATE_1(x), B8(00100000)); TEST_OK(B_ISOLATE_1(x), B8(00100000)); x = B8(11000000); TEST_OK(B_ISOLATE_1(x), B8(01000000)); TEST_OK(B_ISOLATE_1(x), B8(01000000)); x = B8(10000000); TEST_OK(B_ISOLATE_1(x), B8(10000000)); TEST_OK(B_ISOLATE_1(x), B8(10000000)); x = B8(00000000); TEST_OK(B_ISOLATE_1(x), B8(00000000)); x = B8(10000000); TEST_OK(B_ISOLATE_1(x), B8(10000000)); x = B8(10001001); TEST_OK(B_ISOLATE_1(x), B8(00000001)); x = B8(10001000); TEST_OK(B_ISOLATE_1(x), B8(00001000)); } void test_B_PROPAGATE_1() { unsigned char x; x = B8(00000000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(10000000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11000000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11100000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11110000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11111000); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11111100); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11111110); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(11111111); TEST_OK(B_PROPAGATE_1(x), B8(11111111)); x = B8(00100000); TEST_OK(B_PROPAGATE_1(x), B8(00111111)); TEST_OK(B_PROPAGATE_1(x), B8(00111111)); x = B8(10101000); TEST_OK(B_PROPAGATE_1(x), B8(10101111)); TEST_OK(B_PROPAGATE_1(x), B8(10101111)); x = B8(10101010); TEST_OK(B_PROPAGATE_1(x), B8(10101011)); TEST_OK(B_PROPAGATE_1(x), B8(10101011)); x = B8(10101010); TEST_OK(B_PROPAGATE_1(x), B8(10101011)); TEST_OK(B_PROPAGATE_1(x), B8(10101011)); } void test_B_ISOLATE_0() { unsigned char x; x = B8(00000000); TEST_OK(B_ISOLATE_0(x), B8(00000001)); TEST_OK(B_ISOLATE_0(x), B8(00000010)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(00000011); TEST_OK(B_ISOLATE_0(x), B8(00000100)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(00000111); TEST_OK(B_ISOLATE_0(x), B8(00001000)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(00001111); TEST_OK(B_ISOLATE_0(x), B8(00010000)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(00011111); TEST_OK(B_ISOLATE_0(x), B8(00100000)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(00111111); TEST_OK(B_ISOLATE_0(x), B8(01000000)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(01111111); TEST_OK(B_ISOLATE_0(x), B8(10000000)); TEST_OK(B_ISOLATE_0(x), B8(00000001)); x = B8(11111111); TEST_OK(B_ISOLATE_0(x), B8(00000000)); x = B8(01010101); TEST_OK(B_ISOLATE_0(x), B8(00000010)); x = B8(01010111); TEST_OK(B_ISOLATE_0(x), B8(00001000)); x = B8(01011111); TEST_OK(B_ISOLATE_0(x), B8(00100000)); x = B8(01111111); TEST_OK(B_ISOLATE_0(x), B8(10000000)); } void test_B_TURNON_0() { unsigned char x; x = B8(00000000); TEST_OK(B_TURNON_0(x), B8(00000001)); TEST_OK(B_TURNON_0(x), B8(00000011)); TEST_OK(B_TURNON_0(x), B8(00000111)); TEST_OK(B_TURNON_0(x), B8(00001111)); TEST_OK(B_TURNON_0(x), B8(00011111)); TEST_OK(B_TURNON_0(x), B8(00111111)); TEST_OK(B_TURNON_0(x), B8(01111111)); TEST_OK(B_TURNON_0(x), B8(11111111)); TEST_OK(B_TURNON_0(x), B8(11111111)); x = B8(10101010); TEST_OK(B_TURNON_0(x), B8(10101011)); TEST_OK(B_TURNON_0(x), B8(10101111)); TEST_OK(B_TURNON_0(x), B8(10111111)); TEST_OK(B_TURNON_0(x), B8(11111111)); x = B8(10000000); TEST_OK(B_TURNON_0(x), B8(10000001)); TEST_OK(B_TURNON_0(x), B8(10000011)); TEST_OK(B_TURNON_0(x), B8(10000111)); TEST_OK(B_TURNON_0(x), B8(10001111)); TEST_OK(B_TURNON_0(x), B8(10011111)); TEST_OK(B_TURNON_0(x), B8(10111111)); TEST_OK(B_TURNON_0(x), B8(11111111)); } int main() { test_B8(); test_B_EVEN(); test_B_ODD(); test_B_IS_SET(); test_B_SET(); test_B_UNSET(); test_B_TOGGLE(); test_B_TURNOFF_1(); test_B_ISOLATE_1(); test_B_PROPAGATE_1(); test_B_ISOLATE_0(); test_B_TURNON_0(); TEST_END; return error_count ? EXIT_FAILURE : EXIT_SUCCESS; }
Download "bithacks.h" header file:
Download: bithacks.h
Downloaded: 4927 times.
Download url: http://www.catonmat.net/download/bithacks.h
Download: bithacks-test.c
Downloaded: 4065 times.
Download url: http://www.catonmat.net/download/bithacks-test.c
The next post about this topic will be on advanced bithacks and extending bithacks.h with these new, advanced bithacks.
Have fun!
Python Library for Google Sets
As promised in my previous post on xgoogle library, I have added a module to get results from Google Sets.
Google Sets allows to automatically create groups of related items from a few example items. For example, you feed it "red, green, blue," and it will predict other colors such as "yellow, black, white, brown, etc."
One of the most fascinating applications that this library can be used for is predicting domain names. Most sysadmins have a coherent naming policy for their systems. For example, a sysadmin at a university might call his machines "psychology.university.edu", "art.university.edu", "geography.university.edu", etc. Now, if we feed these names "psychology, art, geography" to Google Sets, it would come up with more names such as "history, mathematics, biology, and others". Now we can do DNS scans to find if there really are such machines. This is a pretty powerful method for reconnaissance.
There are many other interesting applications. Black hat SEO's may use it to stuff their pages with related keywords and thus rank for more words on search engines. Linguists can use it for various natural language processing problems. Various word guessing games can be created.
But my personal goal in writing this library was to use it for my English language perfection and correction tool that I will release in one of the next posts about this project. I wrote more about this idea in the introductory post of xgoogle library. Please see that post for more info.
The new module is called "googlesets", and to use it, import "GoogleSets" and create an object of this type. Pass the list of items to create the prediction from to the constructor. Then use "get_results()" member function to get the list of predicted items. It returns a list of Unicode strings, so make sure to use a proper encoding when outputting them.
Here is an example usage of the new module. It finds items related to programming languages "python" and "perl":
from xgoogle.googlesets import GoogleSets
gs = GoogleSets(['python', 'perl'])
items = gs.get_results()
for item in items:
print item.encode('utf8')
python perl php ruby java javascript c++ c cgi tcl c#
The output matches that of Google Sets itself:
See the readme.txt file in the xgoogle archive for more examples.
Download "xgoogle" library:
Download: xgoogle library (.zip)
Downloaded: 29339 times.
Download url: http://www.catonmat.net/download/xgoogle.zip
Have fun and let me know if you find this library useful in any way in your own projects.
This is the fourth post in the article series "Vim Plugins You Should Know About". This time I am going to introduce you to a plugin called "snipmate.vim".
If you are intrigued by this topic, I suggest that you subscribe to my posts! For the introduction and first post in this article series, follow this link - Vim Plugins You Should Know About, Part I: surround.vim.
Snipmate.vim is probably the best snippets plugin for vim. A snippet is a piece of often-typed text or programming construct that you can insert into your document by using a trigger followed by a <tab>. It was written by Michael Sanders. He says he modeled this plugin after TextMate's snippets.
Here is an example usage of snipmate.vim. If you are a C programmer, then one of the most often used forms of a loop is "for (i=0; i<n; i++) { ... }". Without snippets you'd have to type this out every time. Even though it takes just another second, these seconds can add to minutes throughout the day and minutes can add to hours over longer periods of time. Why waste your time this way? With snippets you can type just "for<tab>" and snipmate will insert this whole construct in your source code automatically! If "i" or "n" weren't the variable you wanted to use, you can now use <tab> and <shift-tab> to jump to next/previous item in the loop and rename them!
Michael also created an introduction video for his plugin where he demonstrates how to use it. Check it out:
How to install snipmate.vim?
To get the latest version:
- 1. Download snipmate.zip.
- 2. Extract snipmate.zip to ~/.vim (on Unix/Linux) or ~\vimfiles (on Windows).
- 3. Run :helptags ~/.vim/doc (on Unix/Linux) or :helptags ~/vimfiles/doc (on Windows) to rebuild the tags file (so that you can read :help snipmate.)
- 4. Restart Vim.
The plugin comes with predefined snippets for more than a dozen languages (C, C++, HTML, Java, JavaScript, Objective C, Perl, PHP, Python, Ruby, Tcl, Shell, HTML, Mako templates, LaTeX, VimScript). Be sure to check out the snippet files in the "snippets" directory under your ~/.vim or ~\vimfiles directory.
If you need to define your own snippets (which you most likely will need), create a new file named "language-foo.snippets" in the "snippets" directory. For example, to define your own snippets for C language, you'd create a file called "c-foo.snippets" and place snippets in it.
To learn about snipmate snippet syntax, type ":help snipmate" and locate the syntax section in the help file.
Have Fun!
Have fun with this time saving plugin!
Famous Perl One-Liners Explained, Part II: Line Numbering
This is the second part of a seven-part article on famous Perl one-liners. In this part I will create various one-liners for line numbering. See part one for introduction of the series.
Famous Perl one-liners is my attempt to create "perl1line.txt" that is similar to "awk1line.txt" and "sed1line.txt" that have been so popular among Awk and Sed programmers.
The article on famous Perl one-liners will consist of at least seven parts:
- Part I: File spacing.
- Part II: Line numbering (this part).
- Part III: Calculations.
- Part IV: String creation. Array creation.
- Part V: Text conversion and substitution.
- Part VI: Selective printing and deleting of certain lines.
- Part VII: Handy regular expressions.
- Part VIII: Release of perl1line.txt.
- Part IX: Release of Perl One-Liners e-book.
The one-liners will make heavy use of Perl special variables. A few years ago I compiled all the Perl special variables in a single file and called it Perl special variable cheat-sheet. Even tho it's mostly copied out of perldoc perlvar, it's still handy to have in front of you. Print it!
Awesome news: I have written an e-book based on this article series. Check it out:
And here are today's one-liners:
Line Numbering
9. Number all lines in a file.
perl -pe '$_ = "$. $_"'
As I explained in the first one-liner, "-p" causes Perl to assume a loop around the program (specified by "-e") that reads each line of input into the " $_ " variable, executes the program and then prints the " $_ " variable.
In this one-liner I simply modify " $_ " and prepend the " $. " variable to it. The special variable " $. " contains the current line number of input.
The result is that each line gets its line number prepended.
10. Number only non-empty lines in a file.
perl -pe '$_ = ++$a." $_" if /./'
Here we employ the "action if condition" statement that executes "action" only if "condition" is true. In this case the condition is a regular expression "/./", which matches any character except newline (that is, it matches a non-empty line); and the action is " $_ = ++$a." $_" ", which prepends variable " $a " incremented by one to the current line. As we didn't use strict pragma, $a was created automatically.
The result is that at each non-empty line " $a " gets incremented by one and prepended to that line. And at each empty line nothing gets modified and the empty line gets printed as is.
11. Number and print only non-empty lines in a file (drop empty lines).
perl -ne 'print ++$a." $_" if /./'
This one-liner uses the "-n" program argument that places the line in " $_ " variable and then executes the program specified by "-e". Unlike "-p", it does not print the line after executing code in "-e", so we have to call "print" explicitly to get it printed.
The one-liner calls "print" only on lines that have at least one character in them. And exactly like in the previous one-liner, it increments the line number in variable " $a " by one for each non-empty line.
The empty lines simply get ignored and never get printed.
12. Number all lines but print line numbers only non-empty lines.
perl -pe '$_ = "$. $_" if /./'
This one-liner is similar to one-liner #10. Here I modify the " $_ " variable that holds the entire line only if the line has at least one character. All other lines (empty ones) get printed without line numbers.
13. Number only lines that match a pattern, print others unmodified.
perl -pe '$_ = ++$a." $_" if /regex/'
Here we again use the "action if condition" statement but the condition in this case is a pattern (regular expression) "/regex/". The action is the same as in one-liner #10. I don't want to repeat, see #10 for explanation.
14. Number and print only lines that match a pattern.
perl -ne 'print ++$a." $_" if /regex/'
This one-liner is almost exactly like #11. The only difference is that it prints numbered lines that match only "/regex/".
15. Number all lines, but print line numbers only for lines that match a pattern.
perl -pe '$_ = "$. $_" if /regex/'
This one-liner is similar to the previous one-liner and to one-liner #12. Here the line gets its line number prepended if it matches a /regex/, otherwise it just gets printed without a line number.
16. Number all lines in a file using a custom format (emulate cat -n).
perl -ne 'printf "%-5d %s", $., $_'
This one-liner uses the formatted print "printf" function to print the line number together with line. In this particular example the line numbers are left aligned on 5 char boundary.
Some other nice format strings are "%5d" that right-aligns line numbers on 5 char boundary and "%05d" that zero-fills and right-justifies the line numbers.
Here my Perl printf cheat sheet might come handy that lists all the possible format specifiers.
17. Print the total number of lines in a file (emulate wc -l).
perl -lne 'END { print $. }'
This one-liner uses the "END" block that Perl probably took as a feature from Awk language. The END block gets executed after the program has executed. In this case the program is the hidden loop over the input that was created by the "-n" argument. After it has looped over the input, the special variable " $. " contains the number of lines there was in the input. The END block prints this variable. The " -l " parameter sets the output record separator for "print" to a newline (so that we didn't have to print "$.\n").
Another way to do the same is:
perl -le 'print $n=()=<>'
This is a tricky one, but easy to understand if you know about Perl contexts. In this one-liner the " ()=<> " part causes the <> operator (the diamond operator) to evaluate in list context, that causes the diamond operator to read the whole file in a list. Next, " $n " gets evaluated in scalar context. Evaluating a list in a scalar context returns the number of elements in the list. Thus the " $n=()=<> " construction is equal to the number of lines in the input, that is number of lines in the file. The print statement prints this number out. The " -l " argument makes sure a newline gets added after printing out this number.
This is the same as writing the following, except longer:
perl -le 'print scalar(()=<>)'
And completely obvious version:
perl -le 'print scalar(@foo=<>)'
Yet another way to do it:
perl -ne '}{print $.'
This one-liner uses the eskimo operator "}{" in conjunction with "-n" command line argument. As I explained in one-liner #11, the "-n" argument forces Perl to assume a " while(<>) { } " loop around the program. The eskimo operator forces Perl to escape the loop, and the program turns out to be:
while (<>) { }{ # eskimo operator here print $.; }
It's easy to see that this program just loops over all the input and after it's done doing so, it prints the " $. ", which is the number of lines in the input.
18. Print the number of non-empty lines in a file.
perl -le 'print scalar(grep{/./}<>)'
This one-liner uses the "grep" function that is similar to the grep Unix command. Given a list of values, " grep {condition} " returns only those values that match condition. In this case the condition is a regular expression that matches at least one character, so the input gets filtered and the "grep{/./}" returns all lines that were non empty. To get the number of characters we evaluate the list in scalar context and print the result. (As I mentioned in the previous one-liner list in scalar context evaluates to number of elements in the list).
A golfer's version of this one-liner would be to replace "scalar()" with " ~~ " (double bitwise negate), thus it can be shortened:
perl -le 'print ~~grep{/./}<>'
This can be made even shorter:
perl -le 'print~~grep/./,<>'
19. Print the number of empty lines in a file.
perl -lne '$a++ if /^$/; END {print $a+0}'
Here I use variable
$a to count how many empty lines have I encountered. Once I have finished looping over all the lines, I print the value of $a in the END block. I use " $a+0 " construction to make sure " 0 " gets output if no lines were empty.
I could have also modified the previous one-liner:
perl -le 'print scalar(grep{/^$/}<>)'
Or written it with " ~~ ":
perl -le 'print ~~grep{/^$/}<>'
These last two versions are not as effective, as they would read the whole file in memory. Where as the first one would do it line by line.
20. Print the number of lines in a file that match a pattern (emulate grep -c).
perl -lne '$a++ if /regex/; END {print $a+0}'
This one-liner is basically the same as the previous one, except it increments the line counter $a by one in case a line matches a regular expression /regex/.
Perl one-liners explained e-book
I've now written the "Perl One-Liners Explained" e-book based on this article series. I went through all the one-liners, improved explanations, fixed mistakes and typos, added a bunch of new one-liners, added an introduction to Perl one-liners and a new chapter on Perl's special variables. Please take a look:
Have Fun!
Have fun with these one-liners. These were really easy this time. The next part is going to be about various calculations.
Can you think of other numbering operations that I did not include here?
Two Years of Blogging
Holy smokes! It has now been two years since I started this blog. It seems almost like yesterday when I posted the "A Year of Blogging" article. And now it's two! With this post I'd like to celebrate the 2nd birthday and share various interesting statistics that I managed to gather.
During this year (July 20, 2008 - July 26, 2009) I wrote 55 posts, which received around 1000 comments. According to StatCounter and Google Analytics my blog was visited by 1,050,000 unique people who viewed 1,700,000 pages. Wow, 1 million visitors! That's very impressive!
Here is a Google Analytics graph of monthly page views for the last year (click for a larger version):
In the last three months I did not manage to write much and you can see how that reflected on the page views. A good lesson to be learned is to be persistent and keep writing articles consistently.
Here is the same graph with two years of data, showing a complete picture of my blog's growth:
I like this seemingly linear growth. I hope it continues the same way the next year!
Here are the top 5 referring sites that my visitors came from:
- reddit (292,147 visitors).
- stumbleupon (69,575 visitors).
- hacker news (47,595 visitors).
- delicious (27,109 visitors).
- dzone (15,898 visitors).
And here are the top 5 referring blogs:
- Scott Klarr's blog (7,848 visitors).
- My Free Science Online blog (6,284 visitors).
- Eric Wendelin's blog (1,693 visitors).
- Andy Lester's PerlBuzz blog (1,356 visitors).
- Jurgen Appelo's blog (1,001 visitors)
I found that just a handful of blogs had linked to me during this year. The main reason, I suspect, is that I do not link out much myself... It's something to improve upon.
If you remember, I ended the last year's post with the following words (I had only 1000 subscribers at that time):
I am setting myself a goal of reaching 5000 subscribers by the end of the next year of blogging (July 2009)! I know that this is very ambitious goal but I am ready to take the challenge!
I can proudly say that I reached my ambitious goal! My blog now has almost 7000 subscribers! If you have not yet subscribed, click here to do it!
Here is the RSS subscriber graph for the whole two years:
Several months ago I approximated the subscriber data with an exponent function and it produced a good fit. Probably if I had continued writing articles at the same pace I did three months ago, I'd have over 10,000 subscribers now.
Anyway, let's now turn to the top 10 most viewed posts:
- 1. My job interview experience at Google (144,400 views).
- 2. A Unix Utility You Should Know About: Pipe Viewer (124,570 views)
- 3. Code Reuse in Google Chrome Browser (115,750 views).
- 4. Famous Awk One-Liners Explained, Part I (87,721 views).
- 5. MIT Introduction to Algorithms, Part I: Analysis of Algorithms (79,536 views).
- 6. A Unix Utility You Should Know About: Netcat (51,354 views).
- 7. Famous Sed One-Liners Explained, Part I (49,068 views).
- 8. Vim Plugins You Should Know About, Part I: surround.vim (41,388 views).
- 9. 10 Awk Tips, Tricks and Pitfalls (29,689 views).
- 10. Low Level Bit Hacks You Absolutely Must Know (22,916 views).
The article that I liked the most myself but which didn't make it to top ten was the "Set Operations in Unix Shell". I just love this Unix stuff I did there.
I am also very proud for the following three article series that I wrote:
- 1. Review of MIT's Introduction to Algorithms course (14 parts).
- 2. Famous Awk One-Liners Explained (4 parts: 1, 2, 3, 4).
- 3. Famous Sed One-Liners Explained (3 parts: 1, 2, 3)
Finally, here is a list of ideas that I have thought for the third year of blogging:
- Publish three e-books on Awk One-Liners, Sed One-Liners and Perl One-Liners.
- Launch mathematics, physics and general science blog.
- Write about mathematical foundations of cryptography and try to implement various cryptosystems and cryptography protocols.
- Publish my review of MIT's Linear Algebra course (in math blog, so the main topic of catonmat stays computing).
- Publish my review of MIT's Physics courses on Mechanics, Electromagnetism, and Waves (in physics blog).
- Publish my notes on how I learned the C++ language.
- Write more about computer security and ethical hacking.
- Write several book reviews.
- Create a bunch of various fun utilities and programs.
- Create at least one useful web project.
- Add a knowledge database to catonmat, create software to allow easy publishing to it.
- If time allows, publish reviews of important computer science publications.
I'll document everything here as I go, so if you are interested in these topics stay with me by subscribing to my rss feed!
And to make things more challenging again, I am setting a new goal for the next year of blogging. The goal is to reach 20,000 subscribers by July 2010!
Hope to see you all on my blog again! Now it's time for this delicious cake:


text:
Merle Norman Products are American Made.
New - Merle Norman Cosmetics & Day Spa
528 Washington Blvd.
Time for a Whirlpool Pedicure Party
Enjoy a Manicure at the same Time!
New Manicure Bar
We have Facials for all Skin Types!
Hair Designer - Up-Do Styles - Manicures & Pedicures - Waxing
My name is Paige and I am new to the staff at Merle Norman. I attended Barons Beauty Academy and I graduated in August, 2014 with experience in color, hair cutting, up dos, nails, paraffin hand dips, pedicures and facial waxing. I enjoy all aspects of the cosmetology industry and strive for my customer's satisfaction.
My cosmetology background includes coloring classes held in New York City's TIGI Academy, and Salon Simone. There I became more familiar and experienced with hair coloring and hair cutting. Please feel free to ask me to work with you on anything you may have in mind. I am open to all new ideas and fun conversation.
Before the kiss,
The perfect guy. The perfect gown.
Now the perfect makeup.
Book your personalized consultation today.
Take some time for yourself and enjoy a wonderful far-infrared sauna today.
A far-infrared sauna relives joint pain, reduces stress, clears cellulite, improves circulation and burns up to 900 calories in a 30 minute treatment. $10
It is highly recommended before a Body Service or a Facial to help you relax.
This is definitely for the weekend warrior who overdoes it, because it will detoxify your body and help stop your muscles from hurting.
For all skin types and aging concerns.
A total lash charmer, this mascara fattens up lashes for full-on volume. Features a unique flat yet curved brush designed to hug the curve of lashes, even those pesky fine lashes. Flake-, smudge- and transfer-proof formula separates while enveloping each lash to maximize its biggest potential. Fragrance-free. Oil-free. Dermatologist tested. Ophthalmologist tested. Safe for contact lens wearers.
Dashing Diva
For Natural Nails
French Wrap Plus
The New Revolution in French Manicures
European Facial
Steam, deep cleanse & extraction
Hydra-Medic Facial (acne)
And many more
Make your appointment today so you are ready for the spur of the moment occasions.
Dirty Secret: Do you skip washing your face at night? Don't! It's the first step to any skin care regimen.
False Lashes
Everyone is wearing them! Available in three sizes for any personality, mood, or occasion.
For all skin types. See uneven skin tone and fine lines disappear with this multi-benefit complexion corrector that gives you the benefits of a skin care product, sunscreen and light foundation — all in one!

subset: commoncrawl


text:
Print shops successfully working with fine artists have been able to master not only the skills and technologies necessary to create nearly identical duplicates of their clients' artwork, but they've also aced the test when it comes to attracting clientele seeking out a "fine-art friendly" print provider.
Years ago while I was in college, one of my accounting professors – one of the country's foremost experts in white-collar fraud – informed us that he was going to spend the class period talking about fraud and how it might affect us during the course of our careers. We were somewhat surprised when he told us that during the course of our careers we would no doubt be witnesses to fraud and may even find ourselves susceptible to its temptations.
For the past decade, I've had a "mad scientist" vision of creating two inventions for our industry: a time machine and an anti-gravity machine. We all could use the time machine to satisfy customers who want their prints yesterday, or to travel to the future to see if that six-figure piece of equipment we plan to buy will be obsolete in six months. And, because we are all painfully aware that trouble (among other things) flows downhill, we could use the anti-gravity machine to reverse the flow and deliver it back to those who created it in the first place.
For a few weeks last autumn, television came alive in Midtown Manhattan's Cassa Hotel and Residences, when Showtime Networks collaborated with leading designers, technology partners, and print providers to transform the top three penthouses of the 48-story building into a showcase of digitally printed, multimedia graphic displays. Inspired by seven of the cable network's leading original series, the Showtime House 2010 featured innovative décor items emulating the style and persona of each program, and highlighting the integration of technology and creativity.
German for "flying day," the celebrated Flugtag event sponsored by Red Bull encourages average, untrained people to test their ability to fly. Even though the human-powered flying machines rarely achieve a height of more than a few feet from the 30-foot deck, daredevils everywhere continue to take the risk.
For the past three years, Louisville-based USA Image has swung wide its doors each winter for an open house gala, and 2010 was no different. The four-hour event allowed current and prospective customers to enjoy the print provider's hospitality while browsing a sampling of the variety of projects the shop can produce, including hanging banners, fabric backdrops, floor graphics (featuring the company logo), vehicle wraps, and much more.
CET Color has signed an agreement with PrintLat to distribute the former company's line of wide-format UV digital printers and routers into the Latin American market.
"CET Color is becoming quite a force in the UV wide-format digital printing market," says David Pachon, president of PrintLat. "Our partnership with them will enable us to expand our offering and round out our portfolio of products. CET Color will assist us in providing innovative print solutions to companies while lowering their cost of ownership."
Paradigm Imaging Group, the supplier of large-format scanning and printing solutions, tradeshow displays, and graphics, has been appointed distributor for SID Signs International Distributor Corporation in North America. Based in Miami, SID Signs is a provider of wide-format printers and related products, including UV, solvent, and eco-solvent printers, as well as cutting plotters, routers, laminators, consumables, and more.
X-Rite has nearly doubled the locations this spring where it will be offering its Fundamentals of Color and Appearance (FOCA) one-day seminar that instructs on how to evaluate and approve colors. The seminars are geared toward pre-media and digital pressroom personnel as well as manufacturing specifiers, quality-control and assurance professionals, lab technicians, parts suppliers, and others.
The Sustainable Green Printing Partnership (SGP) has opened the public comment period for a revised Certification Criteria document. The SGP Partnership periodically reviews and expands the Criteria document in order to address new sustainability issues and key changes in the graphic-communications industry, the organization reports.


text:
from Wikipedia
Visual Culture as an academic subject is a field of study that generally includes some combination of cultural studies, art history, critical theory, philosophy, and anthropology, by focusing on aspects of culture that rely on visual images. Among theorists working within contemporary culture, this often overlaps with film studies, psychoanalytic theory, gender studies, queer theory, and the study of television; it can also include video game studies, comics, traditional artistic media, advertising, the Internet, and any other medium that has a crucial visual component. Because of the changing technological aspects of visual culture as well as a scientific method-derived desire to create taxonomies or articulate what the "visual" is, many aspects of Visual Culture overlap with the study of science and technology, including hybrid electronic media, cognitive science, neurology, and image and brain theory. It also may overlap with another emerging field, that of "Performance Studies." "Visual Culture" goes by a variety of names at different institutions, including Visual and Critical Studies, Visual and Cultural Studies, and Visual Studies.
Table of Contents
Early work on visual culture has been done by John Berger (Ways of Seeing, 1972) and Laura Mulvey (Visual Pleasure and Narrative Cinema, 1975) that follows on from Jacques Lacan's theorization of the unconscious gaze. Late nineteenth-century practitioners of visual knowledge, such as Georgy Kepes and William Ivins, as well as iconic phenomenologists like Maurice Merleau-Ponty also played a role creating a foundation for the discipline.
Major work on visual culture has been done by W. J. T. Mitchell, particularly in his books Iconology and Picture Theory and by the art historian and cultural theorist Griselda Pollock. Other writers important to visual culture include Stuart Hall, Jean-François Lyotard, Rosalind Krauss and Slavoj Žižek. Continuing work has been done by Lisa Cartwright, Margarita Dikovitskaya, Chris Jencks, Nicholas Mirzoeff and Gail Finney. Visual Culture studies have been increasingly important in religious studies through the work of David Morgan, Sally Promey, Jeffrey F. Hamburger, and S. Brent Plate.
from the University of Wisconsin - Madison
What is Visual Culture?
Visual Culture is concerned with everything we see, have seen, or may visualize-paintings, sculptures, movies, television, photographs, furniture, utensils, gardens, dance, buildings, artifacts, landscape, toys, advertising, jewelry, apparel, light, graphs, maps, websites, dreams-in short, all aspects of culture that communicate through visual means. We draw on methodologies from the arts, humanities, sciences, and social sciences. We focus on production and on reception, on intention and on deployment. We consider institutional, economic, political, social, ideological, and market factors. We study the visual as a reflection of culture and as something that has cultural efficacy in its own right, contributing to the production, reproduction, and mutation of culture. Rather than locate the significance of visual objects in their inherent properties, most Visual Culture scholarship looks to the uses to which people put the visual-the practice of Visual Culture. Both real and hypothetical spectators and consumers have taken up important places in the analysis of visual meaning. In some cases this has meant empirical studies of consumption, rooted in the social sciences; in others, ethnographic participation has informed the study of visual materials.
Why Study Visuality?Ours is a visual culture. Our workplaces are visually saturated environments and our dominant pastimes (films, television, video games, and the internet) are visual media. Moreover, we communicate visually when we are trying to cross over cultural boundaries; think, for example, of the graphics devised for international signage. Knowledge is often communicated visually: scientists chart brain activity, economists graph fiscal trends, geographers map territory and detectives photograph evidence. The growth of the web as an information distribution system has made an understanding of visual design factors indispensable in every field of study. The visual also our access to the past. The earliest recorded communications are pictorial and artifacts are central to the reconstruction of history. Visual Culture Studies teaches critical viewing to prepare citizens for life in the visually complex milieu of the 21st century. Analysis and criticism are significant outcomes of Visual Culture Studies but the field does have practical applications as well, including design recommendations for communicative and utilitarian use as well as implications for ethical and social policy and for scientific research.
New Academic ParadigmsIn traditional humanistic scholarship, as well as traditional studio training, the study of visual material has been narrowly focused on mapping the visual within the boundary of "high culture." The concept of "high" or "fine" art has, however, come under critique in these fields, and there are other disciplines that have studied the visual in a less bounded fashion. Historians and practitioners of design (in industrial and interior design, architecture, furniture, and landscape architecture, for example) reach more into everyday life. For cultural anthropologists and archaeologists, culture is also broadly defined. The new paradigm of "Visual Culture" represents a more holistic and encompassing approach to the visible world. Anything visible is a potential object of study for Visual Culture, and the worthiness of any visual object or practice, as an object of study depends not on its inherent qualities, as in the work of art, but on its place within the context of the whole of culture. As we move beyond "western" models to study visuality across cultures, we realize that alternative models for approaching culture holistically exist in Africa, Asia, Oceania, and among indigenous and diasporic populations of North and South America.
Other "Studies"Recent decades have seen the development of other "studies," notably gender studies, ethnic studies, and area studies. Many of these studies embrace the same conceptual elements claimed for Visual Culture Studies-an inter- or anti-disciplinary organization, a shift from "high" culture to an expanded range of objects of study, an emphasis on the spectator/participant-are central to these other studies as well. Visual Culture Studies engages with the developments in other studies to advance research with a specifically visual focus. "Material Culture" and "Performance Studies" are two relatively recent academic interdisciplines with which Visual Culture has strong affinities. Material culture involves the study of the tangible aspects of human behavior, studying them as evidence of larger cultural patterns. The study of material culture assumes that all parts of the human made world are cultural documents that provide us insight into the past and present. "Performance Studies" has radically altered and expanded the traditional disciplines of theatre, dance, music, etc., to include an enormous range of performative behaviors, both "artistic" and quotidian.
World CulturesVisual Culture Studies looks at the production and consumption of images, objects, and events from diverse cultures, across national boundaries, and within a global context. This means that we are challenged to address many models of vision and perception, extending beyond ocularity to cognition and perception. Thinking across cultures requires that we allow for alternate temporal structures (such as theater in India lasting all night) and fundamentally different notions of representation (such as the use of abstraction in the Islamic world) and markedly unfamiliar understandings of visibility (such as African concepts of the seen as markers for the spirit world). Thinking interculturally includes radically revised conceptions of "high" and "low" culture and a substantial change in the ways practice history and anthropology. Because seeing is central to our understandings of cultural difference, much of the fundamental work in Visual Culture Studies is about the construction of identity through the interdependent elements of race, ethnicity, gender, sexuality, class, and ability.
Visuality and TextualityVisual Culture Studies presents a challenge to the textual model of the world that dominates so much thinking about culture. While analyzing cultural experiences, artistic practices, and even social interactions and history itself as so many texts to be read is an undeniably powerful approach, this textual bias ignores a vast realm of perception, experience and meaning in reducing culture to "reading." Visual Cultural Studies counters this bias by emphasizing the importance of the visual-even in textual objects, as when scholars consider the impact of design on the meaning of literature. In countering this earlier thinking, Visual Culture Studies does not set aside textuality, but draws it into dialogue with visuality, performativity, aurality, tactility, and so on. At the same time, Visual Culture scholars are beginning to question the broader dominance of visuality itself (what some have termed "ocularcentrism") and to look for ways to consider vision in the broadest cultural context without introducing new hierarchies of social practice.
Visual Culture at UW-Madison


text:
Hi, the plugin works great but it slows the home page website download time to beyond 20 seconds. I have deactivated all other plugins so there is no conflict. When I deactivate tubepress the homepage downloads in under 2 seconds.
The website is http://www.videographerwedding.com. It is under construction so there isn't much content yet.


text:
0 ReviewsWrite a Review
Write a review for a chance to win a $1,000 gift card. See details.
MICHAEL Michael Kors
Michael Kors 'Blake' Bracelet Watch, 42mm
Product not available
Have questions?
Chat with us or call 1.888.282.6060.
HideDetails & Care
A boldly colored dial, coin-edge bezel and slender profile distinguish a classy round watch polished to a brilliant shine.
- 42mm case; 19mm band width.
- Adjustable bracelet. Links can be removed at your local Nordstrom. Find a store.
- Deployant clasp closure.
- Silver/navy blue is style MK3225; Rose gold/warm grey is style MK3227; Gold/emerald green is style MK3226.
- Three-hand quartz movement.
- Mineral crystal face.
- Stainless steel/gold ionic plating or rose-gold ionic plating.
- By Michael Kors; imported.
Michael Kors 'Blake' Bracelet Watch, 42mm
Write a Review0 Reviews
Write a review for a chance to win a $1,000 gift card. See details.
Enter a valid first name.
Enter a valid last name.
Enter a valid email address in the format: firstname.lastname@example.com.
Close modal


text:
Verified ID
Email addressVerified
Phone number(▒▒▒) ▒▒▒- ▒▒ 02
677 Friends
Reviewed5 Reviews
Offline IDIdentification Card
About Me
- School
- Randolph College
- Languages
- English
- Mi Dan's Airbnb Symbol
Hey, I'm Mi Dan!
New York, New York, United States · Member since December 2011
I love traveling and meeting new people. Traveling and seeing the world have significantly changed me and shaped me into the person that I am today. I am thankful and appreciative of every single experience that I have had, every single place I've been and every single person that I have encountered in life.
I am very adventurous and I love exploring new things. I spend a lot of time on my own. I think I am quite fearless :)
I am fascinated by the magnificence of the world and desire to see every part of it.
I enjoy meeting new people and learning interesting things about them


text:
•January 1, 1970
View photos from your favorite games
View photos from your favorite games
Scott: Do you Hillary dipshits realize half the delegates at the convention center walked out in protest after her nomination? The seats were EMPTY because the DNC is propping up a candidate the people don't want. Oh and don't forget the kicker. Remember all the Bernie supporters votes that she spent the past year suppressing and purging. Yah not gonna win without them, but guess what? After all they we WON'T vote for her. No matter your pragmatic pleas because she is a weak and corrupt candidate. I do not like Trump whatsover, but at least he was elected in a fair process. If you believe the DNC was fair btw you are a sheep.


text:
This section contains 10,961 words
(approx. 37 pages at 300 words per page)
SOURCE: "Fantasy, Folklore, and Finite Numbers in Nabokov's 'A Nursery Tale,'" in Slavic and East European Journal, Vol. 43, No. 3, Fall, 1999, pp. 511-29.
In the following essay, Sweeney discusses the role of fairy tale elements in Nabokov's "A Nursery Tale."
Like most of Vladimir Nabokov's works, the short story "Skazka" concerns the poignant gap between desire and reality, and the perils of trying to surmount it. Nabokov wrote this tale fairly quickly "in Berlin in late May or early June 1926"—the same setting as the story itself—and it appeared in the Berlin emigré journal Rul' only a few weeks afterward. Almost fifty years later, in 1975, when he and his son had finally translated "Skazka" into English as "A Nursery Tale...
This section contains 10,961 words
(approx. 37 pages at 300 words per page)


text:
The City of Columbia is moving forward.
In 2010, Columbia was ranked by the Tennessee Center for Policy Research as a Top Ten Most Business Friendly City in Tennessee. And it seems that businesses are taking notice.
Just drive down one of the commercial corridors in Columbia and you'll see a variety of businesses choosing to open or expand their operations in Columbia. In a recent analysis completed by the Columbia Planning Department, it was discovered that investments along the James Campbell Boulevard have totaled over $7.5 million in the past 15 months alone.
Columbia's residents and local leaders are excited to welcome new business to our community, including Chick-fil-a and Firehouse Subs, which have contributed approximately $660,000 combined in new construction investments. Signs of Columbia's resiliency can also be attributed to the number of businesses choosing to stay and reinvest in their Columbia locations.
Thank you to Kroger's, AT&T, Walgreens, Campbell Plaza and all others who have already invested more over $4 million in remodeling and reconstruction activities. In addition to these investments, many more new opportunities and ideas seem to present themselves every week as the City continues to foster partnerships and collaborations that strengthen the community.
The City of Columbia is financially sound and positioned for growth. Since 2010, city leaders have worked together to achieve a variety of priorities that have been outlined in the City's Strategic Plan. Over the last two years specifically, the City of Columbia started a voluntary, curbside recycling program, succeeded in reducing the overall crime rate which continues on a downward trend, implemented a grant funded, neighborhood revitalization project in East Columbia, and began recognizing local efforts to create an attractive community with the Mayor's Design Award and Mayor's Beautification Award programs. In addition to these programs, the City of Columbia has maximized local tax dollars to leverage more than $10 million in grant funding to complete several significant capital projects in the past two years. The City of Columbia has completed construction of a new Fire Station No. 2, which has been recognized for its notable, energy efficient design in Fire Chief's Magazine, new sidewalks and a traffic signal on Hampshire Pike near Baker Elementary and Whitthorne Middle Schools, and Columbia's first Farmers Market Pavilion in RiverWalk Park. Most recently, the City has completed renovations of a building located at 700 N. Garden Street, which will serve as the new City Hall. The former City Hall at 707 N. Main Street will be used to relocate Columbia's Police Department from its current location on Westover Drive to downtown Columbia. The City of Columbia's Duck RiverWalk project, which includes numerous streetscape improvements in downtown, nears completion and has already begun to attract residents and visitors alike to enjoy the scenic beauty of Columbia's greatest natural resource, the Duck River. Lastly, the City of Columbia is nearing the end of the first year of operations for the Ridley Park Sports Complex. The impressive, 78-acre sports facility has hosted 16 tournaments since opening in April 2011 and more than 15 tournaments have already been reserved for next year. In November 2011, Ridley Park was awarded Tennessee's Project of the Year by the state chapter of the American Public Works Association; this designation recognizes the project as one that best "epitomizes outstanding planning, construction and management."
These recent successes are the direct result of residents, businesses and city officials working together in a way that can best be described as people helping people. While the economic issues that have depressed our community in recent years are not completely behind us; the levels of collaboration and investment in Columbia are greater than ever before and the City of Columbia is positioned for more growth and continued development in the months ahead.
Dean Dickey is mayor of Columbia.


text:
Patient Deaths in LTC Difficult to Swallow
In response to the Feb. 21 cover story Good Grief, I work in long-term care, and a death there can be very rough, especially since most who pass away have been in the facility awhile. You get to know them and their families.
I worked in a hospital and, although a death was hard to take then, its harder in a nursing home. As a nurses aide when I was in school, I was told by nurses and other aides to get used to it if I was going to be a nurse. I found this very cruel and unfeeling. When referring to a resident in long-term care, a CNA actually said, It hurts me more to see a dog die than one of these people.
That always struck me, and I vowed never to act that way. Eleven years later, I havent become hard-hearted.
Posted by online user MicheleRN2000 at Nurse.com
Nurses can Take Solace in Easing Stress for all
In response to the Feb. 21 cover story Good Grief, its sad to lose a patient, especially a young person or someone youve worked with for some time and gotten to know and like.
Can you take comfort in knowing that you did everything you could for this patient? Were you able to make this person and his or her family a little more comfortable and a little less stressed? If nothing else, you can at least make the patient feel, for a brief moment, like he or she wasnt a dying person.
Posted by online user JerZFox at Nurse.com
Cover Story Brings Care Goals Into Focus
As someone who does palliative care in the hospital, I find it can be helpful for nurses to reframe their care goals in regard to dying patients (Good Grief, Feb. 21).
If death is viewed as a failure, then there is often emotional stress when it occurs. If the focus is instead on making the patient and family as comfortable as possible, then death can be easier for all to bear. The nurse caring for the patient in the burn unit is an example of providing the best nursing care possible in a very difficult situation.
Marian Grant, CRNP, DNP, ACHPN Baltimore
Just Another Code no Ordinary Story
The Feb. 21 End of Shift article Just Another Code was a wonderful story told with insight and compassion. Please dont quit your day job, Mark Stambovsky, RN. I bet youre a top-notch nurse. But keep sharing your literary talents, too.
Carol Bayne, RN Woodbridge, Va.
Nurses End of Shift Offers key Lesson
I usually sit down hastily with my copy of Nursing Spectrum and go straight for the classifieds at the back to see if there is a dream job waiting for me.
I was stalled this morning by the End of Shift article Just Another Code written by Mark Stambovsky, RN, in the Feb. 21 issue. Today, my triplets celebrate their 7th birthday and my dear old dog was taken for surgery. The pulse of life pushes me in haste. But his telling of a code that led him to wonder about the life behind it was so moving that I may be a few minutes late delivering cupcakes.
As nurses, we have all been so busy that we sometimes push back the enormity of what we do and how much of life passes our view. I heard someone refer to our work as the work of intimate strangers. His piece conjured up that image.
Marisa Tamari, NP Kensington, Md.


text:
- ITV Report
- ITV Report
Tom Daley bombarded by internet pranksters
Live updates
Tom Daley wins gold with new 'firework' dive
Plymouth diver Tom Daley has won his first world title for more than two years.
Daley, who won Olympic bronze at London 2012, won gold in the 10 metre platform competition at the World Series event at the same venue. His new 'firework' dive helped him beat the leading Chinese divers who have dominated the sport in recent years.
Tom Daley wins National Championships in Plymouth
Plymouth's Olympic hero Tom Daley was back in Devon today where it all began. He was competing against the best in Britain in the National Championships and came first.
Tom was competing the British Gas Championships. At the Plymouth Life Centre. It gave him the chance to perfect some of the dives he hopes will get him to next year's Olympics in Brazil. One of them is a routine he calls the firework:
Tom's coach Jane Figueireeo has been with him now for just over. She's pleased with his progress so far:
We've got to keep things in the now.We have the world series coming up,six legs of that.So the main focus of that is to stay healthy,keep working on our new dives.
I really wanted him to come back to Plymouth,embrace everybody that's contributed so much to his success.
Daley shows off new "firework" dive in Plymouth
It's day three of the British Gas diving championships. Tom Daley is diving at 10am Men's Platform preliminary and 2pm Men's Platform final.
He is debuting a new dive he's been working on ahead of the Olympics. Daley hopes "The Firework" off the 10m board will get him the gold in Rio.
Today will be the first time he has performed the in public.
Watch his 10am dive below:
Plymouth women win gold at the diving championships
The National Diving Championships got underway in Plymouth today.
There was success for home-grown talent Tonia Couch and Sarah Barrow. The Commonwealth Games silver medallists won gold in the women's 10 metre synchro.
Plymouth divers to compete in National Championships
The National Diving Championships start today at Plymouth's Life Centre.
The three-day competition will see the cream of British diving challenging for national honours as they compete across all Olympic events.
Local women Sarah Barrow and Tonia Couch will be in action this afternoon.
Tom Daley takes a dive ahead of championships
Tom Daley is back in his home city of Plymouth ahead of the National Diving Championships, which are taking place at the Life Centre this weekend.
We caught a few shots of the Olympic medallist at the pool today - yes that's us he's smiling at...
Tom Daley is back in Plymouth for first time since moving to London
Tom Daley was back in Plymouth today putting the finishing touches to a new routine he'll showcase at the National Diving Championships.
It is the first time Tom has been back to his home town since switching his training base, and moving to London 12 months ago.
He'll be going for gold at The National Diving Championships which are taking place at the City's Life Centre. Local diving stars Sarah Barrow and Tonia Crouch will also be there alongside new 14-year-old sensation Matthew Dixon.
Tom Daley & Co in Plymouth for Diving Championships
Diving stars - including Tom Daley - are descending on Plymouth in readiness for the National Diving Championships at the City's Life Centre.
Local divers Sarah Barrow and Tonia Couch will be competing alongside new young sensation 14-year-old Matthew Dixon.
Tom Daley takes silver medal in 10m platform final
Plymouth's Tom Daley has taken silver in the 10 metre platform final at the European Championships in Berlin.
The 20-year-old's best dive was his fifth with a score of 102.60, but he finished 50 points behind Russia's Victor Minibaev.
Swimming authorities petitioned over Andy Banks
More than 600 people have signed an online petition encouraging British Swimming to keep Andy Banks as head diving coach.
It's believed the man responsible for turning Plymouth into a national centre of excellence is considering a job abroad after he was told he won't be offered a new contract. Commonwealth silver medallist Sarah Barrow is among those who have backed the petition.


text:
Type: Posts; User: mobowhntr
I got the manuals, Thank you very much.
Baysens008b is the thermostat.
Hoping maybe you guys can help here. Im not used to working on commercial stuff like this. If you put the t-stat in fan auto the blower short cycles. Put it to fan on and the thing runs perfect. Im...
Thanks guys I really appreciate it and all of you are right. Rider77 that is right where I'm at except 62, 40 year old pieces of junk. I've only been here for 2 months I guess I should give it some...
Quit my job as Senior Service Tech.of seven years to go to work for a local factory as the lead Maintenance Man on night shift. Hate the hours and miss the job and customers I had. Text my old boss...
Ridicules. I guess its what we get for sending a bunch of Lawyers to Washington.
Dijit you are arguing with a bunch of Neocon War Mongers. They are terrified to sleep at night thinking some made up boogeyman is coming for them. They seem to love giving up there Liberties for...
Senator from Oregon on why he voted no to this bill. Pretty scarey stuff.
Last week working on a gas furnace I had the blower cover off and I kept feeling something tug on me. I looked down and my hoodie strap was sucking into the blower housing. Jumped back real quick and...
They didn't want to find it. That would have meant they would have had to pull it and clean it.
About time!
Really? You think what he was doing is O.K.? I'm sure his wife and kids dont.
Thanks. It is the tube in the wall type evap. so no Defrost. It does have some type of control to shut it down? I will look at it next week when it warms up a little. Thanks again.
I have a friend who owns a Convenience Store with one of those old outside ice containers. It is r-22 compressor and condensor on top in a small metal box. He says it runs constantly and asked me to...
Thanks for all the feedback. I wish he would hurry up, I have money burning a hole in my pocket. Any way to pre-order?
I dont have a lot to spend but was wondering if the AK900 was going to be around the same price as the 1600's? Any idea when they will be available?
Counterclockwise and can make it change back and forth.
Wouldn't it be easier to ban politicians from going within 1000' of a firearm?
I liked this comment.:LOL:
Yes we are.
What exactly do they risk everyday? I'm glad they do what they do but this is way overboard.
In 01 I started working for a Cabinet Shop as an Installer/Service man. I was there for 7 years and then when the housing market crashed so did the job. I started night classes at the Community...
Maybe this time he can completely destroy it?
Yep, $80 dollars to fill up Thurs. and that is at $2.90gal. Very bad.
He thought he was the President of the Obama Fan Club. You mean he might have to actually do something?
Sounds like me. But I dont get 3 months a year off, 7 hour workday counting lunch, all the federal Holidays and the Federal pension.Sounds real tough to me:gah:
Local and state Governments are going broke. Hell even the Fed. is broke. I wouldnt count on that government job to much.
WTH are you talking about? The new Congress is NOT in session yet.
Nice bow. I plan to have me a new one in the stable next year. I sold all my hunting stuff this past spring and bought a new boat. So I had to sit this season out.:LOL:
I agree
There is no difference but if your on welfare you shouldn't be doing either one. You should be buying food, rent or some other crap you might actually need.
Doesn't surprise me at all.
This is a bit of good news. They should throw it all out.
Pulled the panel off an RTU last week and got hit 5 times on the wrist by red wasps before I could even move. Sore and swollen for 3 days:nopity:.
Maybe if we are lucky they will regulate themselves out of existence.:couchhide:
Because they're gay and it is disgusting. Just saying.
You want to run the Heat pump. It is still more efficient to run it and have the heat strips kick on and off as needed as opposed to just using the Heat strips constantly.
I emailed McCaskill. I emailed Bond too only it was a tad different than Claires though. My Rep. is Roy Blunt.
Good for them. I hope they stick with it.
I sent my thoughts to her this weekend. I told her she should probably start looking for another job.
Why do we even need Parties? Why cant we just vote for people based on there beliefs? I was a Registered Democrat up until this year but I have always voted for the person not the Party. I think it...
Have we the People let the Government become too Powerful? They do what they want, when they want to do it and the people be damned. I think if not already it is pretty close.
Of course that's what they say. big2 Tomorrow it will be in the crapper again.
Thanks for the advice guys I really do appreciate it all. The Senior Tech with the company has around 30 years in the Trade. I have been running calls with him after work to learn and I bet he has...
Boss pulled me aside after lunch today and said he needed to talk to me a minute. I thought oh man what did I do? He said with my diagnostic ability he was taking me off of Installs and making me a...
Thanks I really appreciate all the advice.


text:
YONKERS, N.Y. (April 25, 2014) Necropsies will be performed on about 25 dead cats that were found inside neatly-tied plastic bags hanging from tree limbs in a New York City suburb.
The cats found Thursday morning in a wooded area of Yonkers were in various stages of decomposition, authorities said.
Ernest Lungaro, director of the SPCA of Westchester's Humane Law Enforcement Division, told The Journal News newspaper that it appears the cats were dead before they were put into the bags because a live cat would have been able to claw its way out.
On Friday he said three of the cats had blunt force trauma to the head.


text:
You are using an outdated browser. Please upgrade your browser to improve your experience.
Get Posterized By Gasketball's High-Flying Free Play
Gasketball is a slam dunk for hoops fans and puzzlers alike.
A.T. Faust III
| August 9
Gasketball Promises A Puzzling Mix Of Bank Shots And Buzz Saws
Gasketball puts a new bounce on the classic game of H-O-R-S-E.
A.T. Faust III
| August 2
Canabalt's Developer Is Developing A New iPad Game - Launches Teaser Website
Canabalt's developer has recently posted a Twitter update in which a new, upcoming iPad game is announced and a mysterious, cryptic website is linked to.
Joe White
| January 15
Review: Solipskier - SkiFree Meets The 21st Century
If you remember SkiFree from Windows '95 you know it needed an update, and Solipskier adds speed and rainbows to do the trick. The gameplay style is a bit similar to Canabalt, but with more control, and again more speed. Read on to find out if it's worth picking up.
Staff Writer
| August 13


text:
Jan 01, 2013
Your lashes are so beautiful)
Dec 29, 2012
Like it
Thank you for answering! Staying power is good? I've been using Bobbi Brown's black gel liner, but am curious about MAC's and Maybelline's. They're both less expensive options. I'll have to try that pen out...
Dec 23, 2012
The pen does tend to smudge around the corners at the end of the day, but so far the gel liner has had no smudging and is fairly easy to apply. I think the gel is a few dollars more than the pen but if you're wanting a dramatic black that will last all day I would recommend the gel.
What liner is that? It's such a deep black! So many of mine go steely grey on me...
Dec 23, 2012
This liner was Maybelline Master Precise liner. It's a pen, not a stick so it does have a more dramatic black. I'm using the Maybelline Gel liner now, and that also gives a deep black.
Dec 21, 2012
How did u do that I have been trying but it comes out ugly can u make a video
Dec 21, 2012
It is the Cover Girl LashBlast volume and length.
Dec 21, 2012
Washington State
Cheap Dupes For High-End Products | Giorgio...
by Lindsey B.
★ 3-Minute 3 EASY HAIRSTYLES | Fake...
by Tina - MakeupWearables L.
Everyday Makeup Tutorial (Instagram Inspired) |...
by Carolina T.
#POLISHMOUNTAIN #NAILART - YAY or NAY? |...
by Dear N.
Born Pretty Mirror Polish Toenail Art | Diseño de...
by Liudmila Z.
Connect to get started. Learn more.
Join with Google
Connecting helps us make signing up quick and easy.
We'll never post without your permission.


text:
Gov. Jack Dalrymple has named a 15-member advisory panel on pipeline safety in the wake of a massive spill in western North Dakota.
The group includes state and federal officials, oil and gas industry officials and engineers.
Dalrymple says the panel will provide recommendations for the best technology to monitor and control oil and gas pipeline systems in the state.
The move to review pipeline safety stems from a Sept. 29 oil pipeline rupture that spilled more than 20,000 barrels of oil across several acres of farmland near Tioga.
Officials say the panel's first meeting is tentatively scheduled for Jan. 9.
Location, ST | website.com


text:
With spring in full bloom it's not unusual to see honey bees busily visiting flowers in search of nectar and pollen, but in this week's From The Ground Up, Joe Brown says too much bee activity around your house could be a recipe for trouble.
"Swarming season is the natural division of the bee hive, or a colony of bees. Half of a colony will stay at the original spot, and a new queen would be there. The other half with the old queen will seek new territory, and they may go into your house."
Paul Jackson is the chief apiary inspector with Texas Agrilife Extension, and says that many people make the mistake of not doing anything when they see bee activity inside or under their homes or in their garages.
"You need to have them removed, because if you leave them alone, in about three or four months, it's going to be a big nest, and you may have one hundred and fifty pounds of honey inside that house."
And in Texas, there's always a chance you could be dealing with the more aggressive Africanized bees.
"That nest could be Africanized. When a swarm comes in, an Africanized swarm, it's very gentle, extremely gentle, but four months later it's a different ball game. They become highly aggressive because they're in a massive brood rearing, and if you come close to that hive, or disturb it, then they will defend their hives , they will think you're attacking it, and they will go out and sting you."
Getting rid of the bees is only half of the job.
"Now let's say something kills the nest. You've still got the honey. Then you're going to have ants and other insects come in, and go after the dead brood or after the nectar, or after the pollen."
Jackson suggests to insure the job is done properly and safely, you should have a professional do it.
"If you want to have them removed, call your exterminator."
I'm Joe Brown, taking a look at Brazos Valley agriculture, From The Ground Up.


text:
In reading some 1960s Russian documents today, I came across the word 'выворотный' (or rather its opposite невыворотный). I've done some internet searching for the adjective and it seems to mean 'turned out' and 'not turned out.' Are there any Russian speakers on the forum who could confirm this?
This site uses cookies. By using this site, you agree to accept cookies, unless you've opted out. (US government web page with instructions to opt out: http://www.usa.gov/optout-instructions.shtml)
Translation of выворотн
Started by Swanilda8 , Jan 22 2014 11:45 AM
3 replies to this topic
Posted 22 January 2014 - 11:45 AM
Posted 22 January 2014 - 04:26 PM
In a ballet context, yes. See Vaganova: http://www.balletmus...aganova021.htm# http://www.balletmus...aganova028.htm#
Posted 22 January 2014 - 05:01 PM
Thank you!
Posted 23 January 2014 - 03:51 AM
FYI, this link contains a threat according to AVG.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users
Help support Ballet Alert! and Ballet Talk for Dancers year round by using this search box for your amazon.com purchases. (If it doesn't appear below, your computer's or browser's adblockers may have blocked display):


text:
We're sorry. The information you have requested is temporarily unavailable.
Husky Liners Classic Style Floor Liners - 63293
Part Discontinued
This part has been discontinued by Husky Liners . We apologize for the inconvenience.View all options for this product
Have a Question?
Have a Question? Ask a product expert! (800) 874-8888 Live Chat
Popular Searches
- husky lin
- loyd mats rubbertite
- weathertech 442041
- where the cheapest place to buy husky liners
- rubber mercedes floor mats
- lexus all weather mats
- ford floormats
- floor mats f-150
- 2001 nissan pathfinder all weather floor mats
- 2006 kia optima carpets
- car air filter reviews
- roof rack cargo carrier
- truck tailgates


text:
I am doing below actions on button click in sequence, using javascript.
- Generating Flash chart
- Making image of generated flash chart
- Exporting generated image in to PDF
Everything is dynamic. chart is generated using Open flash chart and are dynamic using php Mysql
All working fine. Problem here is that is takes some time to generate flash chart. So it's creating a blank image or image in middle form flash file exporting it to PDF.
It should proceed for generating image once flash is completed.
How can I get that flash has completed ?
How to synchronize these events ?


text:
If only there could be this much passion over fixing the problems at the King County Animal Shelter. But budgeting, staffing, politicking and management to solve a real problem with a real solution doesn't draw eyeballs for your ads, does it? If it bleeds, it leads, as they say.
All dogs go to Heaven (pit bulls excepted).
There was this woman answering questions on the WaPo website about training dogs, and she fielded a question from someone who wanted to introduce her dog-aggressive pit bull to her sister's Boston terrier. I was like, for reals? The WaPo woman was insistent that they fix the dog aggression first. Ya think?
elenchos, problems with king county animal control & the animal shelter are directly linked to pit bulls run amok. what percentage of the animals at the animal shelter do you think are pit bulls? banning pit bulls would be a real solution to several real problems.
Dan, I love you, but shut thee fuck up about pit bulls already.
Yes, because when insurance companies deny coverage it's always for virtuous reasons.
@6, I was going to post about that.
Hey, when insurance companies start denying insurance to pit bull owners, it will be the end of the breed. No ban will be necessary.
"Other breeds will take a nip then run off"
well, except for marjorie knoller's dogs, whom you may recall literally ate dianne whipple while knoller stood by and watched. those dogs weren't pit bulls, they were presa canarios.
and since i brought it up, knoller was just sentenced 15 years-life for allowing her dogs to eat another human being to death. it's kind of a big story. with all your concern for protecting the public from dangerous dogs, i'm surprised you haven't reported on it. i can only guess why, but i suspect if the dogs were pitbulls and fit squarely into your "it's the breed not the owner" narrative, you would have been all over it. but you know, i'm just guessing.
Pit bulls do not have stronger jaws per se - they are simply bred to be persistent and tenacious. NOr were pit bulls orginally bred to fight other dogs - pit bulls arise out of breeds bred to fight bears for sport in 19th century England.
I do get tired of hearing the same incorrect "facts" repeated over and over. And, as always, I wonder how many of these "pit bull" attack reports really come back to actual pit bulls versus misidentified dogs.
That said - yeah, introducing ANY dog aggressive dog to another dog? Bad plan all around.
Presa canarios are way more dangerous than pit bulls - we're not talking Labrador retrievers here. I don't think there's anyone in the world that would say "oh, those presas are lovely dogs, wouldn't hurt a fly." (Well, without being really sarcastic, that is.) Frankly, I'm borderline on pit bull bans - but I'd support a presa ban in a heartbeat. Beautiful dogs... but so are wolf hybrids. People shouldn't own them as pets.
11 - which underscores the point that pit bulls are not the only dangerous dogs out there, which seems like a no-brainer to me but appears to be a novel concept in certain circles.
Um, pit bulls are popular here, as everywhere. Of course you find a lot of them at the shelter, as at all shelters.
Instead of promising that a ban would do this or would do that, can you show me anywhere that a breed ban has worked? If you had evidence that banning pit bulls reduces dog attacks, you'd have a slam-dunk argument. I'd be convinced.
Dan. You're a dick. Do just a little basic research. Here, I've tried to make it easy for you...
# American Veterinary Medical Association:
"The AVMA supports dangerous animal legislation by state, county, or municipal government provided that legislation does not refer to specific breeds or classes of animals."
# National Animal Control Association:
"Dangerous and/or vicious animals should be labeled as such as a result of their actions or behavior and not because of their breed."
# Humane Society of the United States:
"HSUS opposes breed specific regulations because they do not address the underlying issues of owner behavior and responsibility."
# The American Kennel Club:
"Strongly opposes any legislation that determines a dog to be "dangerous" based on specific breed or phenotypic classes of dogs."
# American Humane Association:
"American Humane Association supports local legislation that protects communities from dangerous animals, but does not advocate laws that target specific breeds of dogs."
I'm not going to argue with you on the pit bull issue. I disagree with a breed ban, but I'm not going to convince anyone one the other side of the issue, and vice versa.
But at least give some notice when other breeds attack, too, in the interest of fairness.
Hey, this other idea occurred to me.
Is there a connection between wanting to invade Iraq instead of slogging through boring old weapons inspections, and wanting to ban drugs instead of doing the difficult, unglamorous work of drug treatment, and wanting to ban the macho dog du jour rather than the tedious task of managing a spay/neuter and animal control program? Seems like there is a mindset that wants to see everything in the most dramatic terms, of good vs. evil, where it can all be solved in one mighty push to wipe out the source of the evil once and for all.
It's kind of like Critical Mass and their melodramatic demonstration as a substitute for all the dull, thankless meetings and squabbling and negotiation and research that Cascade Bicycle Club does to build a bike infrastructure.
Just a theory.
Call me a bigot, too, then but take a walk in my neighborhood (South end) and you'll meet many a droopy-drawered doo-ragged gangbanger wannabe walking his pit. No leash, of course. You should see the yards these dogs live in, too with chicken-wire fencing they can dig under or through, sun-faded Big Wheel (on blocks? I wish), broken and empty "foties."
@8: you really think lower-class macho assholes who keep intact pits have DOG INSURANCE?
i don't have dog insurance - i don't know anyone who does.
elenchos, breed bans have worked in HUNDREDS of places, including king county. we successfully nearly eliminated wolf hybrids in king county in the 80's/90's.
list of cities/counties with breed bans in effect: http://www.rott-n-chatter.com/rottweilers/laws/breedspecific.html
evidence of ZERO pit bull-caused deaths or serious injuries since denver's pit bull ban was enacted almost 20 years ago in 1989: http://www.azstarnet.com/metro/158745
elenchos: no, if you google pit bull breed bans almost 100% of the anti-breed ban sites complain about the damn liberals. i'm sure there is a link between wanting breed bans against dangerous animals, wanting gun control, wanting universal health care, wanting to end the war in iraq, etc.
Sooooo, you think maybe a dog bred specifically to FIGHT FUCKING BEARS! isn't exactly the sort of thing you want around helpless children and old people, you think, maybe?
Dan, I don't know if you intend this, but now every time I see a dog, I am hyperaware of them. Doesn't even have to be a pit-type. You haven't raised awareness of a problem so much as you have fear-mongered. I understand that fear is a more compelling thing than reason, and it takes an effort of will to overcome the fear reaction.
Wolves? That's like saying a breed ban would work because lions and crocodiles are banned.
IT'S RETARDED. Please, please stop mentioning wolves. I mean, like, you know, "You must be at least
to have this debate."
Now never speak of wolves again.
And Denver's ban? I was promised proof that Denver's ban worked and instead I get THIS:
But even after 17 years there were two briefs periods of nonenforcement during legal challenges the ordinance hasn't produced any solid answers about the ban's effectiveness, said Doug Kelley, director of Denver Animal Care & Control.
And finally, my little theory said nothing about liberal vs. conservative. I was talking about instant gratification vs. the long, hard road known as "reality." Anyway, it's only a theory.
yawn. if you read the article, he said that because people still own pit bulls, but they're underground. DEATHS have gone down to ONE in the past 19 years (by a chow). the goal of a pit bull ban is to reduce DEATHS and BITES, not to eliminate pit bulls as a breed. that's what you asked for, that's what you got.
please explain how banning wolf hybrids is different than banning pit bulls, besides that they look different? even legally they're considered a "breed."
Instead of promising that a ban would do this or would do that, can you show me anywhere that a breed ban has worked? If you had evidence that banning pit bulls reduces dog attacks, you'd have a slam-dunk argument. I'd be convinced.
hmm, serious pit bull attacks down to 1 in 19 years, hundreds of places where breed bans have worked. now go on arguing yourself from an hour ago.
sorry, serious dog attacks down to 1 in 19 years. pit bull attacks down to 0.
Um, there was only ONE DEATH before the ban. According to the same article. See, to show something has worked, you need to show a significant change between the before and the after. And you have to link causation, not just correlation.
Denver officials are uncertain as to what effect the ban has had. "Bites by pit bulls and other restricted breeds have fallen some years and climbed others, and the number of overall dog bites is up in some places," says the Rocky Mountain News.
Which is what you would expect if people just replaced their pit bull with some other big dog.
A good animal control program with emphasis on spay/neuter, for all pets, does have solid data showing it works. I support what works, even if it doesn't lean on lurid headlines.
oh geez. read your stupid article. they're talking about the SUBURBS, not denver. in denver they're VERY CLEARLY down. the one year the ban was overturned by the courts, bites jumped up and the year the ban was reinstated they went back down.
there was one death and three serious mauling in the 2.5 YEARS before the pit bull ban went into effect. that went down to zero and zero in the next 19 years.
jesus. there isn't any clearer evidence possible that pit bull breed bans work.
if you want mandatory neutering, fine... i seriously doubt anti-pit bull ban advocates would be thrilled with that alternative, though.
The article said...
The ban was the result of four serious maulings by pit bulls in a 2 1/2period in the 1980s
there was one death and three serious mauling in the 2.5 YEARS before the pit bull ban went into effect.
You know what that is? That's poor reading comprehension, that's what that is. There was a spate of maulings in a short period of time, which inspired the hysterical reaction. That doesn't mean they had two maulings every two and a half years.
The lead of the article itself clearly states the data are inconclusive. The people who wrote the article are telling you it doesn't say what you think it says.
@19: The last fatal Pit Bull attack in Denver occurred in 1986. Denver instituted a ban on Pit Bulls in 1989. Mr. Nelson, unversed in the patterns, frequency andd circumstances of fatal dog attacks, draws a conclusion about the effects of the ban and the incidence of fatal dog (Pit bull) attacks with no evidence to support this claim.
Portland, Oregon, a city with approx. the same population as Denver, also reported a fatal Pit Bull attack in 1986. Portland, Oregon did not institute a ban on Pit Bulls after this incident, yet they have not had another incidence of a fatal Pit bull attack since 1986.
City/State Population
(US Census) Last Fatal Pit
Bull Attack Ban on
Pit Bulls
Denver, CO 554,636 1986 YES
Portland, OR 529,121 1986 NO
Fact: A city without breed specific legislation (Portland) has had NO fatal dog attacks after 1986.
Fact: A city with breed specific legislation (Denver) has had a fatal dog attack (non-Pit bull) after 1986.
In a major blow to proponents of BSL policies, Holland has lifted its ban on pit bulls!
On Monday, June 9, the Dutch Minister of Agriculture, Gerda Verburg, announced to the parliament that the rule banning pit bulls in the Netherlands would be lifted. After fifteen years, it has been found that the ban has been ineffective.
This represents a major victory for European animal advocates who have been opposing this breed specific legislation!
The lifting of the ban came on the advice of a committee that had been formed to re-consider the policy.
The ban had been imposed in 1993, as a reaction to the killing of three children by dogs. However, as Gerda Verburg, pointed out, there has been no decrease in the number of biting incidents during the fifteen years in which the ban has been in place.
So the ban seems not to have served the purpose for which it was designed.
elenechos: YR DOIN IT RONG!
Let me conclude by saying that the linked-to article whose second paragraph says "But even after 17 years there were two briefs periods of nonenforcement during legal challenges the ordinance hasn't produced any solid answers about the ban's effectiveness" has failed to convince me that pit bull bans work.
Not just me. It has also failed to convince every major animal welfare and veterinary organization. Which is a clue.
if you actually read the New Zealand story about the dog biting part of the boys' arm...
...you would've read that the woman was feeding her TIED UP dog. The boy wandered where the dog was eating. It doesn't take a major brain surgeon to understand that the dog was just trying to take competition out of his dog bowl.
Why was the dog chained up?
Why was the young person near the dog?
Human fault 1
Dog fault 0
Ya can find my other comments http://doglinks.blogspot.com/
It's your blog, and you're entitled to your opinion, but I have a problem with your arguments (which doesn't happen often).
It seems to me that all or most of the evidence you post to support a pit-bull ban are news stories about pit bulls attacking people. Do you have any actual statistics on dog attacks? How many dog attacks are there a year? How many are unprovoked? How many attacks are by pit bulls? Is the percentage of attacks by pit bull higher than the percentage of dogs who are pit bulls?
If you are going to advocate passing these bans, I would like to see something other than anecdotal evidence that demonstrates that pit bulls are more dangerous than other dogs.
Comments Closed
Comments are closed on this post.