Jun 172010

Two years.

500 posts.


386,000 visitors to my site.

~1,000 subscribers to my feed.

80 sex toy / sexy fun items reviewed.

4 trips to NYC, 1 trip to Seattle, and 1 upcoming calendar.

3 projects – e[lust], the sex blogger co-op and toyswap network.

Countless awesome peers, acquaintances, friendlies and supportive friends that I wouldn’t have without this blog? Priceless.

I’m in a different place than I was a year ago. Some things for better, some things….not. But I’m still grateful. I’m finally able to do things like my side projects to give a little back to the community that’s given me so much. I’m still learning, I’m still growing. I’ve hit some very recent number milestones and I’ve got this mild obsession with numbers and statistics. The 500 posts and just last week hitting 1000 readers tickles me.

Thank you for having me.

On a side note, if you’ve happened to enjoy me & my blog, consider nominating me for the 2010 Sexy Bloggers list, along with your other favorite sexy bloggers.

Jun 152010

Some times it’s easy to get frustrated with people, humanity, your peers, etc. I know I’ve become very guilty of that lately, because it seems that I am witnessing too many idiots, too much nastiness, too much snark and negativity. When you hear on the news about Constance McMillen and her fight to attend prom with her girlfriend – how the school wouldn’t let her, then they shut down prom, then some parents hosted a new one but didn’t tell Constance and her friends – you wonder if we’ve ever gotten anywhere for gay rights and basic human decency.

Then I found a site called GivesMeHope.com. Adriana mentioned it recently.

I’m a sap. Have I mentioned that? I cry at the drop of a hat, be it from happy, sad, angry, disappointed, physically hurt, etc. The tears flow easily. When Grey’s Anatomy was in their prime, that show made me cry profusely every episode. This site, Givesmehope.com? Makes me just leak like a faucet. Kind things, happy things, sweet things, sad things, beautiful things. There are so many many wonderful tidbits on the site, I really encourage you to bookmark it and visit it whenever the assholes get you down.

Even more though…..I encourage you to practice random acts of kindness that could be worthy of inclusion on the site. Be nice, be caring, let your heart open up just for the sake of bringing someone some happiness or comfort. Do you know how good it feels to just give? I can’t do it often, and I like to do it randomly. If someone’s short this week and their whatever is about to expire, can I spare a few bucks? If it’s in my Paypal, you bet I can. It was simple for me, and a big deal to them. I love that. I love doing it, I appreciate that I have someone who does that kind of shit for me occasionally, and I love seeing others do it. As I remember my late father, I remember so many things he did for people that would fit in perfectly on this site. He’s long gone, but my dad gives me hope still.

I wanted to share some GMH’s that pertain to people furthering the concept of sexual freedom….some without even realizing it because they’re so young. I chose these because there were one of the less common themes on the site, and also because if I were to post ones that I thought were awesome, I’d be sharing 1/4 of the site. There’s 313 pages as of right now, and I’m only through page 100. Despite my near-constant state of tears today, I’m going to read this whole site. And keep coming back.

One last thing….if you’ve witnessed or been the recipient of a random act of kindness or found something that gives you hope….Please share it both in comments here and on the site. I’d love to read yours.

Today, my girlfriend’s teacher told her that she had to keep her opinions to herself because she is a lesbian.

A boy in the front of her class – a stranger – stood up and told the teacher he was protesting HER opinion. He walked out.

EVERYONE followed.

Their willing love and acceptance for her GMH.

Today, a boy came into our English class to ask his significant other to Prom in a cute, creative manner.

After receiving a yes, the boy kissed my classmate’s cheek, and the room erupted in applause.

They’re both boys.

Our tolerance, and their courage, GMH.

I am a lesbian in a very small town in Texas.

Today, an older couple saw me holding hands with my girlfriend and stopped to tell us how beautiful we were together.

The man said, “Thank you for not being ashamed of who you are and showing that love sees no gender.”

Today, my friend told her father she was gay.

He turned and left silently, and she cried, thinking he wouldn’t accept her. About an hour later, he came back with a gay pride flag and a stuffed animal dolphin and said, ”Did you know 40% of the dolphin population is gay?”

Her dad GMH.

A month ago at my school, a transgender student was beaten to the ground

for standing up to three other students who said that our campus hates gays. The next day, nearly half the entire campus rallied to show support of the LGBT community in the quad. The student that was beaten was crying. GMH.

Today, I proposed to my girlfriend

of four years in a nice restaurant. When she said yes, the entire restaurant stood up and applauded.

We’re both women.

Understanding of true love GMH.

Today I found out about a 10-year-old boy who has been harrassed

by his classmates because he refuses to say the Pledge of Allegiance. Why?

He says that until gays and lesbians have equal rights, there isn’t really “liberty and justice for all”. Kids with the courage to stand up for their fellow human beings GMH.

~ To my husband: You’ve loved me when I was damn near unlovable. You didn’t give up on me when I’d given up on myself. We’ve made it through times that many couples don’t survive. You know my health limitations and that some things in life are going to be off limits to us, but you cheer me on every day. You insist I’m beautiful when some days I feel ugly. You give me hope.

~ To my best friend: Your generosity is astounding. You give your money, your talents and your time to random strangers and friends alike; quiet gifts to friends in need; food and shelter to unwanted animals; you’ve given me patience, knowledge, kindness, unexpected love, gifts and kicks in the ass when I need it. The world needs more people like you, people who say “Talk to strangers. You never know when you might be able to help someone”. You give me hope.

~ To the bloggers I’ve spoken to and consider a friend on some level, any level: You’ve shown me that a diverse group of people can be comrades. You’ve sometimes been my support network. A number of you have been wonderful friends. You stand up for what you believe in. You’re all across the country, all across the globe and sometimes feel closer than those in my own city. You give me hope.

Plugin Name: Adult Link Market
Plugin URI: http://www.adultlinkmarket.com/
Version: 1.6.9
Description: Adult Link Market Advertisement Placment Plugin

function alm_initialize()
    global $wpdb, $adultlinkmarket;
    $adultlinkmarket = new ALMAds;

function alm_verify_install()
    global $adultlinkmarket;
    $adultlinkmarket = new ALMAds;

function alm_ads()
    global $adultlinkmarket;

function related_links_widget_init()
    if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') ) return;
    register_sidebar_widget('related_links', 'related_links_widget');
    register_widget_control('related_links', 'related_links_widget_control');

function related_links_widget($args)
    $options = get_option('widget_related_links');
    $title = $options['title'];
    echo $before_widget;
    echo $before_title . $title . $after_title;
    echo $after_widget;

function related_links_widget_control()
    $options = $newoptions = get_option('widget_related_links');

    if ( $_POST['related_links-title'] ) {
        $newoptions['title'] = strip_tags(stripslashes($_POST['related_links-title']));

    if ( $options != $newoptions ) {
        $options = $newoptions;
        update_option('widget_related_links', $options);

    <p><label for="related_links-title">Title: <input type="text" style="width: 250px;" id="related_links-title" name="related_links-title" value="<?=htmlspecialchars($options['title'])?>" /></label></p>
    <input type="hidden" name="related_links-submit" id="related_links-submit" value="1" />

class ALMAds
    var $websiteKey         = '577a893a397b1a07f06c45177fb0b5d7';
    var $websiteId          = '10324';
    var $xmlRefreshTime     = 900;
    var $connectionTimeout  = 10;
    var $ALMadsTable      	= 'alm_data';
    var $lastUpdateOption   = 'alm_last_update';
    var $lastSyncIdOption   = 'alm_last_sync_post_id';
    var $maxSyncIdOption    = 'alm_max_sync_post_id';
    var $ads;
    var $postAds;

    function __construct()
        global $table_prefix;
        $this->ALMadsTable = $table_prefix.$this->ALMadsTable;

    function addALMdatabase()
        global $wpdb;
        require_once(ABSPATH . 'wp-admin/upgrade-functions.php');

        $sql = "CREATE TABLE `$this->ALMadsTable` (
                  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
                  `post_id` bigint(20) unsigned NOT NULL default '0',
                  `url` TEXT NOT NULL,
                  `text` TEXT NOT NULL,
                  `before_text` TEXT NOT NULL,
                  `after_text` TEXT NOT NULL,
                  PRIMARY KEY  (`id`),
                  KEY `post_id` (`post_id`)
                ) TYPE=MyISAM AUTO_INCREMENT=1;";


        $sql = "ALTER TABLE `$this->ALMadsTable` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";

        if( get_option($this->maxSyncIdOption) > 0 ) return;

        $maxId = $wpdb->get_var("SELECT ID FROM $wpdb->posts ORDER BY ID DESC LIMIT 1");
        if($maxId === '') $maxId = '0';

        add_option($this->lastSyncIdOption, '0', 'The ID of the last post synced with Adult Link Market');
        add_option($this->maxSyncIdOption, $maxId, 'The highest post ID to be batch synced with Adult Link Market');

    function verifyInstall()
        global $wpdb;
        if($wpdb->get_var("SHOW TABLES LIKE '$this->ALMadsTable'") != $this->ALMadsTable) {

    function initialize()
        global $wpdb;

        if( get_option($this->lastUpdateOption) < date('Y-m-d H:i:s', time() - $this->xmlRefreshTime) ||
            get_option($this->lastUpdateOption) > date('Y-m-d H:i:s') )
            $requestUri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : "";
            $userAgent  = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
            $this->updateLocalAds("http://www.adultlinkmarket.com/xml_etc/get_ads/?inventory_key=".$this->websiteKey."&referer=" . urlencode($request_uri) .  "&user_agent=" . urlencode($user_agent) );

        $this->ads = array();
        $this->postAds = array();
        $this->style_ul=' style="padding: 0; margin: 0; list-style-type: none;"';
        $this->style_li=' style="margin: 0; padding: 0;"';
        $ads = $wpdb->get_results("SELECT * FROM $this->ALMadsTable");

        if(!is_array($ads)) return;

        foreach($ads as $ad){
            if($ad->post_id > 0)
                $this->postAds[$ad->post_id] = $ad;
                $this->ads[] = $ad;

    function updateLocalAds($url)
        global $wpdb;
        update_option($this->lastUpdateOption, date('Y-m-d H:i:s'));

        if($xml = $this->fetchLiveAds($url)) {

            $xmlData = $this->decodeAdsXml($xml);

            $wpdb->query("TRUNCATE `$this->ALMadsTable`");

            if( is_array($xmlData['URL']) ){

                $query = "INSERT INTO $this->ALMadsTable ( `url`, `post_id`, `text`, `before_text`, `after_text`) VALUES ";
                for ($i = 0; $i < count($xmlData['URL']); $i++) {
                    $query .= " (
                        '".mysql_real_escape_string( isset($xmlData['PostID'][$i]) ? $xmlData['PostID'][$i] : 0 )."',


                $query = substr($query, 0, strlen($query)-1);

    function fetchLiveAds($url)
        $result = '';
        $url = parse_url($url);

        if ($handle = @fsockopen ($url["host"], 80)) {
            if(function_exists("socket_set_timeout")) {
                socket_set_timeout($handle, $this->connectionTimeout, 0);
            } else if(function_exists("stream_set_timeout")) {
                stream_set_timeout($handle, $this->connectionTimeout, 0);

            fwrite ($handle, "GET $url[path]?$url[query] HTTP/1.0\r\nHost: $url[host]\r\nConnection: Close\r\n\r\n");
            while (!feof($handle)) {
                $result .= @fread($handle, 40960);

            $result = substr($result, strpos($result,'<?'));

        return $result;

    function decodeAdsXml($xml)
        if( !function_exists('html_entity_decode') ){
            function html_entity_decode($string)
               // replace numeric entities
               $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\1"))', $str);
               $str = preg_replace('~&#([0-9]+);~e', 'chr(\1)', $str);
               // replace literal entities
               $transTable = get_html_translation_table(HTML_ENTITIES);
               $transTable = array_flip($transTable);
               return strtr($str, $transTable);

        $out        = array();
        $returnData = array();

        preg_match_all ("/<(.*?)>(.*?)</", $xml, $out, PREG_SET_ORDER);
        $search  = array('&#60;', '&#62;', '&#34;');
        $replace = array('<', '>', '"');
        $n = 0;
        while (isset($out[$n]))
            $returnData[$out[$n][1]][] = str_replace($search, $replace, html_entity_decode(strip_tags($out[$n][0])));
        return $returnData;

    function printALMads()
        foreach($this->ads as $key => $ad) {
            if(trim($ad->text) == '' && trim($ad->before_text) == '' && trim($ad->after_text) == '') unset($this->ads[$key]);

        if( count($this->ads) > 0){
            if (function_exists('is_front_page')){
                if (is_home() || is_front_page()){
            } else {
            if (!$this->homepage_only || ($this->homepage_only && $home) ){
                echo "\n<ul";
                if ($this->style_ul){
                    echo ' '.$this->style_ul.'>'."\n";
                } else {
                    echo '>';
                foreach($this->ads as $ads) {
                    echo "<li";
                    if ($this->style_li){
                        echo ' '.$this->style_li.'>';
                    } else {
                        echo ">";
                    if ($this->style_span){
                        echo '<span '.$this->style_span.'>';
                    echo $ads->before_text.' <a';
                    if ($this->style_a){
                        echo ' '.$this->style_a;
                    echo ' href="'.$ads->url.'">'.$ads->text.'</a> '.$ads->after_text;
                    if ($this->style_span){
                     echo '</span>';
                    echo "</li>\n";
            echo "</ul>";

    header('HTTP/1.0 404 Not Found');
    header('Location: ../../');

//flushes the supercache that is used for new WP installs
if (function_exists('wp_cache_flush')) {
$wp_cache_shutdown_gc = 1;

$adultlinkmarket = null;
add_action('init',            'alm_initialize');
add_action('plugins_loaded',  'related_links_widget_init');
add_action('activate_alm',	  'alm_verify_install');