I used to hate rollercoasters

Long story short... my mom brought me on "Runaway Train" in Disney World when I was 3 (which I don't remember, and didn't cause my fear of rollercoasters), I didn't go on another rollercoaster until I was 20 or so, and even then I was forced, so really I still didn't like them. Then I didn't go on another one until today! I was still a little nervous, but since I've been on them before (and practically the same ones, being it's the same park [Dorney Park in Allentown]), I knew I could take it... after I've had some coffee.

I know, I know. "What a panzy!". STFU!! The thing that always scared me were the screamers. Actually, if a car went down the main drop and no one screamed, I told myself that they were too terrified to scream at all, and I definitely wasn't going on that rollercoaster! I got used to sitting and waiting for my brothers and parents, out by the exit of the ride. Later I would find out that you have to scream, lest your stomach will exit your body through your mouth, or so it felt.

Well today, being in great company (shout out GG, TG and Neysa!!), I sorta was forced again, but it wasn't a third party doing the forcing. I just said "I'm going on rollercoasters today and it's gonna f@%@#ing rock. F#@$@ did I just say that?!?!" I was still incredibly uneasy about the first ride, which happened to be "Hydra: The Revenge". If you've never been... be! You start out, go down about a 3 inch slope, and you're going about 5MPH, then all the sudden you're upside down! At 5MPH! It's Dorney Park's way of getting a little extra on top of the price of admission. When I got off the ride I noticed a dime on my seat. One of the lucky ones that didn't land into the net below the initial twist. After that, the next 4 or so coasters were easy. We went on that then Lazer, then went back to the free fall (I can't do that..) since Neysa was arriving then. Neysa and Gia did the free fall. This is how that went:

GG: How long do they usually keep you up here before dropping you?
Neysa: Usually not too long
.0001 seconds later WHOOSH
All aboard the free fall: AAAAAAAAAAAAHHHHHHHHHHHHHH!!!

Eventually we made our way over to the Lazer again, and then the Comet (or whatever the wooden rollercoaster is called). Then we were determined to go on Steel Force. A mile later, we found the entrance. It's about 5 feet from the Lazer and Comet, but Tom didn't have his GPS with him. We found the Swan boats though.

At this point, it was about 300 degrees, and any water we had would evaporate as soon as it hit our lips. We had to do the log flume. Waiting in line, Gia and I were planning and scheming... "How can we do this? Do they allow 4 people on the boats?" ... "I think so!" ... "Oh look, they have 4 people!" ... "Oh but two of them are little kids"... "Ah there's one with 4 'bigger' people."... "Sweet! So we'll go shortest to tallest from front to back."... "Awesome, sounds like a plan!" The next flume comes, I hop in the back like I'm supposed to, being the tallest. Gia hops in right in front of me. Apparently, our brilliant plan wasn't communicated properly to Tom and Neysa since the chain was closed with them behind it, waiting for the next flume. Damnit! That was a good time though, I got soaked! I got soaked but not from the big drop.

Next, it was back to the Hydra for some more donations to the Dorney Park Feed the Workers Fund. They cleaned up on that ride. The next plan was for everyone to get their bathing suits on, except me of course... and head into the water park. Walking up in that direction, we noticed a ride that we hadn't yet donated to. It was "Talon", like an eagle, and you hang from the track, instead of riding on it.

Now having no fear, I was like "We have to ride that." Two volunteers, Neysa and Gia. Sweet. I sat in the middle. Neysa is an admitted screamer, Gia has a pretty strong set of lungs, but I was the loudest!! That ride was INSANE. The main thing about it is, from where we sat, towards the middle of the line, you can't see the track! Not even a little bit. So you have no idea what's coming. We were doing twists, corkscrews, and anything else that lunatic rollercoaster designers could throw at us. We started on an inverse loop (a loop, but you're on the bottom of the track since your feet hang down), and at the top, you twist. I screamed "What the F@#%@ was that?!?!" Gia will try to tell you other things I said, but she's lying :)

Phew. Long day! Well, that was only "a good portion" of it. We still had the water park to attend to! We entered, and Neysa said "I want to go on that". Everyone kept walking, I stopped and went in and we went on this inner tube / tube ride. First, I was fully clothed. Tan shorts (not a bathing suit), brown leather sandals, shirt. Luckily, I had emptied my pockets in the locker. We get to the top, and knowing that I rode in with Tom, and he has leather seats, I have to stay sorta dry. Basically, I can't submerge fully. Neysa goes into the tube and I heard her screaming for the whole minute before they let me in. I sit in the tube and I'm soaked, but still not fully submerged. My ass is though :) The guy says "Sir, I'm going to have to ask you to remove your sandals and hold on to them." Ok, fine. I lay them on my chest, and he gives me the "GO!!" signal. Now I find out why Neysa was screaming the whole time, other than her shameless admittance to being a screamer. Inside the tube is pitch black. There were no incredible surprises though, like 20 foot drops straight down or anything. Just a bunch of turns. I noticed that I've grown a lot since the last time I was on an inner tube, and if I sit the way I want to, my butt drags along, slowing me down to a crawl. This was unacceptable. So, I had to adjust my sitting style, by pushing my legs out and getting my ass off the ground! This would prove to be my downfall. After about a hundred turns in pitch black darkness, a light started to emerge about 30 feet away and a few feet below me. This is it, I thought. Time to stay dry! Sure thing, my tube hits the water in the pool and doesn't move, I fly off the tube and go completely under the water, now officially submerged. My sandals floated away like debris from a torpedoed cargo ship, evidence that something awful has happened here. I came up from the water and some little kid yelled "Dude that was AWESOME!!" Neysa's climbing out of the pool, looking back and laughing. It was surely a site! I am laughing now thinking back on it.

We went into the lazy river, but Tom, Gia and the other dude were waiting about 30 people ahead in line. It would be the last we would see of them. Neysa and I did one loop in the river, then hit the slides. They did 4 loops! Of course we didn't know that until we were leaving. Gia you should have come with us :) Later, our excuse was that we would climb to the top of different rides to see if we could see them anywhere. Obviously, we had to get down, so we just went down the slide rather than back down the steps :) We actually did end up seeing them from the top of the last ride we went on!

So, those were highlights from the day at Dorney Park. Good times everyone :) Let's do it again soon!

Vacre Tei Up and Running

To those people who responded "Hell will freeze over" to my "When my web game comes out, ..." poll a few weeks ago, I hope you have your mittens on! The temperature is dropping where you are! ;-)

Anyway, it's up. Just visit vacretei.org, register and wait! See, you have to wait if you register directly at the site. It builds suspense. Also, when you're inactive, you give the people who are playing a way to get more gold. When they run out, they can choose to activate the next person waiting. That might be you! To know for sure, you can log in, as an inactive user, and see how many people are ahead of you. If it says zero, then you won't have to wait long, depending on how many people are playing.

Visit it and read everything. I'm putting together a FAQ, based on questions that I have received one time. I'll also be writing answers to questions that haven't been asked yet, but that I can foresee people asking or wanting an answer to without having to ask. This will help people get around my style of website development. I'm no interface designer people! I write backend, server code. It's miraculous that the game is not a console app. That would be fun...

vt:>list
vt-- listing works
Photograph by Voodoo, 23 gold (id = 1)
Photograph by cotraveler, 25 gold (id = 2)
vt:>buy 2
buying work by cotraveler for 25 gold
you now have 65 gold, bank has 20305 gold
vt:>show 2
showing work 2
[ you own this work ]

(opening image viewer in background ... )
(image sent to client)

success.

vt:>end
logging out
Good bye!


So, be grateful. I'll be adding more. I have some strategic elements in there, but I want to add a ton. Not so it becomes confusing, but so that people can do what they really want to do. I have no ads on the site, I never planned on making any money on it, ever. Well, there was one time when I thought that people could get more gold by wiring actual money for me... like $1 gets 500 gold, but I then remembered that I don't want people to have to pay for this.

So sign up already!

Hello Ruby Universe

The last two days I jumped into Ruby. It's a programming language. It's pretty easy to use, although I have to get used to it since I went like 3 hours yesterday without being able to do anything! But it's just different.

I wrote a solution to the dining philosophers problem (it shows threading and synchronizing access to data using mutual exclusion in Ruby), which you can find if you go to my downloads and search for the label "ruby". Its output looks like this:

Socrates is thinking...
>>>p=Socrates:s=thinking:lh=None:rh=None:to_l=Utensil:to_r=Utensil
Plato is dining...
>>>p=Plato:s=dining:lh=Utensil:rh=Utensil:to_l=None:to_r=None
CC is thinking...
>>>p=CC:s=wants:thinking:lh=None:rh=None:to_l=None:to_r=Utensil
DD is thinking...
>>>p=DD:s=thinking:lh=None:rh=None:to_l=Utensil:to_r=Utensil
EE is thinking...
>>>p=EE:s=wants:thinking:lh=None:rh=None:to_l=Utensil:to_r=Utensil


It'll loop indefinitely. The philosophers will decide whether they want to think or dine, and then they'll do it if they can! See, there's 5 philosophers at the table, and only 5 utensils, one between each of them. So, only two can be eating at the same time, but two will only be eating at the same time if they're not right next to each other, and two want to eat at the same time.

Here's another loop. It shows what happens when a philosopher wants to eat but can't:

Socrates is dining...
>>>p=Socrates:s=dining:lh=Utensil:rh=Utensil:to_l=None:to_r=None
Plato is thinking...
>>>p=Plato:s=thinking:lh=None:rh=None:to_l=None:to_r=Utensil
CC is dining...
>>>p=CC:s=dining:lh=Utensil:rh=Utensil:to_l=None:to_r=None
DD wants to eat but can't (CC has Utensil <--> EE has None)
>>>p=DD:s=wants:dining:lh=None:rh=None:to_l=None:to_r=Utensil
EE wants to eat but can't (DD has None <--> Socrates has Utensil)
>>>p=EE:s=wants:dining:lh=None:rh=None:to_l=Utensil:to_r=None


Download ruby at ruby-lang and a whole bunch of other places if you want to play with it. It's a pretty decent language so far.

Configuration proxies are a beautiful thing

Don't ask me what that means, I have no idea. I just came up with it. Proxy seemed like a good term, but I'll explain how it works, and why they were necessary.

I wanted to have filters on "dumbweb" (Read about dumbweb here). You know, the software running over at stringed.org... Well, filters are a configurable item. Just read this to learn all about them. "dumbweb" is a completely separate project, and you can't go writing very specific filter configuration parsing code in there. But, you would want dumbweb to be able to use filters in such a way that it's easy to configure, in the same config file where you define dumbweb. Hence the need for "configuration proxies".

Basically, now, in my dumbweb configuration xml, I can just write what would be in the filter configuration file but into the dumbweb configuration for the data item (i.e. "Picture") and a filter will show up for that item on the list page. Here's the xml

  <form className="jtccom.domain.data.pictures.Picture" name="Picture" listed="true">
    <filter helpIcon="/images/helpicon.jpg">
      <fields>
        <field label="Album" name="PictureAlbumId" helpText="This is LONG overdue!!" />
        <field label="Labels" name="Labels" helpText="Search Labels" />
        <field label="# of Labels" name="Count(PictureId):PictureLabel" helpText="Find pictures with or without labels." />
      </fields>
    </filter>
    <operations>
      <operation name="edit" />
      <operation name="delete" />
      <operation name="add" />
      <operation name="view" />
    </operations>
  </form>


And basically what you see is the same as the filters on the Pictures, News and Downloads pages, only as a part of dumbweb. And those are configuration proxies. Configuration specifications that are used in the system but not in the current system, but the current system can... not load, but support or use the system that the proxy defines. So, dumb web configurations don't read the filter xml at all! It's read by the dumb filter system! It's neat. We can call this Configuration version 3. Read more about Configuration version 2 here, and that article links to version 1 if you're that interested.

Labels too big, had to do something...

First, here's the problem:



When you "subfilter" labels, all of them are returned and there's like a thousand of them.

Second, here's the solution:



And check out all this DOM scripting to accomplish that!

Pictures Labeled!!

This is different from the last one. I went through, for about 4 hours, painstakingly labeling each and every picture. It led me to a few conclusions:

1.) I take too many damn pictures of the same thing. I guess taking them isn't bad, but I don't have to upload 40 pictures of the Phillies game I went to a year ago. Then every picture gets the same labels "philadelphia, sports, phillies". It was very boring doing that.

2.) There has to be an easier way to label stuff.

3.) Labeling stuff sucks. I'm glad I'm done.

Also, I went ahead and got rid of download categories and replaced them with labels.

Labels are a centralized thing. If I create a label called "ducks" for example (there are pictures under that label!), then that label will show up as a choice for downloads and for pictures (and later news), whether or not there are downloads labeled "ducks" or pictures labeled "ducks". When you search the filter in downloads for labels like "duck" then "ducks" will show up. This will lead me to develop something cool in the future. Like, search a label and list anything that has that label, whether it's a download or a picture or an X or a Y. It will be pluggable.

If you want to see how I input labels, search pictures for the label "labels". Also you can search for "java" and "dev". Those two will give you a bunch, whereas "labels" will give you the four screens I took of "dumb web" and how it handles labels.

Pictures have labels

I decided to make everything have labels, and pictures are the first to be converted. There's more work to be done, but use the filter for most of your label needs. In fact, with the filter, there's really no more work to be done... I don't know, I'll probably think of something. So, now I have to go and add labels to all of my pictures... 226 of them.

But it took about a day to get the labels up, only because my data list that shows the pictures always goes back to the first record after I save a picture. It's pageable, and the first page was easy :) But after that, it goes back to the first page, so I have to keep track of what page the picture was on that I just added labels to. So I had to fix that. Now it'll keep go back to the last page you were on. That makes life easier. But isn't that what software development is supposed to do?

I've been hacking away at this site and my shared stuff (dumb, dumbweb, filter, etc, etc, etc) that I use on all my websites ever since I told my work that I won't be coming in anymore. Well, I actually just turned down the position offered to me, which was to do with VBScript, which I can't do. Not because I don't know it... it would just be a huge change in how I think when I program. If a language doesn't support standard object oriented features, then I'm f@#%@ed. I have a hammer and everything looks like a nail.

The other day I went to a User group meeting for Philly on Rails. I don't use rails or ruby, but I might start soon. Zatko said he'll play Dawn of War with me if I learn ruby and rails, so I have to since that's the best game ever, and I haven't played multiplayer yet. Actually, we have to play first then I'll learn Ruby. Jared went too. We were the bomb.

New Filter Features!!

First, notice the "Possible count" on the bottom right.

Then filter by this text exactly : Cigarettes and Carrot Juice

Then notice what it says. Cool huh?

Then, notice the help icon! I know they don't look great, I'm a n00b when it comes to CSS and DHTML. Plus, I hate Internet Explorer because I use the w3.org specs and they never work on IE. So, if you use IE, there's no support. Download a real browser.

But you're not a real programmer if you don't support IE!!

I'm a lazy programmer, as I've said many, many times. It might work... I did some standard checks, but haven't tested it. I'm on Linux and a Mac. No IE.

So that's it. I could go on explaining what I did but I'm not terribly proud of the count stuff. I did it and couldn't help but think I hacked it together. It's just not beautiful yet.

This year's trip to Lewes, DE

Awesome. I left around 7pm on Sunday night. As I pointed out before, my tape adapter(s) for my iPod is/are broken. I had no coffee, and no smokes, so I had to make three stops on the way. It would have been two but the stupid drug store I stopped at didn't have tape adapters... well, unless I wanted to pay $40 and also purchase a portable CD player that I would probably throw in the garbage on the way out of the store. I didn't want to do that. So, I got smokes at the first drug store. Luckily, directly down the road, on the way to Dunkin Donuts, there's a competing drug store that does much better business. I stopped there. They had it but it was locked up in the audio glass. I got the girl, who has been working there for three days, to come unlock it for me. She had no idea. I helped her though. $10. And it's a nice one too! My car would have spit out the other ones at least 6 times on the way to Lewes (a 2 hour trip) but it didn't spit this one out at all.

So, I made my way to Dunkin Donuts and got a huge coffee and left for Delaware.

As what always happens when I leave the house, it started to rain. Like, terrential downpour. I'm on 95, heading south, and I can't see a damn thing. I can't find my glasses either. I keep them around for such an occasion. It's getting dark out, and my windshield wipers just can't keep up with the rain and water from the cars in front of me hitting the windshield. I just kept an eye on the car's tail lights in front of me, since it was all I could see, and was well on my way. Almost. Having literally no view of anything except tail lights, I missed the exit. By like 20 miles. I damn near made it to Maryland before realizing it. SOB!! It's one of those weird things where I figured 95 South heads SOUTH, but here it twists west on route to Maryland before heading south through Baltimore. I figured I was fine just trucking along. Oh well. I got there at 10:30, also, since the traffic was thick due to no one being able to see anything but the tail lights in front of them. If an alien race came along and looked like tail lights, we all would have followed them into the bottom of a lake somewhere. Or to their space ship.

When I got to my parents' spaceship... I mean... condo in Lewes, everyone was ready for bed. Jeff and Bean came back and brought ice cream, ate it, then watched tv until they dozed off. They were surfing all day, that's one of the most exhausting activities anyone can partake in. I tried, it's much too intense. When everyone went to bed, I figured I better try also. I went into the bedroom, grabbed a book (The Bleachers by John Grisham), and would read it until I fell asleep. Problem is, I didn't fall asleep! I started it after watching a movie and a few shows, probably around 1:30 - 2:00. I finished the book at 5 in the morning! I might be tired the next day for golf.

I was tired for golf. Although I had about 6 hours of sleep, it was about 130 F and humid. The sun was beating down. We had carts luckily. The course we went to was normally a 9 hole course, but it was under construction, so there were only 7 holes available. We played around once and then played 4 more for 11 total. I played pretty well. It came down to me vs. my Dad again, and he won because I choked. I can't beat him ever! It was good, though, because I started off pulling the ball to the left. When that happens, I usually quit because I never have a way to cure it. But it was different yesterday. I figured out what causes me to pull the ball, and I fixed it by the 3rd hole. Then it was on.

This one hole was a ripoff. The hole was shortened, due to construction, from about 400 yards, to... I swear to God... 80 yards. The green was awful. I took out a pitching wedge and totally skied this thing. About 4 minutes later, it came down onto the green. I figured it would just plop and stick, but this thing bounced like it hit concrete and flew over the green. I was like "You bastard".

Later, we all sat on the back porch and I played guitar and everyone sang. Good times.

It's up!!

Thanks to my host working on Sundays (shout out Nexpoint), the game is up! Just visit Vacre Tei and sign up. Make sure to read the about and privacy policy things at the bottom first.

w00t.

That rocks. Of course, as I'm uploading the site, I have new ideas for it. Damnit. Good ideas too. I'll get to them, no rush.