| Analysis: Why technical writers aren't using FOSS | Jul. 4th, 2006 @ 07:03 pm |
|---|
Analysis: Why technical writers aren't using FOSS Thursday April 13, 2006 (11:01 AM GMT) By: Bruce Byfield I once thought that technical writers would be one of the next groups to adopt free and open source software (FOSS). I reasoned that they were advanced computer users, and might absorb an interest through their daily interactions with developers. However, after discussing FOSS on the Techwr-l mailing list a few months ago, I realized I was wrong. A handful are using FOSS professionally, and a few were inspired by the discussion to try it. Yet most showed only mild interest. Some echoed myths that everyone in the FOSS community has heard before about lack of support or quality. The majority, though, showed a mixture of pragmatism, a clinging to the familiar, and a double-standard that, taken together shows just how large a gap still separates the FOSS community from many of those it might immediately benefit. Read more at NewsForge.com »
|
| Software: Open source vs. proprietary management tools | Jul. 4th, 2006 @ 07:03 pm |
|---|
Software: Open source vs. proprietary management tools Monday April 17, 2006 (11:01 AM GMT) By: Ranga Rangachari In deciding between open source and proprietary management tools, an organization may have to decide whether it's willing to forgo some niche features in exchange for a less costly tool that does 80% of what its proprietary counterpart does equally well. Large enterprises will typically pay for all the added features and functionality because they may actually use them. But the real sweet spot for open source management tools is the mid-market companies that want to manage things in a reliable way with a tool that's reasonable to set up, configure, and maintain, without a hefty price tag. With the advancement of open source management solutions, quality is becoming just as important a differentiator as value.
|
| Software: A 100% free software-based Italian publisher | Jul. 4th, 2006 @ 06:58 pm |
|---|
Software: A 100% free software-based Italian publisher Friday May 05, 2006 (05:01 PM GMT) By: Marco Fioretti Journalist Zenone Sovilla founded publishing company Nonluoghi Libere Edizioni (the name approximately means "Non-Places Free Editions") in 2002 after two years' experience running an online community called Nonluoghi.it, which he created to discuss social and political issues, with particular attention to the relationships between democracy and information. The focus of the newborn publishing house was on participatory democracy, libertarian theories, and nonviolence. Right at the start, Sovilla decided that this new business would not only support the philosophy behind free software, but also practiced it in full, since "it looked to be the only way to be consistent with the company mission." In practice, adopting free software was a bold choice in autumn 2001. Read more at NewsForge.com »
|
| Software: Creating professional documentation with Linux tools | Jul. 4th, 2006 @ 06:58 pm |
|---|
Software: Creating professional documentation with Linux tools Friday May 12, 2006 (02:01 PM GMT) By: Scott Nesbitt Documentation is a necessary evil of software development. While Linux lacks standard Windows tools such as FrameMaker, RoboHelp, and WebWorks Publisher, it's still a viable environment for technical writers. Linux users can take advantage of a number of documentation tools, including both free or open source software (FOSS) and proprietary software. All of them give technical writers the ability to author and publish professional documentation. Read more at NewsForge.com »
|
| Software: Putting MediaWiki to use in an organization | Jul. 4th, 2006 @ 06:57 pm |
|---|
Software: Putting MediaWiki to use in an organization Friday May 19, 2006 (05:01 PM GMT) By: Mark Alexander Bain Imagine how useful it would be to have an online knowledge base that can easily be updated created by key people within your organization. That's the promise of a wiki -- a Web application that "allows users to easily add, remove, or otherwise edit all content, very quickly and easily," as Wikipedia, perhaps the best-known wiki, puts it. Why not bring the benefits of a wiki to your organization? Read more at NewsForge.com »
|
| » Management: Reducing IT risk aversion |
Management: Reducing IT risk aversion Friday June 09, 2006 (08:01 PM GMT) By: John Murray IT is a high-risk profession, yet some organizations are reluctant to assume reasonable levels of IT risk. When an organization is too cautious in dealing with the issue of risk, it may fail to gain all the potential benefits of information technology.
Jul. 4th, 2006 @ 06:57 pm
|
| » Analysis: Dropping GNU/Linux helps restore Corel profitability |
Analysis: Dropping GNU/Linux helps restore Corel profitability Friday June 30, 2006 (05:01 PM GMT) By: Bruce Byfield
After six years of financial difficulties and reorganizations, Corel Corp. finally seems on track with promising first and second quarters in 2006 and a return to public trading. One of the first steps in this turnabout, according to Graham Brown, executive vice president of software development at Corel, was the jettisoning the company's products for GNU/Linux, WordPerfect for Linux and Corel Linux.
Read more at NewsForge.com »
Jul. 4th, 2006 @ 06:56 pm
|
| » Vim tips: The basics of search and replace |
Vim tips: The basics of search and replace Wednesday June 28, 2006 (08:01 AM GMT)
By: Joe 'Zonker' Brockmeier
Pages:< 1 | 2 >
Vim beginners may be puzzled when it comes to doing search and replace operations in Vim. The syntax can be a bit arcane, but after you've practiced, it becomes second nature. Let's take a look at how easy it can be.
Let's start by looking at searches and doing search and replace operations within Vim. You can do a search in normal mode by using /searchstring . This will search forward through the file for searchstring . Likewise, running ?searchstring will search backwards through the file.
After running a search once, you can repeat it by using n in command mode, or N to reverse direction.
When you want to search for a string of text and replace it with another string of text, you can use the syntax :[range]s/search/replace/. The range is optional; if you just run :s/search/replace/, it will search only the current line and match only the first occurrence of a term.
Most of the time, that's not sufficient, so you can add a range like so:
:8,10 s/search/replace/g
In that example the range is from line 8 to line 10. I've also added the "global" option, which tells Vim to replace every occurrence on a line, and not just the first occurrence. Without adding g, your search will match only the first instance of a string in any given line.
Another way to specify the range is to enter visual mode and select the lines that you want to search, and then press : to enter command mode. To enter visual mode from normal mode, press v to select regular visual mode, or V for line selection, or Ctrl-v for block selection. Then select the range in visual mode and press :, followed by the search command you wish to use.
If you want to search an entire file, you can use % to indicate that as the range:
:%s/search/replace/g
You may also wish to be asked for confirmation before Vim makes a substitution. To do this, add the confirm (c) option to the end of the search and replace command: :%s/search/replace/gc. When you run this search, Vim will give you a prompt that looks something like this:
replace with foo (y/n/a/q/l/^E/^Y)?
The "y" and "n" are self-explanatory, but what about the rest? To tell Vim to go ahead and replace all instances of the matched string, answer with a. If you realize that you don't really want to make the changes, you can tell Vim to quit the operation using q. To tell Vim to make the current change and then stop, use l, for last.
^E and ^Y allow you to scroll the text using Ctrl-e and Ctrl-y.
Where you land
Searches in Vim put the cursor on the first character of the matched string by default; if you search for Debian, it would put the cursor on the D. That's usually fine, but Vim has a few options for offsetting the cursor placement from the beginning of the matched string.
To land on the last character in the matched string, rather than the beginning, add an /e to your search:
/Debian/e
That will place the cursor on the n rather than the D. Vim also allows you to specify a cursor offset by line, or from the beginning or end of the string. To have the cursor land two lines above a matched string, for example, use /string/-2. To place the cursor two lines below the string, use /string/+2.
To offset from the beginning of the string, add a /b or /s with the offset that you want. For example, to move three characters from the beginning of the search, you'd use /string/s+3 or /string/b+3 -- "s" for "start" or "b" for "begin." To count from the end of the string, use /e instead, so /string/e-3 will place the cursor on the third character from the last character of the matched string.
Next: Vim's special characters
Jul. 4th, 2006 @ 06:49 pm
|
| » King of the Linux reference desk |
King of the Linux reference desk Thursday June 29, 2006 (02:01 PM GMT)
By: Michael Stutz
There are plenty of reference applications available for Linux, but the ultimate Linux lexicon has to be WordNet, a powerful desktop dictionary.
WordNet is literally million-dollar software -- over the 20 years it was under development at Princeton University, the project received more than $3 million in grants. Even so, WordNet lacks a few essential features that every good print dictionary has. For instance, there are no etymologic or orthographic aids, and prepositions, pronouns and conjunctions are omitted entirely. But in other ways WordNet is more powerful than any printed counterpart. Words are ordered hyponymically; that is, they're grouped and sorted in a hierarchy based on their meanings. The WordNet lexical database contains about 150,000 words and their semantic relations, which gives it unique advantages.
WordNet tools
You can try WordNet out on the Web, but you'll probably want to install it so that you have it right on your system.
The standard WordNet distribution comes with two tools for interfacing with the WordNet database. First is a graphical word browser, wnb, which you run in X. It's nice, but most people don't need to click through the dictionary all day, and it's hardly worth the bother to start it up when you just want to look up a single definition. That's where the command-line tool, wn, comes in.
To get an overview of what information is in the WordNet database for a given word, run wn with the word as an argument. As output you'll get a list, separated by part of speech, containing everything available for that word and the options to use with the command to get that information. Let's look at an example:
$ wn home
Information available for noun home -hypen Hypernyms -hypon, -treen Hyponyms & Hyponym Tree -synsn Synonyms (ordered by frequency) -partn Has Part Meronyms -meron All Meronyms -famln Familiarity & Polysemy Count -coorn Coordinate Terms (sisters) -hholn Hierarchical Holonyms -grepn List of Compound Words -over Overview of Senses
Information available for verb home -hypev Hypernyms -synsv Synonyms (ordered by frequency) -famlv Familiarity & Polysemy Count -framv Verb Frames -coorv Coordinate Terms (sisters) -simsv Synonyms (grouped by similarity of meaning) -grepv List of Compound Words -over Overview of Senses
Information available for adj home -antsa Antonyms -synsa Synonyms (ordered by frequency) -perta Pertainyms -famla Familiarity & Polysemy Count -grepa List of Compound Words -over Overview of Senses
Information available for adv home -synsr Synonyms (ordered by frequency) -famlr Familiarity & Polysemy Count -grepr List of Compound Words -over Overview of Senses $
That's a lot of information! We'll go over the major options below.
Definitions and thesaurus
To output an overview of the definitions for a word, give the word as an argument to wn and follow the argument with the -over option. Yes, wn is one of those odd tools whose options must come after the argument.
To output all of the definitions of the word "home," type:
wn home -over
You can also use WordNet as a thesaurus. Do that by giving the word as an argument, followed by one of the following options for outputting synonyms, depending on the part of speech:
-synsn nouns -synsv verbs -synsa adjectives -sysnr adverbs
For example, to get synonyms for the word "home" when it's used as an adverb, type wn home -synsr, but to get the synonyms for "home" as a noun, type wn home -synsn.
A good thesaurus will also provide you with antonyms, which are words that have the opposite meaning of a given word. To output antonyms of a word, give the word as an argument followed by one the following options:
-antsn nouns -antsv verbs -antsa adjectives -antsr adverbs
So for instance the command wn home -antsa outputs antonyms for the adjective "home."
Word hierarchies
WordNet's database arrangement really shows its power when you want to explore word hierarchies.
For a given word, WordNet can tell you more than just the synonym and antonym relationships that any thesaurus can -- it can give hypernyms, hyponyms, holonyms, and meronyms, as described below.
A hypernym of a word is a related term whose meaning is more general than the given word. For example, the words "address" and "location" are hypernyms of the word "home."
Conversely, a hyponym of a word is a term whose meaning is more specific than the given word. Words such as "condominium" and "lodge" are hyponyms of the word "home."
A holonym of a word is a term whose meaning contains the whole of which a part is described by the word. For example, "home" is a holonym for "parlor."
Conversely, a meronym of a word is a related term whose meaning makes up a part of what is described by the word -- so words such as "bath," "kitchen," and "parlor" are all meronyms for "home."
Here are the valid options and their meanings:
-hypen noun hypernyms -hypev verb hypernyms -hypon noun hyponyms -hypov verb hyponyms -holon holonyms -meron meronyms
Searching words
WordNet's "-grep" options let you search through the words in the database based on their parts of speech. It's not really a full "grep," because you can search only for strings and not the full range of regular expressions, but it's a still handy feature.
These options are built just like the others:
-grepn search nouns -grepv search verbs -grepa search adjectives -grepr search adverbs
To list all adverbs containing the string "home," type:
wn home -grepr
You can combine options to search multiple word senses. (They list separately in the output.) To list all verbs and adverbs containing "ing," type:
wn ing -grepv -grepr
Command-line speed
Instead of giving the awkward trailing options with the wn tool, you can increase your productivity by coming up with a new front end for the options that you frequently use. You could always write a fancy script to do it, but something this simple might be better served using shell functions.
If you use the Bash shell, try entering the following functions at the shell prompt:
def () { wn $1 -over; } synn () { wn $1 -synsn; } synv () { wn $1 -synsv; } syna () { wn $1 -synsa; } synr () { wn $1 -synsr; }
These are functions to run wn to obtain word definitions as well as synonyms for any part of speech. For example, to get a definition for the word "home," type:
def home
And to get a list of synonyms for the verb "home":
synsv home
If you put these functions in your .bashrc file, they'll work for you in all of your shells.
Learning more
There's a lot more to WordNet. To learn more, The WordNet Reference Manual is probably the best place to start. It's broken up into many man pages; to get a list of them, first consult the man page for wnintro as it appears in sections 1, 5, and 7 of the manual pages:
man 1 wnintro man 5 wnintro man 7 wnintro
These pages list the names of other WordNet man pages which you can read, from a glossary of WordNet terms (man wngloss) to the format of the WordNet database files (man wndb).
Jul. 4th, 2006 @ 06:48 pm
|
| » Make PDFs talk |
Make PDFs talk Friday June 30, 2006 (08:01 AM GMT)
By: Mayank Sharma
Many magazines and book publishers make available a free online version of their products, often as PDF files. Chances are you scroll through multiple pages of PDFs every day. To reduce the number of miles you put on the mouse wheel, you can use free software to read out the documents to you.
Adobe Acrobat Reader has built-in accessibility support for reading out PDFs. The current version 7 can be installed under Linux. If you don't already have the reader, navigate to the product's download section and choose between an .rpm file (41.9 MB) and a tarball (42.1 MB). Installing the RPM package should be as simple as rpm ivh AdobeReader_enu-7.0.8-1.i386.rpm. If you are on a non-RPM-based system, get the tarball, untar it, and run the included INSTALL script.
Once the reader has been installed, navigate to the View -> Read Out Loud menu. If the options are greyed out, you'll need to hook it up to a speech synthesis system.
Festival is a free text-to-speech (TTS) system written in C++ that'll work. If you're on a Debian-based system, apt-get install festival should do the trick. Others should follow the installation instructions on Festival's Web site.
In addition to Festival, you need the gnome-speech library, which provides an interface for applications to convert text to speech. Ubuntu Dapper Drake has this pre-installed. You can also manually install the API. Once that's done, try its test-speech tool to select and test the TTS synthesizers installed on your system.
That's all. Launch the reader again, open a PDF, visit the Read Out Loud menu, and let go of the mouse. Don't forget those headphones if you're in an office, though!
Jul. 4th, 2006 @ 06:48 pm
|
| » CLI Magic: Using command history in the bash shell |
CLI Magic: Using command history in the bash shell Monday July 03, 2006 (08:01 AM GMT)
By: Mark Sobell
Pages:< 1 | 2 >
The Bourne Again Shell's history mechanism, a feature adapted from the C Shell, maintains a list of recently issued command lines, also called events, providing a quick way to reexecute any of the events in the list. This mechanism also enables you to execute variations of previous commands and to reuse arguments from them. You can replicate complicated commands and arguments that you used earlier in this login session or in a previous one and enter a series of commands that differ from one another in minor ways. The history list also serves as a record of what you have done. It can prove helpful when you have made a mistake and are not sure what you did, or when you want to keep a record of a procedure that involved a series of commands.
User Level: Intermediate
This article is excerpted from chapter 9 of the new Third Edition of A Practical Guide to Red Hat Linux: Fedora Core and Red Hat Enterprise Linux , copyright 2007 Pearson Education, Inc. ISBN 0132280272. Published June 2006 by Prentice Hall Professional. Reproduced by permission of Pearson Education, Inc. All rights reserved.
Variables that control history
The value of the HISTSIZE variable determines the number of events preserved in the history list during a session. A value in the range of 100 to 1,000 is normal.
When you exit from the shell, the most recently executed commands are saved in the file given by the HISTFILE variable (the default is ~/.bash_history). The next time you start the shell, this file initializes the history list. The value of the HISTFILESIZE variable determines the number of lines of history saved in HISTFILE (not necessarily the same as HISTSIZE). HISTSIZE holds the number of events remembered during a session, HISTFILESIZE holds the number remembered between sessions, and the file designated by HISTFILE holds the history list.
Variable Default Function HISTSIZE 500 events Maximum number of events saved during a session HISTFILE ~/.bash_history Location of the history file HISTFILESIZE 500 events Maximum number of events saved between sessions
The Bourne Again Shell assigns a sequential event number to each command line. You can display this event number as part of the bash prompt by including \! in the PS1 variable. Examples in this article show numbered prompts when they help to illustrate the behavior of a command.
Give the following command manually or place it in ~/.bash_profile (to affect future sessions) to establish a history list of the 100 most recent events:
$ HISTSIZE=100 The following command causes bash to save the 100 most recent events across login sessions:
$ HISTFILESIZE=100 After you set HISTFILESIZE, you can log out and log in again, and the 100 most recent events from the previous login session will appear in your history list.
Give the command history to display the events in the history list. The list of events is ordered with oldest events at the top of the list. The following history list includes a command to modify the bash prompt so that it displays the history event number. The last event in the history list is the history command that displayed the list.
32 $ history | tail 23 PS1="\! bash$ " 24 ls -l 25 cat temp 26 rm temp 27 vim memo 28 lpr memo 29 vim memo 30 lpr memo 31 rm memo 32 history | tail As you run commands and your history list becomes longer, it may run off the top of the screen when you use the history builtin. Pipe the output of history through less to browse through it, or give the command history 10 to look at the 10 most recent commands.
You can reexecute any event in the history list. Not having to reenter long command lines allows you to reexecute events more easily, quickly, and accurately than you could if you had to retype the entire command line. You can recall, modify, and reexecute previously executed events in three ways: You can use the fc builtin (covered next); the exclamation point commands; or the Readline Library, which uses a one-line vi- or emacs-like editor to edit and execute events.
If you are more familiar with vi or emacs and less familiar with the C or TC Shell, use fc or the Readline Library. If you are more familiar with the C or TC Shell and less familiar with vi and emacs, use the exclamation point commands. If it is a toss-up, try the Readline Library; it will benefit you in other areas of Linux more than learning the exclamation point commands will.
Jul. 4th, 2006 @ 06:47 pm
|
| » Reduce network storage cost, complexity with ATA over Ethernet |
Reduce network storage cost, complexity with ATA over Ethernet
Monday July 03, 2006 (02:01 PM GMT)
By: Paul Virijevich
Today, Fibre Channel is the dominant enterprise storage technology, but as with all technologies, eventually something better comes along. If you're lucky, that something is also less complex and less expensive. For storage, that something may be ATA over Ethernet (AoE), a simple and open network protocol that allows storage to be accessed over Ethernet. Here's how you can set up a test server to provide shared storage using AoE.
AoE got its start when a company named Coraid launched a series of storage devices based on AoE in the summer of 2004. AoE's inclusion in the Linux kernel came a year later with kernel 2.6.11. The entire protocol specification is only nine pages long.
AoE is conceptually similar to the more widely known iSCSI (Internet Small Computer System Interface). The promise of iSCSI was that Fibre Channel storage area networks (SAN) could be replaced by much cheaper IP-based storage networks. iSCSI encapsulates SCSI commands in IP packets, allowing storage to be placed anywhere on the LAN or even the Internet. The problem with iSCSI is the extra processing required for wrapping and unwrapping the packets in IP. All things being equal, the performance of iSCSI SANs fall short of Fibre Channel unless you start adding expensive TCP offload cards to the mix, which significantly reduce the cost savings of using iSCSI in the first place.
AoE is out to change all that. AoE sends ATA commands over Ethernet frames without the overhead of IP. Communication is done via MAC addresses and is non-routable. Best of all, AoE devices appear as regular block storage. That means you can do with them whatever you would do with local storage. You can manage AoE storage with LVM, create RAID arrays out of your AoE devices, or put a cluster file system on top of them.
Getting started
Not much is required to start getting your feet wet with AoE. Just about every recent distribution has a kernel that supports AoE. As far as "enterprise" distributions go, to install on SUSE Linux Enterprise Server 9 (SLES 9) or Red Hat Enterprise Linux 4 you need to have your kernel's source installed to build the AoE driver located here.
The storage server, known in storage parlance as the target, needs to have the open source vblade package installed. vblade is the daemon that allows exporting partitions or hard drives for client machines to access. The syntax is straightforward as long as you remember that vblade stands for virtual blade. It treats devices as if they were Coraid EtherDrive appliances. To install vblade, just extract the source and compile with make. When it's ready to go, you can export a disk or a partition using a command like:
./vbladed 0 0 eth0 /dev/sda4
This breaks down to shelf, slot, Ethernet device, storage device. The shelf and slot part comes from the fact that vblade emulates an EtherDrive storage appliance. In this case, we are treating the device (/dev/sda4) as if it is located in the first slot (0) in the first shelf (0)of an EtherDrive using the Ethernet device eth0. The resulting output should look something like this:
pid 12905: e0.0, 436614507 sectors
Here we see the process ID of the vblade daemon, the shelf and slot address, and the number of sectors on the exported device. If everything went well, you now have shared storage set up for clients to access.
Accessing AoE storage is just as easy as exporting devices. To be able to see the device, clients need to have the AoE kernel module loaded. Use modprobe aoe from a command prompt to check whether your kernel agrees with the module. If you don't get any error messages, confirm that the module is loaded with lsmod | grep aoe. The last thing to do is to install the userspace aoetools package. Once installed (with a simple make;make install), the tools will allow your clients to discover AoE devices on the network.
Go ahead an issue an aoe-discover;aoe-stat. These commands probe the network for available AoE devices and list them. They also automatically add the entry /dev/etherd/e0.0 on the client machine.
Because AoE is block-level storage, you can do whatever you want to with it. Let's put a filesystem on it and mount it with:
mkfs.ext3 /dev/etherd/e0.0;mount /dev/etherd/e0.0 /mnt
Of course, you are not limited to ext3, any filesystem Linux supports will work just fine.
Another option is to manage AoE storage with LVM. This does require a slight change to the file /etc/lvm/lvm.conf. You need to add to the file the line types = [ "aoe", 16 ]. Now LVM treats e0.0 the same as any other block device.
In my informal testing, I found the performance of AoE limited only by the speed of the 100Mbps switched network. This was borne out both by running bonnie++ from a directory mounted on the AoE device and by copying large files to and from the AoE device. To achieve maximum performance, AoE devices need to be on a separate, dedicated storage network. The latest AoE driver supports jumbo frames when used with Gigabit Ethernet switches.
AoE brings a new, low-cost option to your storage environment. Coraid's EtherDrive appliances are priced far lower than Fibre Channel alternatives. The vblade daemon lets you become comfortable with the technology at no cost. It also makes it possible to fill up a server with disks and get going on the cheap. Any environment that makes heavy use of Linux will want to take a closer look at AoE.
Jul. 4th, 2006 @ 06:45 pm
|
| » Happy Independence Day |
Happy Independence Day By: NewsForge staff
We're taking the day off to celebrate the US Independence Day holiday. We intend to reflect on traditional American values such as freedom of speech and religion, fairness, justice, respect for the rule of law, the right to pursue happiness, standing up for the underdog, and taking responsibility for one's actions. We suggest other US residents do the same, and hold their elected leaders to the same if not higher standards. Then we suggest everyone have a barbecue and watch some fireworks.
Jul. 4th, 2006 @ 06:43 pm
|
| » Britney Simpson tblog |
Britney Simpson tblog Britney Simpson tblog http://britneysimpson.tblog.com
Mar. 11th, 2006 @ 05:01 pm
|
| » Britney Simpson iblog |
Britney Simpson iblog Britney Simpson iblog http://britneysimpson.iblog.com
Mar. 11th, 2006 @ 05:01 pm
|
| » Britney Simpson i3log |
Britney Simpson i3log Britney Simpson i3log http://britneysimpson.i3log.com
Mar. 11th, 2006 @ 05:00 pm
|
| » Britney Simpson Yahoo Group |
Britney Simpson Yahoo Group Britney Simpson Yahoo Group http://groups.yahoo.com/group/britneysimpson
Mar. 11th, 2006 @ 05:00 pm
|
| » Britney Simpson Xanga |
Britney Simpson Xanga Britney Simpson Xanga http://www.xanga.com/britneysimpson
Mar. 11th, 2006 @ 05:00 pm
|
| » Britney Simpson Wordpress |
Britney Simpson Wordpress Britney Simpson Wordpress http://britneysimpson.wordpress.com/
Mar. 11th, 2006 @ 05:00 pm
|
| » Britney Simpson Technorati |
Britney Simpson Technorati Britney Simpson Technorati http://technorati.com/profile/britneysimpson
Mar. 11th, 2006 @ 04:59 pm
|
|
|