Hiking Adventures at Beaverdam Park

Drew and I went hiking today at Beaverdam Park. The weather was supernice, so of course we needed to go wander around outside for awhile. It’s located near the Chesapeake Bay, and the drive there was a bit over an hour. We did the loop trail around the lake in a backwards C kinda shape, which is kind of like a figure 8 bent in the middle, with the trail crisscrossing over itself at random points. The furthest point out is a grassy peninsula that was covered with seagulls, and then simply covered with feathers after we walked out onto it. The view is rather nice, as you’re in the middle of a large lake and it is very blue and shiny. The hike is about 6 miles, and it took us 3 hours to do it, including time for lunch. Depending on your strategic eating location, there will be ducks and seagulls that might appreciate that sandwich more then you do, especially if it is a sandwich made of fish guts. Mine was turkey, however, so I’m not completely sure on that last part. In any case, it’s a really nice park, and I highly recommend it.

Javascript Ramblings, Etc.

So I’ve got this textbox that you can expand and contract, because of this the textbox is created by javascript rather then by html. I decided I wanted some BBcode capabilities, so I found a script that was similar to what I needed and made some snazzy images to go with it. It works fine as a separate entity, but does absolutely nothing when added to where I need it to go. Like, you click a little icon and it should place ‘[b][/b]’ into the textbox, but since the textbox is created by javascript, the BBcode javascript can’t figure out what to do. So nothing happens. And now I’ve got to figure out how to combine the two separate scripts, I guess, as I can see no other way around it. I think javascript is a pain, and I’m fairly clueless when it comes to working with classes, so I’ll see how this goes. My normal solution for such things is to google search until I can find a similar instance of my problem to work off of, however in this case I think the problem is so particular that I’d be wasting time trying to google for answers. So instead, I’m posting here wasting time! Actually, it’s at times like this when I most miss having a a technical work environment, as this is the sort of thing where the ideal situation would be to have someone with another brain to lean over my shoulder as I point stuff out. Oh well, it’s a learning experience, in any case.

In other news, I bought a copy of the first Twilight book off someone from Craigslist. I’m super excited to read it. I’ve heard that it’s cheesy and not necessarily what you’d call ‘good’, but I’ve also heard that it’s addictive in a similar way that reading Harry Potter was addictive, so thusly I’m all about giving it a go.

Misc. Viewings and Updates

Tonight, Carolyn and I started watching Freaks and Geeks. It was good fun, and I am looking forward to watching the next disk. This is the 4th series: we started with Perfect Strangers, then My So-Called Life, then Fraggle Rock. We had to fast forward through godawful amounts of singing on the last one. There’s a reason this stuff is targeted at 6 year olds, though, I suppose.

I got a super sweet mini-tripod, it looks like an alien hand! Photo-taking shall be much simpler and less precarious from here on out.

It was so nice out today. Tomorrow it looks to be around 60 for the high again, and then we (hopefully) get snow the next day. This works for me, as I am quite happy alternating between 60 degree weather and snow.

The other day I was attempting to make soup. The few times I’ve tried (and I mean actually make soup, not just dump out a can), I’ve usually failed miserably. It came out ok this time, but I made the bright decision to spear a piece of turkey and taste it, neglecting to realise that a few seconds of blowing would probably not change the fact that it just came out of scalding water. D’oh! In any case, I’ve got a lovely scab in the middle of my bottom lip now, good times!

Fishie Picture!

I heart fishes. And sometimes, I realise I should be flexing the ole artistic skills. And thusly, I’ll paint me some fishes.

fishes!

I’m interested in finding some more art contests of the sort that actually have a theme you have to work with. There’s bunches of regular art contests out there, of the whole ‘submit something that is art and someone will jury it’ type, but I’m not too much of a fan, just too subjective. Guess it’s just the illustrator in me, but I prefer a theme to work with. In any case, I decided to look around the internets for some contests today and ended up being entirely too late for my own good. There was a contest to make poster art about a few different political issues (health care, etc), but alas, the deadline was before the inauguration. Also, I stumbled across a Pabst Blue Ribbon art contest. The deadline is tomorrow night, and that does not give me nearly enough time to slap together a contest-winning piece, especially after having seen the detail put into past year’s winners. There is, however, a poetry category, so if I can figure out a poem that has to do with PBR in the next 24 hours, maybe I’ll go for that one.

Books, Games, and Babble

There’s a list floating about of the 1000 novels everyone must read, put forth by The Guardian. I scrolled through the entire thing and counted, I’ve apparently read about 58. Only 942 to go!

So this is fun for about 5 minutes: It’s a text adventure version of Guitar Hero!

I’ve started reading The House of the Spirits by Isabel Allende, which is good so far. I’ve read two of her other books, and enjoyed them. I’ve been looking for some good historical fiction and she has satiated my need.

I recently finished reading Female Chauvinist Pigs by Ariel Levy, which has helped me to understand why the heck there are all these straight women that want to go to strip clubs with ladies undressing, amongst other things. The research was more anecdotal and less statistically-based, but the observations the book makes are rather interesting.

Drew and I have been trying to get our Hike on lately, as there’s not much else to do when it’s this cold out. We hit Lake Anna State Park this past weekend, saw some people on horsies and got some free 7th Day Adventist book which was entertaining for about 5 minutes. Sparks and hiking go great together, I should mention. Next time I’m at Kroger, I’ll need to check and see if they’ve sold out of all the caffeinated Sparks by now, if not I might have to add a bit more to the ole stockpile.

Oh yeah, and I made chocolate chip cookies that are purple. Purple is a very appropriate color for cookies!

Land fish and sea kittens

So apparently PETA is trying to rename fish ‘sea kittens’, under the guise that fish get a bad rap and need a new name so people think they’re cuter. This is crazy talk. Fish are cuter then cats any day. I would hug a fish if given the opportunity. I try to, on a regular basis, when presented with a pond full of catfish. They seem to dislike this, however, and I generally end up with water in the face instead.

In any case, I’m going to start referring to our cats as ‘land fish’.

Whereupon I complain about the horrible pain in my abdomen

I really hate cramps.

There are multiple ways of dealing with them. And by ‘multiple’, I mean 3. The first is more of a ‘suck it up and accept the pain’ sort of thing. It doesn’t get me too far. I really hate taking painkillers on a regular basis just on general principle, but sometimes those babies are just necessary. Which brings me to the second way of dealing. This involving downing 2-3 advil every 3-4 hours, and just being a bit dopey and hazy all day. I really hate how painkillers always make me like that. In any case, I usually stick to that method for most months. Occasionally, if the pain is really bad, I’ll kick it up a notch and pull out one of those muscle relaxers from when I got hit by that car a year or so ago. Problem with those things is that eventually the cramps go away, but I’m still dopey and completely out of it. Just not too practical.

And thus comes the last method. It’s called rum. Kills pain, and is quite distracting. So distracting, in fact, that it causes me to write posts about menstrual cramps when it’s quite past my bedtime. D’oh!

Ascii Stereogram Maker

I heart fishI heart fishI heart fishI heart fishI heart fishI heart fi
==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_
I heart fishI heart fishI heart fishI heart fishI heart fishI heart fi
==):^{} (_()==)1^{} (_()==)1^{} (_()==)1^{} (_()==)1^{} (_()==)1^{} (_
I heart fishI hart %fishI har %fishI har %fUishI har %fUishI har %fUis
==):^{} (_()==):^} (_F()==)^} (_F()==)^} (_F(D)==)^} (_F(D)==)^} (_F(D
I heart fishI heat fishI heat fishI heagt fshI bheagt fshI bheagt fshI
==):^{} (_()==):^{}(_()==):^{}(_()==):^a{}(()==):E^a{}(()==):E^a{}(()=
I heart fishI heart fshI heart fshI heart fshI hear+t fshI hear+t fshI
==):^{} (_()==):^{} (()==):^{} (()==):^{} (()==):^{U} (()==):^{U} (()=
I heart fishI heartfishI heartfishI heartofisI he+artofisI he+artofisI
==):^{} (_()==):^} (_()==):^} (_()==):^} $(_()==):^} $(_()==):^} $(_()
I heart fishI heat fi3shI hat fi3shI hat fi3shI h9at fi3shI h9at fi3sh
==):^{} (_()==)^{} J(_()==)^{} (_()==)^{} (_()=r=)^{} (_()=r=)^{} (_()
I heart fishI hdart fishI hdart fishI hdart fishI hdart fishI hdart fi
==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_
I heart fishI heart fishI heart fishI heart fishI heart fishI heart fi
==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_
I heart fishI heart fishI heart fishI heart fishI heart fishI heart fi
==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_()==):^{} (_

This stereogram was made with the Ascii Stereogram Maker at ptocheia.net


I’d found an ascii stereogram maker on the web a little while back, and I’d really wanted to try replicating it. I’d already been playing around in Photoshop with imaged based stereograms, just to get the concept down, and that worked more or less ok. For flat images with depth levels occuring in steps, mind you, I’m still not sure of how to create gradiated depth like you see in Magic Eye pictures. I know there’s programs out there that’ll do it, but I have no idea how to replicate that manually.

First, I needed a giant block of repeating ascii characters. Easy enough, the user inputs 1 to 4 strings of characters from which the program generates the giant ascii character block. Only from 9 to 15 characters is allowed per string, as that seems to me to be the min and max boundaries for the distance one’s eyes feel comfortable crossing. So once this block is created, I copied and pasted chunks into my text editor (go Vim!) to figure out how to make this work. With images, you essentially chop out the shape you want and move it over a few spaces. This is done with ascii by adding and removing characters. In a string of 1234567890, you could remove the 2, leaving 134567890, to have the shape start there. To end the shape, you add a completely new character. So, to end your tiny shape a few characters later, you might do 134567S890. One important thing: when the 2 is removed, it is removed permanently, and when the S is added, it is also added permanently. So a longer string, with this shape in the middle, would look like 1234567890134567S90134567S890. Or, to make a more visual example, it would look like this:


12345678901234567890123456789012345678901234567890
12345678901234567890134567S890134567S890134567S890
12345678901234567890134567S890134567S890134567S890
12345678901234567890134567S890134567S890134567S890
12345678901234567890123456789012345678901234567890

You should be able to see a small box floating in the center. When you blur your eyes together, the majority of the numbers should overlap and still appear as that number. The floating box starts at the point where the 2 is first removed. When your eyes are blurred, there will be a 3 that overlaps the previous 2, due to the 2’s removal. The 2 characters not aligning together creates a visual dissonance, which causes the subsequent characters to jump out (or jump in, depending on how you’re looking at the depth illusion). This new pattern, with the 2 gone, will repeat until the shape ends, when the S gets added. The S tries overlapping with the 7, creating more visual dissonance, ending the shape. This also reverts the string of numbers to it’s original length, allowing them to match up with the other non-repeating rows. Leaving the end character out still leaves the illusion of depth, it just continues until the end of the chunk of characters, like this:


12345678901234567890123456789012345678901234567890
12345678901234567890134567890134567890134567890123
12345678901234567890134567890134567890134567890123
12345678901234567890134567890134567890134567890123
12345678901234567890123456789012345678901234567890

You can move around the start and end characters for each line of text to create more interesting shapes. A shape can also start and stop multiple times on the same line. If you have the sort of eyes that can take it, you can make a shape by blurring your eyes and manually changing the characters in your text editor. This will cause headaches after not too long, though!


123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345689012345689W012345689W012345689W01
12345678901234567890123467801234678A012#34678A012#34678A012#
12345678901234567890124567890124567890124X567890124X56789012
123456789012345678901234567890123456789012345678901234567890

The next problem was figuring out how to do this from a shape created from checkboxes. All of the checkboxes are named ‘boxes[]’ and each of their values is based on it’s location in the grid. I.E., if the checkbox valued ‘6_13’ is checked, then that means the 13th character in the 6th row will be part of a shape.

A really long string is produced for each character string that it submitted. It’s extra long to accommodate for the fact that it might get shortened a bit, depending on how many shapes get added per row and the length of that shape. These strings get used in order, this order repeating until all of the rows have been created. For this program, I used 20 rows. A new instance of each string is used for new rows, so that changes made to the last instance of that string aren’t carried over.

The key to translating the checkboxes to a stereogram is the fact that I only need to pay attention to the starting points and ending points of a shape for each row. To check for when a shape starts, I just look to see if the current box is checked and, if so, if the box previous to the current is unchecked. If so, a character gets removed at that point, as well as for the rest of the instance of that long string. To check for when a shape ends, I look to see if the current box is checked, and if so, check if the following box is unchecked. If this is the case, a new character gets inserted at the point in the string where the following box would be located. This must happen for the location of the next box, as the current box marks the last position of the current shape. This also prevents a problematic situation from arising when only one box is checked, as, when the pointer is on the location of that one box, it would represent both the start and the end of that shape. There needs to be some set of character(s) in the string between when a character is removed and when a new character is inserted, else that small shape won’t exist on the stereogram.

It’s also important to keep any preexisting characters in a string from being used as the inserted character at the end of a shape. If there are too many duplicate characters, it becomes harder on the eyes to distinguish patterns, which can break a more complex ascii stereogram.

I should mention that it took me a bit of time to come to the solution that I did. My first attempt involved just storing the original 9-15 character strings in multidimensional arrays (i.e. $mywords[word][letter]) and doing a lot of looping. This got complicated when I had to figure out what to do if I needed to remove a character but was at the end of the array, etc. as well as length issues. The inane logic eventually forced my brain to think of the much easier solution of chucking the multidimensional array for the much simpler $mywords[word], and just dealing with strings.

I made a stripped down version of the code, if anyone feels like seeing how I did it or trying to implement other things with it. Here’s the input and output page, zipped (or ‘rarred’, rather). I left out anything having to do with color in the stripped-down version, as that’s just window dressing. The widget I used for selecting color is located here, if anyone is interested. I had given thought to assigning a separate color to each character, just to see how it would look. but never got around to actually trying that.