<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<category term="personal website"/>
<generator uri="http://stringed.org/atom/generator" version="1.0">stringed.org Generator</generator>
<id>http://www.jasontconnell.com/</id>
<link href="http://www.jasontconnell.com/atom.xml" hreflang="us-en" rel="self" type="application/atom+xml"/>
<title type="html">Website of Jason Connell</title>
<updated>2008-10-18T04:34:28Z</updated>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">&lt;a href="http://www.us.playstation.com/PSN/Users/Voodoo187"&gt;&lt;img src="http://pid.us.playstation.com/user/Voodoo187.jpg" width="235" height="149" border="0" /&gt;&lt;/a&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I've had the PS3 for a year now, I finally got around to signing up on the website.</content>
<id>http://www.jasontconnell.com/news/psn-account</id>
<link href="http://www.jasontconnell.com/news/psn-account" hreflang="us-en" rel="alternate" title="PSN Account" type="html"/>
<published>2008-10-18T04:00:28Z</published>
<title type="html">PSN Account</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Ever notice this phenomenon:&#13;&lt;br /&gt;Friday mornings usually, there will be a clear passing lane on the left side, and yet there will be a line of around 10 cars driving 50 mph in the right lane??&#13;&lt;br /&gt;&#13;&lt;br /&gt;I call this phenomenon : Hung Over&#13;&lt;br /&gt;&#13;&lt;br /&gt;Originally Added 7/11/2003 9:22:54 AM (I still have that database and website code... I can import the database soon for browsing)&#13;&lt;br /&gt;&#13;&lt;br /&gt;Another gem, posted July 7th, 2004.  It was about the dude at the bank being way too friendly and always wanting to talk to me.  This was Bank of America (or Fleet, at the time) in Wayne, PA.&#13;&lt;br /&gt;&#13;&lt;br /&gt;"He then has to shake your hand on the way out, saying "Thanks for stopping in!" Like, I'm gonna keep the check in my pocket and never deposit it."&#13;&lt;br /&gt;&#13;&lt;br /&gt;God this is brilliant:&#13;&lt;br /&gt;Recursion&#13;&lt;br /&gt;I recurse like a sailor&#13;&lt;br /&gt;Added 12/29/2004 5:18:32 PM</content>
<id>http://www.jasontconnell.com/news/one-from-the-archives</id>
<link href="http://www.jasontconnell.com/news/one-from-the-archives" hreflang="us-en" rel="alternate" title="One from the archives" type="html"/>
<published>2008-10-01T23:00:51Z</published>
<title type="html">One from the archives</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Not.  For the past 3 months I've been on somewhat of a diet, but for the past 3 weeks, I really started pursuing "thinness".  My goal is to be at 170, or lose 30 pounds, by the time I reach the age of 30.  I think it can be done, and I've put a lot of money into making sure I can do it.  First I bought a blender.  The BlendTec Total Blender.  It was expensive but it really works like all those videos of that guy blending iPhones say it works.  I bought a digital scale.  I bought a lot of fruits which I'll do every two or so weeks.  And I bought a lot of granola, which will get me through the morning and will be half of my dinner every day.  So far I've seen a steady decrease in my weight on my new scale.  Here's my plan:&#13;&lt;br /&gt;&#13;&lt;br /&gt;Eat not a lot of calories a day.  A granola bar, a salad for lunch, a granola bar and a small dinner every day.  Those granola bars are 150 calories and they fill me up for a good four hours.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Work out a few times a day.  Since I still smoke (another part of my weight loss plan), I can't do 30 or 40 pushup or pullup sets every two hours.  In fact, I can still only do about 4 pullups in one set!  I'm getting a lot stronger though.  10 pushups right now is my max.  Take the dog for a brisk walk and do 10 pushups right afterwards.  Then watch tv for a bit, go upstairs and do my normal amount of pullups.&#13;&lt;br /&gt;&#13;&lt;br /&gt;From Thursday of last week up til Monday morning, I was losing a pound a day!  Then Labor Day happened and I gained 2 pounds!  I had a hamburger, a hot dog, some corn, and lots of chips and salsa with cream cheese.   But after a short nap (it was the most I've eaten in 3 weeks, I was tired!), I did 10 pushups.  Then got my hair cut.&#13;&lt;br /&gt;&#13;&lt;br /&gt;If you want to try this diet out, it's open source!  Eat a Kashi GoLean bar with coffee, half and half, and sugar (I won't make any sacrifices regarding coffee!).  This is also delicious since coffee and chocolate are brilliant together.  For lunch get a small chicken Caesar salad (don't skimp!  Dressing, cheese, bread crumbs).  For dinner, have a turkey sandwich on one slice of 12 grain bread cut in half and another Kashi.  Basically, I could give a flying f%#@ what food tastes like, or how varied my meals are.  Really, I don't care.  They're just something to get us through the day, not part of the day.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Workout schedule:  When I wake up, I do my pullups and get a shower and go to work.  At work, run up stairs and walk briskly to go pick up your salad.  Usually I get a diet iced tea with lunch.  When I get home from work I spread out the workout like I mentioned above.  Walk in the door, pullups.  Rest for 20-30, pushups.  Before bed I do 10 upbeat pushups and my regular pullups (I try not to mention more than once how many of these I can do right now :)  It's embarrassing), although I might do less because I just did 10 exhausting pushups.  And of course take the dog for a brisk walk.  It's good to get a fast dog.&#13;&lt;br /&gt;&#13;&lt;br /&gt;That's it!  Before I really started this, I was at 210 in mid June before Jamaica.  Thursday when I got the scale I weighed in at 198.  Monday morning I was at 193.5.  Then I gained 2 pounds at the barbecue!  Oh well, as long as I stick to the workout.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The real method behind my madness is to not have to work out too briskly and let my lack of previous binge eating (I would never eat between meals or eat fast food or anything really junky, but I would eat a lot...) replaced by very light but satisfying eating lose the pounds for me.  It's really a mix of the two.  Since I smoke I wouldn't have the breath right now to work out enough to lose the weight if I kept on my normal eating habits.  That's really all I have been trying to say :)  Enjoy.</content>
<id>http://www.jasontconnell.com/news/the-best-diet-ever</id>
<link href="http://www.jasontconnell.com/news/the-best-diet-ever" hreflang="us-en" rel="alternate" title="The Best Diet Ever" type="html"/>
<published>2008-09-02T22:00:56Z</published>
<title type="html">The Best Diet Ever</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Here's the rundown&#13;&lt;br /&gt;&#13;&lt;br /&gt;Maurice Jones-Drew RB JAC&#13;&lt;br /&gt;Wes Welker WR NE&#13;&lt;br /&gt;Brandon Jacobs RB NYG&#13;&lt;br /&gt;Jay Cutler QB DEN&#13;&lt;br /&gt;Eagles DEF PHI&#13;&lt;br /&gt;Anthony Gonzalez WR IND&#13;&lt;br /&gt;Todd Heap TE BAL&#13;&lt;br /&gt;Jon Kitna QB DET&#13;&lt;br /&gt;Niel Rackers K ARI&#13;&lt;br /&gt;Isaac Bruce WR SF&#13;&lt;br /&gt;Chester Taylor RB MIN&#13;&lt;br /&gt;Owen Daniels TE HOU&#13;&lt;br /&gt;Eddie Royal WR DEN&#13;&lt;br /&gt;Leon Washington RB NYJ&#13;&lt;br /&gt;Raiders DEF OAK&#13;&lt;br /&gt;John Kasay K CAR&#13;&lt;br /&gt;&#13;&lt;br /&gt;I had 8th pick, I kept Eagles D so it moved up from 6th to 5th round.  If I keep them again, it's a 1st round.  The draft was a good time as usual, just very frustrating to sit there and wait for your pick to come up.  Picking is fun though, and the last few rounds fly, even though I still did pretty good in those last four to five rounds.  I'm happy with my draft.  Barring injuries, suspensions, and under-performance, it should represent a good chunk of my team at the end of the season.</content>
<id>http://www.jasontconnell.com/news/fantasy-football-team-2008</id>
<link href="http://www.jasontconnell.com/news/fantasy-football-team-2008" hreflang="us-en" rel="alternate" title="Fantasy Football Team 2008" type="html"/>
<published>2008-08-21T23:00:24Z</published>
<title type="html">Fantasy Football Team 2008</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">It may have been a previously little known fact, but I am terrified of flying.  The last time I was on a plane was when I was three and I thought it was a ride.  Because you usually have no concept of the world when you're little.  I thought maybe Disney World was &lt;i&gt;at the airport&lt;/i&gt; and we just flew around for a little bit and landed, then went into the park.  I remember about 5 seconds of this flight, leaning over my brother Scott and looking down out the window.&#13;&lt;br /&gt;&#13;&lt;br /&gt;When I knew I was flying to Jamaica, I was nervous for a little while.  About two weeks before, I talked to my Mom who works for our doctor, about possibly getting something to settle my nerves for the flight.  We made an appointment and the doctor gave me some Xanax (can't wait to see what kind of traffic I get with that name on here).  I told him I needed just 4, with his description of "take 1-2 every four hours".   He gave me 10.  I left for the airport from  my parents' house (my Dad drove), at about 4 in the morning and got there at about 4:30.&#13;&lt;br /&gt;&#13;&lt;br /&gt;There was a short line, and Mike and Amanda, Amanda, Becky, and parents and other family were in line ahead of some other people.  I said hi and went to the back.  I showed my passport and driver's license and got my ticket and headed to security.&#13;&lt;br /&gt;&#13;&lt;br /&gt;This is where I totally screwed up!  I had worn shorts with zippers in them, I had my phone and ipod in my pockets, my wallet has metal on it, I have a chain on my neck.  Short version, I had to get swept with the wand and padded down while Mike waited for me, laughing at me.  Secondly, they took my iPod and phone and put them in what I can only describe as a dog water bowl.  After I was done getting swept, I asked the guy where my iPod and phone were, and he said "go check with your friend, he may have picked it up".  Nope, I told him.  I was like WTF.  When I asked Mike about it he was like WTF.  But he had it up at the desk.  Thank God!  I couldn't deal without music and just Xanax.  They did spot one threat on me and he had to deal with it.  At the last minute of packing, I was frantically going around throwing stuff in my carry-on that I might need, including a big squeeze bottle of sun tan lotion.  I read the warnings that the travel agent sent, including "no liquids over 3oz" but totally forgot.  He said "you're not allowed to have this", I said "take it".  Get me the f#@$ out of here!&#13;&lt;br /&gt;&#13;&lt;br /&gt;Waiting at the gate was fun.  I had popped a Xanax about 30 minutes before, waiting til I got on the plane to take my second one.  It's like a drunk feeling.  At this point I had put the pills in my carry-on... whoops.  This turned out fine though.  As the plane boarded, I was just trying to do what the people in front of me were doing since it was my first time.  I didn't want to hold anyone up as I got to my seat, so I just threw my bag, and the pills, in the overhead, and sat down to get out of the way as quickly as possible.  I was on the window seat, which was great for my claustrophobia!  It's mild.  I sat and waited for takeoff.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Taking off went without a hitch.  As the plane was getting ready to leave, I put my headphones and some Bob Marley on, the stewardess came by and said no.  Damn.  Takeoff with no tunes.  Brutal.  So I just got my camera ready and snapped some shots and a video of takeoff.  At about 7:40 in the morning, this was an awesome sight!  The only thing that really worried me was we were heading up and suddenly went DOWN a few feet.  My throat quickly made some room for my heart and stomach and anything else that wanted to go up there.  I was a little nervous.  Hurry up and hit 37,000 feet!&#13;&lt;br /&gt;&#13;&lt;br /&gt;I managed to fall asleep for a little while after we passed Virginia.  The whole flight was estimated to take 3 hours and 5 minutes.  This was after about 45 minutes or so.  I forget at this point, plus I was on Xanax :)  We hit some very gentle turbulence, where the seatbelt signs would turn on.  It really didn't bother me.  I fell asleep kinda looking out the window at the land.  When I woke up probably 2 hours later, we were over WATER!  I was like WHERE THE F#@% AM I?!?!  I got nervous for a little while, and the Xanax had worn off.  The captain came on shortly after and said we had just passed over Cuba, and the next land we'll see is Jamaica!  Sweet!&#13;&lt;br /&gt;&#13;&lt;br /&gt;Landing was freaking awesome.  We were flying South, obviously, and the airport at Montego Bay faces west to east.  We took this huge turn left and that is just about the freakiest thing ever.  It just kept turning.  Please stop turning or we'll be upside down soon.  It finally flattened out and we went down for a very smooth landing, which I also video taped.  Very smooth and the captain certainly knows what he is doing.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The way back to Philadelphia was a blur.  Our flight had been delayed 2.5 hours.  During this time, I popped a Xanax, spent $15 at the bar, popped another one, ended up sitting next to a very nice Jamaican girl going to Philly, I fell asleep leaning against the seat in front of me listening to classical music, woke up with my legs very tense and not feeling good at all.  I woke up because the girl in front of me moved her seat up... WTF I'm sleeping here!  Since my legs were so tense, I bit half a pill and tried to relax.  The 2.5 pills did the trick.  Along with the drinks.  I got to my parents house and fell asleep in a few minutes.  Next up, Jamaica Mon!</content>
<id>http://www.jasontconnell.com/news/jamaica-trip-the-flights</id>
<link href="http://www.jasontconnell.com/news/jamaica-trip-the-flights" hreflang="us-en" rel="alternate" title="Jamaica Trip: The Flights" type="html"/>
<published>2008-07-16T20:05:12Z</published>
<title type="html">Jamaica Trip: The Flights</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">At Sandals Grande Ocho Rios, you are treated to a number of different restaurants with different specialties.  They are open at slightly different times for all those important meals of the day.  The food, with a few notable exceptions from people who didn't like their FREE desserts, was exceptional.  (Technically it's not free, but you know what I mean).&#13;&lt;br /&gt;&#13;&lt;br /&gt;My roommate and I were early risers, waking up most days by 7.  I woke up for an hour usually at around 4am every day.  I would wake up, look at the clock, and it was 4am.  It was odd, but really the only time I could connect to the internet with no problems.  Breakfast wouldn't start until 7:30, so of course by this point we're starving, because to get a timely dinner in on the previous night, you'd have get there 15 minutes before the restaurant you wanted to go to opened.  Breakfast at 7:30 was less of an issue.  We'd get there and there'd be maybe 10-20 people total, and it's a buffet, so you just grab a plate and in about 5 minutes you have a delicious meal, coffee, and water sitting in front of you.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The buffet breakfast was pretty amazing.  While Ryan, my roommate, would get lots of fruit and two omelettes, I would just get everything that interested me.  Chicken for breakfast?  Why not.  They always had bacon, sausage, some form of potato (hash browns, home fries, etc), and two domes at the buffet would be different every day.  I always got pineapple and another fruit.  The water there was delicious and ice cold.  And the first day I asked the waiter if the coffee they were serving us was "Blue Mountain" and he said "Yeah Mon!"   I think they just cater to your wishes and tell you what you want to hear.  It was delicious though.  We'd then go back to the room for an hour or so then meet up with everyone at the pool or beach for another hour or two.  Then came lunch.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Lunch was pretty good most times.  We would still mostly go to the buffet since it was quick and pretty good.  I forget if we tried a non-buffet lunch.  I'm sure we did, but I forget at this point.  Lunch is when the buffet had a ton of different salads, like tuna salad, chicken Caesar, different pasta salads.  One day they had Jerk Chicken which is a specialty dish of Jamaica.  I was talking to Casper, the wedding photographer, and I just said "This jerk chicken and pork that they have in the resort is bullshit, huh?"  He was like "Yah Mon".  You could pick up real jerk at the various jerk centres and stores that they have along the highway between the airport and the resort.  I didn't try any real jerk.  That's a shame.  After lunch we'd go to the pool again and start drinking usually.  The pool is where it's at.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Thankfully for the casual dress code at the resort, you would just have to pack a pair of shorts if you didn't want to go back to your room to change for dinner.  And it was amazing.  Amazingly slow.  If you went to a sit down and served dinner there, you could expect to just sit there for two hours and talk to everyone.  Courses would come out every 30 minutes or so, and you'd eat it in about 2 minutes.  &lt;a href="http://flickr.com/photos/28240873@N07/2633861481/in/pool-zatko-wedding" target="_blank"&gt;This&lt;/a&gt; is what the appetizers looked like.  Although delicious, you can tell they're very very small.  Which is fine, because 3 - 4 small courses add up to a decent meal.  The place that picture was taken was called the Reef Terrace or Terrace Reef.  Something like that.  I got Jerk Beef.  It was delicious and the plate was square.  They are all artistic about their meals, something you would see in places where a single meal is like $30 and up.  And you're sitting there in your shorts, sandals and a t-shirt most times.  It's really relaxing.&#13;&lt;br /&gt;&#13;&lt;br /&gt;One time, we ate so early and were drinking so much that we were starved.  We swam in the pool and hot tub all night, and at 9:30 or so, a stand near the pool opened up.  It had nachos, pizza, and other delicious hand foods.  I got nachos with sour cream, guacamole, jalapeno peppers, and salsa.  Two plates.  I was hungry.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The one place we ate it was required to dress up.  And by dress up, I mean no shorts.  Of course, I didn't pack anything in terms of nice clothes except my one red golf shirt, so I would have been SOL if it weren't for the tuxedo rentals!  I used the white pants, my red golf shirt, and my sneakers, and passed the excruciating judgment that was placed on me as I walked in the place.  It was a 100% improvisation and it worked pretty damn well.  When Zatko gets back, he'll put up some decent pictures of it.  He had also not packed any pants and was forced down the same road I was.  Apparently Amanda had him pack half a suitcase of towels and towels were provided at every pool and in your shower, it turned out.  That was one thing that I forgot and it turned out OK.&#13;&lt;br /&gt;&#13;&lt;br /&gt;That about does it for the food.  Obviously, there's not a lot of adjectives to use when describing food.  I forget what I ate specifically but can tell you I was never disappointed.  It was good.  That's about all I can say, you have to go there yourselves :)</content>
<id>http://www.jasontconnell.com/news/jamaica-trip-the-food</id>
<link href="http://www.jasontconnell.com/news/jamaica-trip-the-food" hreflang="us-en" rel="alternate" title="Jamaica Trip: The food" type="html"/>
<published>2008-07-06T15:00:01Z</published>
<title type="html">Jamaica Trip: The food</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">While in Jamaica, I noticed how much fun Mike and Jared were having with their DSLR cameras, and I wanted to get in on the action.  I will be keeping a log here for just that purpose, and uploading the photos I take to Flickr and displaying them here with the details of the photo.  I've been reading up on some things, but also bought a book to help me out.  I got a Nikon D40 with the default load-out, an 8GB memory card, a bag for it, and the book which is on exposure.  I'll probably read around the web as well and maybe try out some trial versions of professional photo software like Aperture from Apple or Lightroom from Adobe.  Jared uses Lightroom, Mike uses iPhoto which is a basic photo application.  Aperture is cheaper than Lightroom but only available on a Mac which is perfect since I use one :)  But I'll try them out.  It should be fun.  I've been into photography for a while but never really fed my interests.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I did have a camera in 4th or 5th grade, though.  A really old one.  I went to Notre Dame and took a photo of the gold dome they have and it turned out really good, like a post card.  They also had these giant sand dunes that I took a few pictures of.  We had the big red van back then.  That was fun.&#13;&lt;br /&gt;&#13;&lt;br /&gt;So I'm giving it another whirl.  We'll see how it turns out.  Hopefully better than my drawing experiment a year or so ago :)</content>
<id>http://www.jasontconnell.com/news/and-so-my-photography-hobby-begins</id>
<link href="http://www.jasontconnell.com/news/and-so-my-photography-hobby-begins" hreflang="us-en" rel="alternate" title="And so my photography hobby begins..." type="html"/>
<published>2008-07-06T01:55:34Z</published>
<title type="html">And so my photography hobby begins...</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I'll be making a series of posts, but the first one is about scuba diving.  Enjoy!&#13;&lt;br /&gt;&#13;&lt;br /&gt;I was a bit nervous about it.  Heading to the pool for the training, I was like I'm gonna drown.  But they make you swim 8 laps around the pool without touching the side or bottom, and that pretty much got rid of the nervous feeling and made me exhausted instead :)  Then you watch a video that teaches you some of the things that you will need to do.  After that they suit you up, put you in the pool, then you try breathing underwater.  That was crazy!&#13;&lt;br /&gt;&#13;&lt;br /&gt;Of course, there are about 10 tricks that you need to know to stay alive while 40 feet below.  The guy, Pablo, a Jamaican, taught you three of the ones that we'll need for a short, 30 minute excursion underwater.  They were how to clear your mask if it gets filled with water, how to put your mouth piece back in if it gets knocked out or you lose it, and the last was how to equalize your pressure in your ears so you can go down 40 feet and feel perfectly comfortable.  Then in the pool, they teach you this and Pablo watches each person as they do it at least twice perfectly.  After that, Pablo made us swim from the shallow end to the deep end in a circle as long as we wanted, and practice equalizing our pressure.  I swam in the pool for about 10-15 minutes, practicing these different techniques.&#13;&lt;br /&gt;&#13;&lt;br /&gt;When we went on the dive, I was nervous again.  They put an anchor in the water, you grab onto the rope and head down slowly, equalizing as you go, every 3-4 feet or so.  It was very slow.  You get down there, then go into what's called a "scuba chain", locking arms with everyone.  This was uncomfortable since you're just kneeing there waiting for everyone, and when you're not moving, the bubbles you blow out just go in your face and you can't see anything.  Then we went off to the reefs.  So many colorful fishes and the water was beautiful.  The one guy was taking pictures, and we managed to get one with the three of us that went down there.  Overall it was an incredible time and I can't wait to do it again :D&#13;&lt;br /&gt;&#13;&lt;br /&gt;I'll be posting that picture as soon as I get it from Zatko.  In the meantime, check out the images as they get uploaded from the people that went.  We have a Flikr group called "&lt;a href="http://flickr.com/groups/zatko-wedding/"&gt;Zatko Wedding&lt;/a&gt;".&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;a href="http://flickr.com/photos/jcblitz/2631680315/sizes/l/in/pool-770413@N24/"&gt;&lt;img border="0" src="http://farm4.static.flickr.com/3279/2631680315_69ec97ceaf.jpg" alt="The Wedding Party" /&gt;&lt;/a&gt;</content>
<id>http://www.jasontconnell.com/news/back-from-jamaica</id>
<link href="http://www.jasontconnell.com/news/back-from-jamaica" hreflang="us-en" rel="alternate" title="Back from Jamaica!" type="html"/>
<published>2008-07-03T20:25:49Z</published>
<title type="html">Back from Jamaica!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Zatko, Amanda, Jared, Kris, and some other dudes and gals, including parents, are going down to Jamaica tomorrow at 7:25 AM!  We'll be arriving somewhere where a bus can take us to Sandals at Ocho Rios by bus presumably.  We'll probably be at our hotel by 1pm hopefully.  I have to be at the airport at about 4:30am officially, but might be getting there by 5am.  There will be an butt ass ton of pictures when I get back.  Probably on my facebook profile and I'll link them here.  I'm long overdue for a vacation.  Peace.</content>
<id>http://www.jasontconnell.com/news/heading-to-jamaica</id>
<link href="http://www.jasontconnell.com/news/heading-to-jamaica" hreflang="us-en" rel="alternate" title="Heading to Jamaica!" type="html"/>
<published>2008-06-24T19:00:54Z</published>
<title type="html">Heading to Jamaica!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Thankfully, I was able to find the answer to my problem in German!  &lt;a href="http://www.flashforum.de/forum/showthread.php?t=250185"&gt;Here&lt;/a&gt; is the forum I read.  I found a lot of English speaking topics with the error message I was getting, but they were having slightly different problems.  Basically, I renamed the file in the ".safetable" folder, reimported my project, and everything's fine.  Weird.  Good thing, too, I've been getting tons of comment spam on my pictures because I haven't implemented my anti-spam mechanism on there.  I will employ the same method I use &lt;a href="http://www.jasontconnell.com/news/sometimes-i-get-crazy-bot-comments"&gt;here&lt;/a&gt;.</content>
<id>http://www.jasontconnell.com/news/eclipse-bombed-on-me</id>
<link href="http://www.jasontconnell.com/news/eclipse-bombed-on-me" hreflang="us-en" rel="alternate" title="Eclipse bombed on me" type="html"/>
<published>2008-06-20T00:00:43Z</published>
<title type="html">Eclipse bombed on me</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I currently have the free trial but I created some awesome creatures already.  I don't know what this thing is but they showed some html to paste into my website, so I'm doing it.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;div style="width:448px;background:transparent url(http://www.spore.com/static/war/images/content/widget/widget_back_complete.jpg) no-repeat top left;"&gt;&lt;div&gt;&lt;a href="http://www.spore.com"&gt;&lt;img src="http://www.spore.com/css/blank.gif" width="448" border="0" height="40" alt="spore.com"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;embed width="448" height="180" bgcolor="#000000" src="http://www.spore.com/flash/csa_widget.swf?userid=2252463447&amp;username=Voodoo187&amp;host=http%3A%2F%2Fwww.spore.com%2Fview%2Fuser-thumbnail" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" scale="showall" name="latest-creatures" /&gt;&lt;div style="height:48px"&gt;&lt;a style="font-family:'Trebuchet MS',verdana,sans-serif;color:#fff;font-size:13pt;font-weight:bold;margin-left:10px;text-decoration:none;" href="http://www.spore.com/view/profile/Voodoo187"&gt;Visit Spore.com&lt;/a&gt;&lt;/div&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I'll have some pictures up soon.  Can't wait for this game :)</content>
<id>http://www.jasontconnell.com/news/spore-creature-creator</id>
<link href="http://www.jasontconnell.com/news/spore-creature-creator" hreflang="us-en" rel="alternate" title="Spore Creature Creator!!" type="html"/>
<published>2008-06-17T19:00:42Z</published>
<title type="html">Spore Creature Creator!!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">How many times do you go to watch a video on a site that's not porn and it asks you for your date of birth?  There's plenty of videos out there that do that... video games are the ones that annoy me the most.  Especially since the sites that I watch videos on, I am registered for and my date of birth is stored with my profile.  Sometimes it's just a 3 box combo of month, day and year where you have to type, other times it's 3 drop down boxes where what is automatically selected is January 1, 2004.  Other times it's 3 drop downs for month day and year but no default date is selected.  On &lt;a href="http://www.gametrailers.com"&gt;GameTrailers.com&lt;/a&gt;, these are the least annoying.  They don't have verification code built in so you can just press "OK" and it'll let you watch the video without selecting anything.  On the ones with the 3 drop downs where January 1 2004 is automatically selected, I just drop the year down to 1980 or earlier, even though 1990 will suffice now (jeez, people born in 1980 are already 28).  The only ones that get my real date of birth are the text box variations where it's easy to type.  Seriously, the drop downs gotta go.&#13;&lt;br /&gt;&#13;&lt;br /&gt;These are so dumb and annoying.  But I guess you gotta be responsible.  Annoyingly responsible to those who could watch R rated movies for 12 years now.  To those who can buy anything where an age restriction is in place.  To those of us who could almost run for president of the USA (35 is the minimum if I recall correctly).  The only thing I can't buy, age-wise, is a house in my parents' community because you have to be 55 or older.&#13;&lt;br /&gt;&#13;&lt;br /&gt;But I guess you gotta be responsible.  You definitely want to make it a good warning that you should be of X years (13 for PG-13, 17 for R, etc) before you watch the movie, play the game, drink the beer, etc.  But of those, I think it's only actually &lt;b&gt;illegal&lt;/b&gt; to drink if you're not old enough.  Still, those sites should save your birthday as a cookie or something so you don't have to enter it 120 times.  That can't be used to track anything that they wouldn't already know or could even get any information from... how many people were born on March 23, 1979?  Well, I guess, how many people were born on March 23, 1979 in the IP range that I use?  Probably far less.  But still.  Hold onto my date of birth or make it so if I just press "OK" I get to watch it anyway :)  I like that bug.</content>
<id>http://www.jasontconnell.com/news/age-verification-is-dumb</id>
<link href="http://www.jasontconnell.com/news/age-verification-is-dumb" hreflang="us-en" rel="alternate" title="Age verification is dumb" type="html"/>
<published>2008-06-17T00:10:45Z</published>
<title type="html">Age verification is dumb</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">This new server is about 4 times more powerful than my previous server, but for the same price.  I will now definitely be putting lots of new stuff up on here to get the full use out of it.  I have my subversion server running off of it, and again, an open invitation to anyone who wants all the free awesome code they can handle :P&#13;&lt;br /&gt;&#13;&lt;br /&gt;Be wary of hosting companies installing MySQL for you.  They might install the latest version of it (5.x), but in my.cnf specify that it should use the old password hashing method, the insecure one used before MySQL 4.1.  This old method only generates a hash 16 bytes long, whereas the new one is 41 bytes (with a leading *).  I did notice it but didn't think anything of it until I tried to login to my website here to post a new item.  I had just finished getting all of my passwords for my websites input too.  This required looking in the config file that I read to connect to the database to get the current password out, then running "grant all privileges on database.* to 'user'@'localhost' identified by 'password'" for each one.  Ridiculous.  I think I got them all right on the second go, I didn't feel like reading in the config files again.  This site works, and so does &lt;a href="http://www.jimandkatebygrave.com"&gt;Jim and Kate's site&lt;/a&gt; (which is awful and is long overdue for an upgrade).  &lt;a href="http://vacretei.org"&gt;Vacre Tei&lt;/a&gt; works too.  Stringed.org might work but not all of the name servers are pointed correctly yet, so I can't see it.  It might work for you, it worked at the office.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Also, if you get "Can't connect to MySQL" and it's running, chances are it isn't allowing networking.  I just commented out those two lines (old-passwords and skip-networking) and if I got all the passwords right, everything should work fine.  Overall, the transition from the old server went without a hitch, but was a pain in the ass.  Here's the breakdown:&#13;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Zip up the websites on May 24 and promise not to upload any new files because then they'd also have to be pushed over.&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Zip up the databases and promise not to make any new posts or anything.&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Zip up tomcat since I don't want to have to reconfigure it&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Download them (the size of jasontconnell.com gzipped up is currently over 600 MB)&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Upload everything to the new server.&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Extract everything where it belongs.&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Update the MySQL passwords&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Set JAVA_HOME&lt;/li&gt;&#13;&lt;br /&gt;&lt;li&gt;Hope it works&lt;/li&gt;&lt;/ol&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;There were some other steps in there and perhaps at a later date I will be willing to tell them, but that's the gist of it.  Enjoy!</content>
<id>http://www.jasontconnell.com/news/new-server</id>
<link href="http://www.jasontconnell.com/news/new-server" hreflang="us-en" rel="alternate" title="New Server!" type="html"/>
<published>2008-06-12T19:00:19Z</published>
<title type="html">New Server!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Here's the updated code which should work all the time.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;var EventList = new Array();&#13;&lt;br /&gt;var g_eventIndex = 0;&#13;&lt;br /&gt;&#13;&lt;br /&gt;function Event(obj, type){&#13;&lt;br /&gt;	if (obj._eventIndex){&#13;&lt;br /&gt;		if (EventList[obj._eventIndex][type]) return;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	else&#13;&lt;br /&gt;		obj._eventIndex = g_eventIndex++;&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	if (typeof(EventList[obj._eventIndex]) == "undefined")&#13;&lt;br /&gt;		EventList[obj._eventIndex] = new Array();&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	EventList[obj._eventIndex][type] = true;&#13;&lt;br /&gt;	this.handlers = new Array();&#13;&lt;br /&gt;	this.type = type;&#13;&lt;br /&gt;	this.obj = obj;&#13;&lt;br /&gt;	this.obj._event = new Array();&#13;&lt;br /&gt;	this.obj._event[type] = this;&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	if (typeof(this.obj.addCustomEvent) != "function"){&#13;&lt;br /&gt;		this.obj.addCustomEvent = function(type, fn){&#13;&lt;br /&gt;			if (typeof(fn) == "function"){&#13;&lt;br /&gt;				this._event[type].handlers.push(fn);&#13;&lt;br /&gt;				return true;&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;			return false;&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.raise = function(sender, args){&#13;&lt;br /&gt;		for(var i = 0; i &lt; this.handlers.length; i++){&#13;&lt;br /&gt;			this.handlers[i](sender, args);&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;// addEvent(obj, "event", func);&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;function addEvent(obj, evType, fn, useCapture){&#13;&lt;br /&gt;  if (typeof(obj._eventIndex) == "number" &amp;&amp; EventList[obj._eventIndex][evType] &amp;&amp; obj.addCustomEvent){&#13;&lt;br /&gt;	var r = obj.addCustomEvent(evType, fn);&#13;&lt;br /&gt;	return r;&#13;&lt;br /&gt;  }&#13;&lt;br /&gt;  else if (obj.addEventListener){&#13;&lt;br /&gt;    obj.addEventListener(evType, fn, useCapture);&#13;&lt;br /&gt;    return true;&#13;&lt;br /&gt;  } else if (obj.attachEvent){&#13;&lt;br /&gt;    var r = obj.attachEvent("on"+evType, fn);&#13;&lt;br /&gt;    return r;&#13;&lt;br /&gt;  } else {&#13;&lt;br /&gt;    alert("Handler could not be attached");&#13;&lt;br /&gt;  }&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Now it will handle events of the same name in different objects.  I just didn't want to have to come up with different names for events in different objects that did nearly the exact same thing.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I was reading a bit on the internets about how people do this type of thing.  I read a post on Yahoo! that said the YUI event handling mechanism is "only 2KB".  This is 55 lines with liberal white spacing.  The thing about computer science is that sure, there might be something out there that does what you need it to do, and you can get it for free, but it's gonna do tons of other stuff that you really don't need.  Not yet anyway.  Same goes for software in general.  If you need a simple photo editor, you're not gonna pay $600 for Photoshop when iPhoto will do (part of a $79 package with tons of other neat software, which also is overkill if you don't need that other stuff).  So, if I need something very specialized, small, and easy to use, I'll write it.  If you need this as well, feel free to use mine directly or for knowledge.  It's not big or special, but will be used as part of a big and special project :)  That will come soon.</content>
<id>http://www.jasontconnell.com/news/fixed-my-event-class</id>
<link href="http://www.jasontconnell.com/news/fixed-my-event-class" hreflang="us-en" rel="alternate" title="Fixed my event class" type="html"/>
<published>2008-06-07T12:00:23Z</published>
<title type="html">Fixed my event class</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I just have to ask that you send $5 to me via email.  Thanks.&#13;&lt;br /&gt;&#13;&lt;br /&gt;It turns out that I needed a way to raise events in my pager from the last post.  Like when the page changed, I wanted to display "Page 3 of 5 (9 elements)" (for my test size of 2 elements per page (not likely to happen)).  But also, for future reference, if say, to save on load times, only load X pages, we'll call it 5, at a time, so 10 elements, so then when they got to page 4 or 5, the non-pager code can load 10 more elements asynchronously, and call refresh on the pager to update the page count etc.  Here's the event object:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;var EventList = new Array();&#13;&lt;br /&gt;&#13;&lt;br /&gt;function Event(obj, type){&#13;&lt;br /&gt;	if (EventList[type]) return;&#13;&lt;br /&gt;	EventList[type] = true;&#13;&lt;br /&gt;	this.handlers = new Array();&#13;&lt;br /&gt;	this.type = type;&#13;&lt;br /&gt;	this.obj = obj;&#13;&lt;br /&gt;	this.obj._event = new Array();&#13;&lt;br /&gt;	this.obj._event[type] = this;&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	if (typeof(this.obj.addCustomEvent) != "function"){&#13;&lt;br /&gt;		this.obj.addCustomEvent = function(type, fn){&#13;&lt;br /&gt;			if (typeof(fn) == "function"){&#13;&lt;br /&gt;				this._event[type].handlers.push(fn);&#13;&lt;br /&gt;				return true;&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;			return false;&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.raise = function(sender, args){&#13;&lt;br /&gt;		for(var i = 0; i &lt; this.handlers.length; i++){&#13;&lt;br /&gt;			this.handlers[i](sender, args);&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;// addEvent(obj, "event", func);&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;function addEvent(obj, evType, fn, useCapture){&#13;&lt;br /&gt;  if (EventList[evType] &amp;&amp; obj.addCustomEvent){&#13;&lt;br /&gt;	var r = obj.addCustomEvent(evType, fn);&#13;&lt;br /&gt;        return r;&#13;&lt;br /&gt;  }&#13;&lt;br /&gt;  else if (obj.addEventListener){&#13;&lt;br /&gt;    obj.addEventListener(evType, fn, useCapture);&#13;&lt;br /&gt;    return true;&#13;&lt;br /&gt;  } else if (obj.attachEvent){&#13;&lt;br /&gt;    var r = obj.attachEvent("on"+evType, fn);&#13;&lt;br /&gt;    return r;&#13;&lt;br /&gt;  } else {&#13;&lt;br /&gt;    alert("Handler could not be attached");&#13;&lt;br /&gt;  }&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Yup, it only handles on event per object right now.  That's easily remedied if I use something other than "obj._event".  Like &lt;code&gt;this.obj._event = new Array(); this.obj._event[type] = this;&lt;/code&gt;.  Will do that soon.  UPDATE: Fixed that, and used the EventList array to keep track of custom events, and modified the addEvent function to use that and see if it's a custom event first.  This way, if I add custom events to a "div" html element, it will work, whereas before it would have evaluated one of the other ones (attachEvent or addEventListener) before it would have added the event where I wanted it.  UPDATE 2:  Damn, that still has a shortcoming.  To be fixed later, like Tuesday.  I'm booked this weekend.  If you can point out the shortcoming, I'll give YOU $5 :P  A hint would be that you don't have to worry about "click" events, only custom events... but damn near everything has a "click" event.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Notice that I modified the "addEvent" function that I shamelessly stole from &lt;a href="http://quirksmode.org"&gt;QuirksMode.org&lt;/a&gt; to check if the object that we're adding the event to has an "addCustomEvent" function on it.  If it does, call it, which is added to the object when it creates a new event.  This is how the pager uses it:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;function Pager(){&#13;&lt;br /&gt;	this.init = function(divid){&#13;&lt;br /&gt;...&#13;&lt;br /&gt;		this.textspan = null;&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		this.onPageChanged = new Event(this, "pageChanged");&#13;&lt;br /&gt;		addEvent(this, "pageChanged", this.internalOnPageChanged);&#13;&lt;br /&gt;		this.initialized = true;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;...&#13;&lt;br /&gt;&#13;&lt;br /&gt;	this.pageChanged = function(pageNumber){&#13;&lt;br /&gt;		//  change page functionality here...&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		this.onPageChanged.raise(this, { page : this.currentPage, pages: this.pageCount, total: this.elementCount});&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;&#13;&lt;br /&gt;...&#13;&lt;br /&gt;&#13;&lt;br /&gt;	this.internalOnPageChanged = function(pager, args){&#13;&lt;br /&gt;		if (pager.textspan){&#13;&lt;br /&gt;			clearChildren(pager.textspan);&#13;&lt;br /&gt;			pager.textspan.appendChild(document.createTextNode("Page " + (args.page+1) + " of " + args.pages + " (" + args.total + " elements)"));&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I removed unnecessary code but you get the idea.  As always, I found code online to do it, but it was too complicated (KISS = Keep it simple stupid).  If I have to add to it I will but it doesn't have to solve all of my problems right now.  In my html page that is apart from the pager, I add another handler for "pageChanged" to just test it out.  Integrating it seamlessly with the "addEvent" function is crucial, so now I just use the same exact syntax for every event, whether it's custom or not.  So this works perfectly:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;		addEvent(window, "load", loaded);&#13;&lt;br /&gt;		var pager = new Pager();&#13;&lt;br /&gt;		&#13;&lt;br /&gt;&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		function loaded(){&#13;&lt;br /&gt;			pager.init("pager");&#13;&lt;br /&gt;			addEvent(pager, "pageChanged", pagerPageChanged);&#13;&lt;br /&gt;			loadNotes();&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		function pagerPageChanged(p, args){&#13;&lt;br /&gt;			var i = args.page;&#13;&lt;br /&gt;			//alert("page changed : " + args.page + " of " + args.pages + " pages, " + args.total + " elements in all");&#13;&lt;br /&gt;		}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;That's from "index.html" because I don't need any kind of server side scripting language with my new Ajax framework.  And it's loading data, saving data, deleting data, even will begin to authenticate users soon, on the server.  This keeps the custom code on the server down to 0 lines.  Yup, no lines of Java pertaining to a "Notes" application (basic and without user authentication or authorization).  I like writing Java but this will make things quicker  :)  When I incorporate &lt;a href="http://developer.yahoo.com/yui/"&gt;YUI!&lt;/a&gt; into it, it'll even be beautiful.  Ahh, until that day.</content>
<id>http://www.jasontconnell.com/news/more-awesome-free-code</id>
<link href="http://www.jasontconnell.com/news/more-awesome-free-code" hreflang="us-en" rel="alternate" title="More awesome free code!" type="html"/>
<published>2008-05-29T23:00:56Z</published>
<title type="html">More awesome free code!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I wrote a javascript pager tonight.  It'll be in use on my new Javascript front end, hopefully coming here soon.  It's all AJAX-y.  I like it.  Here's the code:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;function Pager(){&#13;&lt;br /&gt;	this.init = function(divid){&#13;&lt;br /&gt;		this.div = document.getElementById(divid);&#13;&lt;br /&gt;		this.divToPage = document.getElementById(this.div.getAttribute("divtopage"));&#13;&lt;br /&gt;		this.pageSize = parseInt(this.div.getAttribute("pageSize"));&#13;&lt;br /&gt;		this.elementCount = this.divToPage.childNodes.length;&#13;&lt;br /&gt;		this.currentPage = (params(divid+"_page") != null ? parseInt(params(divid+"_page")) : 0);&#13;&lt;br /&gt;		this.pageCount = this.elementCount == 0 ? 0 : Math.ceil(this.pageSize / this.elementCount);&#13;&lt;br /&gt;		this.initialized = true;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.refresh = function(){&#13;&lt;br /&gt;		if (this.initialized){&#13;&lt;br /&gt;			this.elementCount = this.divToPage.childNodes.length;&#13;&lt;br /&gt;			this.pageCount = this.pageSize == 0 ? 20 : Math.ceil(this.elementCount/this.pageSize);&#13;&lt;br /&gt;			if (this.elementCount &lt; this.pageSize){&#13;&lt;br /&gt;				this.div.style.display = "none";&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;			else {&#13;&lt;br /&gt;				this.div.style.display = "block";&#13;&lt;br /&gt;				clearChildren(this.div);&#13;&lt;br /&gt;				this.showPager();&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.showPager = function(){&#13;&lt;br /&gt;		var firstlink = new PagerLink("&lt;&lt;&lt; first", this, function() { this.pageChanged(0); });&#13;&lt;br /&gt;		var nextlink = new PagerLink("next &gt;&gt;", this, function() { this.pageChanged(this.pager.currentPage+1); }) ;&#13;&lt;br /&gt;		var prevlink = new PagerLink("&lt;&lt; prev", this, function() { this.pageChanged(this.pager.currentPage-1); }) ;&#13;&lt;br /&gt;		var lastlink = new PagerLink("last &gt;&gt;&gt;", this, function() { this.pageChanged(this.pager.pageCount); });&#13;&lt;br /&gt;				&#13;&lt;br /&gt;		var pagelinks = Array();&#13;&lt;br /&gt;		for (var i = 0; i &lt; this.pageCount; i++){&#13;&lt;br /&gt;			var pl = new PagerLink("" + (i+1), this, function(){ this.pageChanged(this.pageIndex); });&#13;&lt;br /&gt;			pl.setPageIndex(i);&#13;&lt;br /&gt;			pagelinks.push(pl);&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		if (this.pageCount &gt; 10) this.div.appendChild(firstlink.link);&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		this.div.appendChild(prevlink.link);&#13;&lt;br /&gt;		for (var i = 0; i &lt; pagelinks.length; i++){&#13;&lt;br /&gt;			this.div.appendChild(pagelinks[i].link);&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		this.div.appendChild(nextlink.link);&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		if (this.pageCount &gt; 10) this.div.appendChild(lastlink.link);&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		this.pageChanged(this.currentPage);&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.pageChanged = function(pageNumber){&#13;&lt;br /&gt;		if (pageNumber &gt;= this.pageCount) pageNumber = this.pageCount-1;&#13;&lt;br /&gt;		if (pageNumber &lt; 0) pageNumber = 0;&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		var pageRange = [pageNumber*this.pageSize, (pageNumber+1)*this.pageSize];&#13;&lt;br /&gt;		for (var i = 0; i &lt; this.elementCount; i++){&#13;&lt;br /&gt;			if (i &gt;= pageRange[0] &amp;&amp; i &lt; pageRange[1]){&#13;&lt;br /&gt;				this.divToPage.childNodes[i].style.display = "block";&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;			else this.divToPage.childNodes[i].style.display = "none";&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		this.currentPage = pageNumber;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function PagerLink(text, pager, clickEvent){&#13;&lt;br /&gt;	this.link = getLink(text, clickEvent);&#13;&lt;br /&gt;	this.pager = pager;&#13;&lt;br /&gt;	this.text = text;&#13;&lt;br /&gt;	this.link.pager = pager;&#13;&lt;br /&gt;	this.link.pageIndex = -1; // for page number links&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.link.pageChanged = function(pageNumber){&#13;&lt;br /&gt;		this.pager.pageChanged(pageNumber);&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	this.setPageIndex = function(i){&#13;&lt;br /&gt;		this.link.pageIndex = i;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;It's used like this:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;		addEvent(window, "load", loaded);&#13;&lt;br /&gt;		var pager = new Pager();&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		function loaded(){&#13;&lt;br /&gt;			pager.init("pager");&#13;&lt;br /&gt;                }&#13;&lt;br /&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;You initialize the pager with the id of the element you want to hold the pager links.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;&amp;lt;div id="pager" divtopage="existingNotes" pageSize="2"&gt;&#13;&lt;br /&gt;	&#13;&lt;br /&gt;	&amp;lt;/div&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Then when you add or remove elements from the element you are paging (I hard-coded a div), you refresh the pager, in case the number of pages has changed:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;	function saveNote(){&#13;&lt;br /&gt;			var note = getNote();&#13;&lt;br /&gt;			saveObject(note, noteSaved);&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function noteSaved(note){&#13;&lt;br /&gt;			appendNote(note);&#13;&lt;br /&gt;			clearForm();&#13;&lt;br /&gt;			&#13;&lt;br /&gt;			pager.refresh();&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		function deleteNote(note){&#13;&lt;br /&gt;			if (confirm("Are you sure you want to delete the note '" + note.Title + "'?")){&#13;&lt;br /&gt;				deleteObject(note, noteDeleted);&#13;&lt;br /&gt;				clearForm();&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		function noteDeleted(note){&#13;&lt;br /&gt;			removeNote(note.NoteId);&#13;&lt;br /&gt;			&#13;&lt;br /&gt;			pager.refresh();&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;The code I'm writing uses AJAX, JSON and regular old javascript to talk to my ORM.  So I can call stuff like "deleteObject" and it'll create the XML (parsing XML on the server is easier than parsing JSON) to make the call, call it, and get back a response.  It's super simplistic right now, there's nothing returned except for some easy things.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The pager uses some common functions that have to be linked somewhere (which were either shamelessly stolen from &lt;a href="http://www.quirksmode.org"&gt;quirksmode.org&lt;/a&gt; or I wrote them myself)&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;Array.prototype.clear = function(){&#13;&lt;br /&gt;	while (this.length &gt;= 1){&#13;&lt;br /&gt;		this.shift();&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function addEvent(obj, evType, fn, useCapture){&#13;&lt;br /&gt;  if (obj.addEventListener){&#13;&lt;br /&gt;    obj.addEventListener(evType, fn, useCapture);&#13;&lt;br /&gt;    return true;&#13;&lt;br /&gt;  } else if (obj.attachEvent){&#13;&lt;br /&gt;    var r = obj.attachEvent("on"+evType, fn);&#13;&lt;br /&gt;    return r;&#13;&lt;br /&gt;  } else {&#13;&lt;br /&gt;    alert("Handler could not be attached");&#13;&lt;br /&gt;  }&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function clearChildren(node){&#13;&lt;br /&gt;	while ( node.childNodes.length &gt;= 1 )&#13;&lt;br /&gt;    {&#13;&lt;br /&gt;        node.removeChild( node.firstChild );       &#13;&lt;br /&gt;    }&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function params(name){&#13;&lt;br /&gt;	var qs = document.location.search;&#13;&lt;br /&gt;	if (qs &amp;&amp; qs.length &gt; 1){&#13;&lt;br /&gt;		var start = qs.indexOf(name);&#13;&lt;br /&gt;		var end = start != -1 ? (qs.indexOf("&amp;", start) != -1 ? qs.indexOf("&amp;", start) : qs.length) : -1;&#13;&lt;br /&gt;		if (start != -1 &amp;&amp; end != -1){&#13;&lt;br /&gt;			var value = unescape(qs.substring(start+1+name.length, end));&#13;&lt;br /&gt;			return value;&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		else return null;&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	else return null;&#13;&lt;br /&gt;	&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;function getLink(text, clickEvent){&#13;&lt;br /&gt;	var jsl = document.createElement("a");&#13;&lt;br /&gt;	jsl.setAttribute("href", "javascript:void(0)");&#13;&lt;br /&gt;	if (text) jsl.appendChild(document.createTextNode(text));&#13;&lt;br /&gt;	if (clickEvent) addEvent(jsl, "click", clickEvent);&#13;&lt;br /&gt;	return jsl;&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&lt;/code&gt;</content>
<id>http://www.jasontconnell.com/news/sunburned-and-brain-fried</id>
<link href="http://www.jasontconnell.com/news/sunburned-and-brain-fried" hreflang="us-en" rel="alternate" title="Sunburned and brain fried" type="html"/>
<published>2008-05-28T01:00:51Z</published>
<title type="html">Sunburned and brain fried</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">If you want access, let me know, I'll create you an account and let you access all the code on all of my websites!  There's lots of neat stuff up there.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Subversion is a code versioning system that is heavily used by developers on teams who want to keep their source code in a single place, let people edit or view it, and keep versions of it.  Branches are often made when projects are going to be upgraded from, for example, 1.0 to 2.0.  The 1.0 branch is kept so that any bugs that come up for 1.0 users can be fixed without them having to upgrade to 2.0.  Patching is also very easy with a good versioning system.  There are many reasons to use them, and hardly any not to.&#13;&lt;br /&gt;&#13;&lt;br /&gt;But why am I using one?  Frankly because I had to set up a Subversion server at work (svn for short), so I knew somewhat how to do it.  Also, because it's a good backup system.  Like, hmm, this code used to work, I wonder what I did.  Then I can just look back at the history of a file and see what changed, and revert back to what worked.  Also, for backup, if I ever want to work on it anywhere, I can, because it's on my server that's on the internet 24/7 with the same IP address.  Also if something were to happen to my computer and I haven't backed up recently, I'm screwed.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I've set up SVN about 5 times now, so I'm pretty much an expert.  One thing that I am not an expert at is the authz file.  The other stuff is simple though.  Here's a rundown:&#13;&lt;br /&gt;&#13;&lt;br /&gt;yum install subversion (or apt-get install subversion or emerge subversion) (or download it and run the exe or dmg on Windows or Mac)&#13;&lt;br /&gt;&#13;&lt;br /&gt;svnadmin create /var/data/svndata&#13;&lt;br /&gt;&#13;&lt;br /&gt;edit the configuration&#13;&lt;br /&gt;vi /var/data/svndata/conf/svnserve.conf&#13;&lt;br /&gt;&#13;&lt;br /&gt;edit the passwd file (add your user)&#13;&lt;br /&gt;echo "jason = jason123" &gt; /var/data/svndata/conf/passwd&#13;&lt;br /&gt;&#13;&lt;br /&gt;(I actually haven't tested that exact syntax... it may put it on the same line as a commented line, which wouldn't work)&#13;&lt;br /&gt;&#13;&lt;br /&gt;svnserve -d -r /var/data/svndata&#13;&lt;br /&gt;&#13;&lt;br /&gt;This will create the repository and start the server daemon.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Then you can test it out.&#13;&lt;br /&gt;&#13;&lt;br /&gt;svn mkdir svn://localhost/dev&#13;&lt;br /&gt;&#13;&lt;br /&gt;It might ask you for a username and password then hopefully spit out the message&#13;&lt;br /&gt;&#13;&lt;br /&gt;Committed Revision 1.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Then you can use your favorite code editor plugin for svn and start sharing!  Simple as that.</content>
<id>http://www.jasontconnell.com/news/subversion-server-up</id>
<link href="http://www.jasontconnell.com/news/subversion-server-up" hreflang="us-en" rel="alternate" title="Subversion server up" type="html"/>
<published>2008-05-25T02:00:44Z</published>
<title type="html">Subversion server up</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Kodie had diarrhea so I took her to the vet.  She seems fine now.  I can hear her from here banging on her bowl for food and she didn't eat when she was sick.  That's her way of telling me something's not right.  And banging on her bowl is her way of telling me "I'm effing hungry you ignorant clod!"&#13;&lt;br /&gt;&#13;&lt;br /&gt;She got a haircut while she was there too.  They gave her the "lion cut".  She's had it before, and I wanted to take a picture of her when she had it because it's F#@$#@ing hilarious!  Not just how she looks, but because her hair is so short, she freaks out because she's not used to feeling her tail on her back.  Her tail curls up.  I have to remember to take a picture.</content>
<id>http://www.jasontconnell.com/news/more-dog-sickness</id>
<link href="http://www.jasontconnell.com/news/more-dog-sickness" hreflang="us-en" rel="alternate" title="More dog sickness" type="html"/>
<published>2008-05-20T20:00:01Z</published>
<title type="html">More dog sickness</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">And to some degree, Mac OS X.  I record with an audio interface (Yamaha GO46) through FireWire.  This required no setup in a Mac at first.  I upgraded to Leopard and probably got an update to Logic Express 8 that I just said, OK install it.  This caused some problems.&#13;&lt;br /&gt;&#13;&lt;br /&gt;One of the next times I went to record, I got no sound on monitoring.  It would record, but I couldn't record another track with no feedback.  So my next few recorded songs were single tracks.  Until I really wanted to record more than one track, this was fine.  I then had to check the internets for an answer.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Some forums were like "Create an aggregate device in the Audio MIDI Setup tool."  I was like, yeah.  I tried this but had no idea what the implications were.  I found an &lt;a href="http://www.apple.com/pro/techniques/aggregateaudio/"&gt;Apple article&lt;/a&gt; that basically solved all of my problems.  So I set up my aggregate device, set my audio interface as the first device and the 'clock', and set my built-in output as the second device.  Worked like a champ... until I tried to "bounce" the songs I was recording.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The way I had it set up, inputs 1-4 and outputs 1-6 were the audio interface, and outputs 7-8 were built in output.  So, I could hear everything as I was recording, but now I couldn't get any sound when I bounced to mp3.  This is because the default bounce method bounces outputs 1-2.  I had to bounce 7-8, my built-in outputs.  Anyway, I have to go babysit.  Here's the songs I recorded recently.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;a href="http://stringed.org/files/Jamaica.mp3"&gt;Jamaica&lt;/a&gt;, I'm excited for my trip.&#13;&lt;br /&gt;&lt;a href="http://stringed.org/files/Improva.mp3"&gt;Improva&lt;/a&gt;.  I was calling this one "Improv in A" but shortened it.</content>
<id>http://www.jasontconnell.com/news/today-i-figured-out-logic-express</id>
<link href="http://www.jasontconnell.com/news/today-i-figured-out-logic-express" hreflang="us-en" rel="alternate" title="Today I figured out Logic Express" type="html"/>
<published>2008-05-17T15:15:21Z</published>
<title type="html">Today I figured out Logic Express</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I always feel like I accomplished something when I pay bills, so I have to write a post about it.  But this time is extra special.&#13;&lt;br /&gt;&#13;&lt;br /&gt;One check, which happened to be almost precisely covered by a combination of two checks I received recently, including my tax refund and a refund for homeowners insurance, with $8 remaining after the fact, will guarantee a great time for me and Zatko and a bunch of our friends, Zatko's fiancee Amanda, her friends, some family, and loads of unsuspecting resort occupants, as we embark on our trip to Jamaica!!!  Zatko and Amanda are getting married down there.&#13;&lt;br /&gt;&#13;&lt;br /&gt;It's at the end of June, we'll be departing Philadelphia on my Dad's birthday, June 25th, and heading back on July 2nd.  I figure I'll take off the 3rd as well and be back in work that following Monday, since July 4th falls on a Friday.  Woohoo.  I'll use jet lag as an excuse even though Jamaica is in the same time zone.  Not much to say about it now, though.  I will have TONS of pictures and stories when we get back.  I really can't wait.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I also mailed in some checks for things like mortgage and the oil bill, and mailed in my latest netflix movies, two John Grisham movies and a documentary.  Good stuff.  I have to get to mailing them in quicker so I can actually not waste all that money.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The postage price goes up tomorrow so I just put two $0.41 stamps on each envelope.  The trip payment and the mortgage are close to due so I don't want them coming back to me.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Mother's Day was nice, even though the Flyers lost again.  Not sure how the Phillies did but we watched for a while.  It was 4-3 Giants last I saw.  Then the golfer we were cheering for (Goydos) lost to Sergio Garcia in the playoff.  I had to have some happy news to write about.</content>
<id>http://www.jasontconnell.com/news/the-check-is-in-the-mail</id>
<link href="http://www.jasontconnell.com/news/the-check-is-in-the-mail" hreflang="us-en" rel="alternate" title="The check is in the mail" type="html"/>
<published>2008-05-11T23:00:45Z</published>
<title type="html">The check is in the mail</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">From the Playoffs in 2006 (I was just as excited this year but I haven't been making posts about it):&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;a href="http://www.jasontconnell.com/news/2006/4"&gt;April 2006&lt;/a&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;It includes such classic posts like Philadelphia Fans Defined (which goes on to say I hate Buffalo natives and now I work with two of them... it's hockey, they forgave me already), and my Mom's birthday where I talk about how I told the lady at the jewelry store that perhaps she isn't a good mom!  It's a classic.  Back when I used to get comments on my website (not a blog)!   NOAT where are you?!?  And of course, NHL playoffs in general which happen "nearly every year" with an asterisk.  The year previous was the lockout, so of course the asterisk read "Not last year".  Man, I used to be pretty funny :)  At least I make myself laugh.</content>
<id>http://www.jasontconnell.com/news/more-flyers-posts</id>
<link href="http://www.jasontconnell.com/news/more-flyers-posts" hreflang="us-en" rel="alternate" title="More Flyers Posts!" type="html"/>
<published>2008-05-09T02:10:48Z</published>
<title type="html">More Flyers Posts!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I watch this movie:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zfj0iSSPVTs&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/zfj0iSSPVTs&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;It's a good one.  It ends with "Flyers win the Stanley Cup!! Flyers win the Stanley Cup!!"  But it has a lot of great Philly sports moments, like the 93 NL East Championship, Eagle's in '04 beating the Falcons to go to the Super Bowl, Dr. J's tomahawk dunk or whatever.  It was made before the Phils won the NL East last year.  Then it has a lot of bad moments... Lindros going down to Scott Stevens, Mitch Williams and the Phils losing the World Series in '93, shots of McNabb (although some good ones when he was athletic), and a bunch of other crap.  But it ends on the best moments, and it gets me hyped up for the game.  So much that it's 1am and I can't fall asleep.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The Flyers look great so far, and I hope they can keep it up.</content>
<id>http://www.jasontconnell.com/news/on-the-eve-of-philadelphia-vs-pittsburgh</id>
<link href="http://www.jasontconnell.com/news/on-the-eve-of-philadelphia-vs-pittsburgh" hreflang="us-en" rel="alternate" title="On the eve of Philadelphia vs. Pittsburgh" type="html"/>
<published>2008-05-09T01:00:44Z</published>
<title type="html">On the eve of Philadelphia vs. Pittsburgh</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">GTA IV is all over the news because you can:&#13;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Drive Drunk&lt;/li&gt;&lt;li&gt;Shoot Cops&lt;/li&gt;&lt;li&gt;Score with Women&lt;/li&gt;&lt;li&gt;Go to strip clubs&lt;/li&gt;&lt;li&gt;Cause complete chaos and have the cops forget about you a few minutes later&lt;/li&gt;&lt;li&gt;Of course, steal cars&lt;/li&gt;&lt;li&gt;And, hit monstrous jumps&lt;/li&gt;&lt;/ul&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;There are a bunch of groups that are going after the game, like MADD, who has turned from an anti drunk-driving group into a prohibitionist group trying to get alcohol banned again.  Good luck with that.&#13;&lt;br /&gt;&#13;&lt;br /&gt;There's also other people addressing the violence.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Any of those things I mentioned above, you would not be able to survive in real life.  It's what makes it &lt;i&gt;a game&lt;/i&gt;.  In other games I've also ran through burning buildings and lived to tell about it, or have taken thousands of bullets and all I have to do is find cover and I'm fine.  One time in GTA IV I drove my car off of a 80 foot drop straight down.  The car flipped numerous times and wound up hitting a pole straight on.  I didn't even lose any health.&#13;&lt;br /&gt;&#13;&lt;br /&gt;People need to lighten up, but damn that game's fun.  And I wasn't driving like a maniac after I played for a few hours.  I just drive the way I normally do.  In fact, I have a difficult time "escaping" reality in that I don't just go running over pedestrians or shooting people.  I try to find one car and stick with it as long as I can.  I don't even like to get into accidents where all I do is side swipe someone.  Sometimes you can't help it though and it will turn out to be some hilarious death of some poor sucker who just happened to be between your car and some pole or wall at the most inopportune of times.&#13;&lt;br /&gt;&#13;&lt;br /&gt;It is soulless fun and it takes some really screwed up minds to come away affected by it, more than just dreaming about it.  I've played Railroads! for hours, which is the least violent game ever, and I've dreamed about it.  If you have no imagination, then you obviously can't think this kind of stuff up to keep your idle mind entertained.  If you have video games, you don't need an imagination to have fun (unless they're the really old games that expected you to still use your imagination).  However, if you look at games as *practice*, then you're screwed up.</content>
<id>http://www.jasontconnell.com/news/gta-iv-is-soulless-fun</id>
<link href="http://www.jasontconnell.com/news/gta-iv-is-soulless-fun" hreflang="us-en" rel="alternate" title="GTA IV is soulless fun" type="html"/>
<published>2008-05-06T11:00:57Z</published>
<title type="html">GTA IV is soulless fun</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">That's right.  My brother Scott and I were talking about the shit our family's been through, and he said "When I get to heaven there's gonna be some words between God and me."  Then he did a pretend dialogue, and said "You know what, God..." and I interjected, and said "You're an asshole".  HA.  It was funny.</content>
<id>http://www.jasontconnell.com/news/tonight-i-called-god-an-asshole</id>
<link href="http://www.jasontconnell.com/news/tonight-i-called-god-an-asshole" hreflang="us-en" rel="alternate" title="Tonight I called God an asshole" type="html"/>
<published>2008-04-21T00:40:50Z</published>
<title type="html">Tonight I called God an asshole</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I have been paying my credit cards religiously.  Like 200-300 a month, just to get the balance down.  I went from around $2,000 a year ago to finally getting it nearly paid off this year.  I have a recurring $100 charge going to the one credit card for my dedicated server on which this website is hosted (among others).  However, I missed a payment last month.  For which I was charged $40!  WTF.  That's all I got to say.&#13;&lt;br /&gt;&#13;&lt;br /&gt;However, my student loan, which is still asking for $10,000, doesn't mind this practice.  If I pay $200, I don't have to pay next month, since it is about $100 a month (less than that, but no less than $90).  In fact, it warns me that I'm paying more than the required minimum amount.  Credit cards got to shape up.  WTF.</content>
<id>http://www.jasontconnell.com/news/a-crooked-habit-of-credit-card-companies</id>
<link href="http://www.jasontconnell.com/news/a-crooked-habit-of-credit-card-companies" hreflang="us-en" rel="alternate" title="A crooked habit of credit card companies" type="html"/>
<published>2008-04-21T00:00:06Z</published>
<title type="html">A crooked habit of credit card companies</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">You can get Short Circuit for $4.99?!?  That's AWESOME!  Of course, knowing my luck in movies, it'll be on all next month on HBO or something.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Also, Amazon might finally not lose lots of money on my Amazon Prime account.  I just ordered tons of stuff... glasses for the kitchen since they all seemed to have disappeared recently... movies... silverware since most of them have also disappeared...  napkin holder.  It said it's all shipping in one package.  ??  Yeah, we'll see.  One shipment from one warehouse, definitely, but one package would be hard to believe.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I watched the debate in Philadelphia tonight between Barack Obama and Hillary Clinton.  I thought I liked Obama better even though almost everyone who they interviewed after the debate said Clinton did better.  They had a focus group of college students, and talked to them after the debate, and they said Hillary did better.  I would have to disagree that she did better.  But I can't say any of them did bad.  I just felt like Barack was more comfortable up there, actually making eye contact with the person he was talking with.  Debates are funny though.  The first person who talks loses.  If it's a debate between two people of the same party, you'll hear "Well, I agree with most of the points blah makes, but here's where we can approve on that."  Basically, whoever gets in the last word.  They'll never 100% agree.  You'll never hear Obama say "Wow, I think Hillary has a great way to fix the blah problem in this country and I have nothing to add."  You'll never hear short answers.  You'll never hear an answer directly related to the question asked.  I just laugh.  I'm voting for Nader anyway...</content>
<id>http://www.jasontconnell.com/news/what-kind-of-world-do-we-live-in-when</id>
<link href="http://www.jasontconnell.com/news/what-kind-of-world-do-we-live-in-when" hreflang="us-en" rel="alternate" title="What kind of world do we live in when..." type="html"/>
<published>2008-04-16T23:25:14Z</published>
<title type="html">What kind of world do we live in when...</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Ramones (1st LP) [Remaster]  - CD&#13;&lt;br /&gt;The Ramones&#13;&lt;br /&gt;&#13;&lt;br /&gt;Never Mind The Bollocks, Here's The Sex Pistols - CD&#13;&lt;br /&gt;The Sex Pistols&#13;&lt;br /&gt;&#13;&lt;br /&gt;American Beauty [Digipak] - CD&#13;&lt;br /&gt;Grateful Dead&#13;&lt;br /&gt;&#13;&lt;br /&gt;Dire Straits (1st LP) [Remaster] - CD&#13;&lt;br /&gt;Dire Straits&#13;&lt;br /&gt;&#13;&lt;br /&gt;Giant Steps - CD&#13;&lt;br /&gt;John Coltrane&#13;&lt;br /&gt;&#13;&lt;br /&gt;Beautiful Ballads &amp; Love Songs - CD&#13;&lt;br /&gt;Miles Davis&#13;&lt;br /&gt;&#13;&lt;br /&gt;16 Biggest Hits - CD&#13;&lt;br /&gt;Roy Orbison&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;JR.com had a $7 cd sale.  I looked through everything, but there was some other good stuff that I decided not to get. </content>
<id>http://www.jasontconnell.com/news/trying-some-new-stuff</id>
<link href="http://www.jasontconnell.com/news/trying-some-new-stuff" hreflang="us-en" rel="alternate" title="Trying some new stuff" type="html"/>
<published>2008-04-15T16:00:38Z</published>
<title type="html">Trying some new stuff</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I am a software developer, but I will not buy most of the software that I use.  Don't worry, I don't steal it.  But I find that there's tons of software out there that's "free" but also good.  I'm not talking about "Lite" versions of software, or "Shareware" trial versions that you can hack to never have to register / buy... I'm talking about FREE SOFTWARE that the authors wrote out of the kindness of their heart (and a huge curiosity and desperate search for knowledge) that they put on websites somewhere, put &lt;i&gt;the code&lt;/i&gt; out there, and said "Here.  Enjoy."&#13;&lt;br /&gt;&#13;&lt;br /&gt;I know I couldn't have a job right now if all software was free.  But custom development is another story.  If someone needs an online scheduling system, then I (we) will write them one.  I'm sure they could find one online and tweak it, but that's usually a shot in the dark.  There's also somewhat of a difference between working out of curiosity and working to put food on the table.  I've done an online scheduling system, it wouldn't be fun or illuminating since I've already done it.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The thing with software is that if you're making it for fun or out of curiosity, the cost of reproducing it today is so cheap.  The same thing everyone's figuring out about music and movies.  You produce it &lt;i&gt;once&lt;/i&gt;, and everyone in the world can have a copy if you can get it to them.  It's kind of crappy that we all still have to pay $0.99 per song at most places we can get digital music.  Some software, however, can cost millions of dollars to produce, and these should charge hefty sums.  But if you're just doing it out of curiosity and to learn something new, putting it on the web, even just code in html or something, gives that knowledge to everyone who happens to come across it.  Then they can be inspired to try something new with it, and if they learn something out of it, they would share it with you since you sparked their interest and gave them that initial knowledge to light that fire under their bums.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Software today is generally in good shape this way.  There are sites dedicated to sharing code (sourceforge.net to name one).  There are sites set up to provide legal assistance to those looking to open source their code in a way that if someone uses it, they can't sue them if it goes bad.  These licenses generally also state that if the next person makes changes, (s)he's free to either send the changes back to the original author to improve that software, or put his or her changes up on their own website and pass it on to people under the same license (free and open source).  You don't see this type of stuff in business, only in SCIENCE.  Science is the pursuit of knowledge.  That's what it's all about baby.</content>
<id>http://www.jasontconnell.com/news/is-it-hypocritical-of-me</id>
<link href="http://www.jasontconnell.com/news/is-it-hypocritical-of-me" hreflang="us-en" rel="alternate" title="Is it hypocritical of me?" type="html"/>
<published>2008-04-10T22:00:43Z</published>
<title type="html">Is it hypocritical of me?</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">My brothers and I have been working on the new patio for my house.  Yesterday we laid the brick.  I have video of the process. Contrary to the video, I wasn't standing around the whole time :P  I actually moved about 350 bricks from the sidewalk to the patio, at about 25 bricks per barrel load, probably 50 pounds a pop.  Here's the Kodie head tilt video:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=8258120219300770506&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;My living room's a mess, and I'm not cleaning it until later today since we're not done for the weekend yet.&#13;&lt;br /&gt;&#13;&lt;br /&gt;And here's the patio video so far.  Next we'll be working on the lawn, putting in trees and a rock garden, and getting rid of all the grass and replacing it with mulch or rock or something.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-6443433928407542966&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I have to say, thank you to my brothers, Pat, Bean, and Scott, for their help / doing it all :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;I also have to say, I am glad that Google is around to upload my videos to for free and embed them in my website.  And to Apple for iMovie '08, and Sony for the 30 GB HDD on my camera, and USB hookup, so I can record crap without worrying about tape and digitizing.  Thanks.</content>
<id>http://www.jasontconnell.com/news/new-patio-and-kodie</id>
<link href="http://www.jasontconnell.com/news/new-patio-and-kodie" hreflang="us-en" rel="alternate" title="New Patio and Kodie" type="html"/>
<published>2008-04-06T08:00:30Z</published>
<title type="html">New Patio and Kodie</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I was at the "Heroes Happen Here" launch event for Visual Studio 2008 and a bunch of other software that still lags behind open source offerings.  I knew we were getting free software (Visual Studio 2008, SQL Server 2008, Windows 2008) but I didn't know we were getting Vista.  It was a pleasant surprise because now when games start coming out that only work on Vista, I'm ready and don't have to spend $400.  And that's all I have to say about that.  Thanks Microsoft!&#13;&lt;br /&gt;&#13;&lt;br /&gt;It was generally a good time.  Four of us from work.  We got there and registered with 40 minutes left to go until the first event, so we headed out to the Reading Terminal Market for lunch.  It's across the street from where the event was hosted, at 12th and Market (Marriot).  Mark lost his sunglasses so went back to get them while we went to the market.  We ended up going to Famous Frank's near the Beer Garden, and then ate at the Beer Garden.  You have to buy beer in order to eat there, which we did.  Mark doesn't drink, so I said if he gets accosted about having to buy beer, I suggested he just buy one, put it in front of him, and I'll drink it.  He didn't, but a couple got thrown out before he got there because they weren't boozin.&#13;&lt;br /&gt;&#13;&lt;br /&gt;We left and went to the first show, which we were late for.  It was my friend and former coworker, Danilo Diaz, giving the first developer track talk.  After that, we got our free software, checked in with the second talk, and left after 10 minutes because it was general crap.&#13;&lt;br /&gt;&#13;&lt;br /&gt;During the first talk, it was stuff that all of us have done already.  The only interesting feature about 2008 and .NET 3.5 is Lambda expressions (which I'm not even really impressed with), and they weren't even covered.  Way to go Dan :P  We were talking through a lot of it.  When he showed the Javascript debugger in Visual Studio 2008, everyone cheered, and I said, kinda loud, "Firebug!!".  Some dudes behind me laughed.  I was texting a coworker stuck back at the office, checking if I could get internet on my iPod, and just generally being a jackass.  I was there for the free shit.  We learned nothing new.  Everything that was covered, one of the four of us have already done, and it's just like "Oh, yeah, look at this code in source safe, and here's some other hints about it."  I don't know one person who (besides my Java friends :P) hasn't done ASP.NET AJAX and used UpdatePanels.  It certainly didn't need all that time to go over it.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Oh well, Danilo works at Microsoft now, and I've never been impressed with their code examples or presentations, so I guess that just comes with the territory.  Do they say "Keep it short and don't cover interesting stuff" ?  I don't know, there might have been people there that haven't seen that stuff.  Who knows.  Maybe I'm just at a very technologically advanced company.  That could very well be it, but I can't understand, then, why I've been doing PHP for the past two months :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;Other than that it was a good time.  It helps when you're like best friends with the people you work with.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Thanks for Vista, suckers.</content>
<id>http://www.jasontconnell.com/news/today-i-got-vista</id>
<link href="http://www.jasontconnell.com/news/today-i-got-vista" hreflang="us-en" rel="alternate" title="Today I got Vista" type="html"/>
<published>2008-04-03T19:00:16Z</published>
<title type="html">Today I got Vista</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Oh internets, how I hate thee.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Some days I would just be better off without it.  With all the blatant lies and corruption going on, I would love to just stay away.  I should.  Case in point, OOXML standardization in ISO.  Just google "OOXML ISO".  Also, I can't stand whiny HD-DVD fans complaining about Blu-ray winning the HD format war.  More on that later.  Some sites I hate include ZDNet... that's about it.&#13;&lt;br /&gt;&#13;&lt;br /&gt;However, there's some oh so goodness to it.  Like &lt;a href="http://xkcd.com" target="_blank"&gt;xkcd&lt;/a&gt;.  I'm not gonna link or mention my favorite sites, but some are Amazon, Slashdot, Wikipedia, and iTunes science podcast directory.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Ok, onto my ZDNet-hate-HD-DVD-Blu-ray-hate rant.  So, this dude on ZDNet works at Microsoft and posts to that site.  Is complaining about Blu-ray today, or whenever, that "the more expensive format won".  But then he goes on to call blu-ray "more future proof".  I've caught this dude on so many contradictions like this, it just makes me angry.  Of course, he never responds to my posts, and he keeps making asinine statements and I keep responding and he keeps ignoring, it's just a frustrating mess.  Of course, "more future proof" means less expensive in the long run.  It just points to the quality of worker they have there working at Microsoft.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Of course, the non-Microsoft world has its shining stars too.  Like the writers of PHP.  It's ridiculous.  For instance, today I wanted to find the first paragraph in an HTML string, and I'm fairly familiar with regular expressions, so I checked the syntax on how to match a string to a regex and get the matches (groups in any other regular expression library terminology) out of it.  This is easy:  /&amp;lt;p&gt;(.*?)&amp;lt;/p&gt;/g.  But not in PHP.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;&#13;&lt;br /&gt;$matches = array();&#13;&lt;br /&gt;preg_match_all("/&amp;lt;p&gt;(.*?)&amp;lt;/p&gt;/", $htmlString, $matches);&#13;&lt;br /&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;OK, looks easy.  $matches will then have an array of matches.  But that's where it gets tricky.  The fourth parameter is optional, and it's called "flags". Read the "flags" part &lt;a href="http://us2.php.net/manual/en/function.preg-match-all.php" target="_blank"&gt;here&lt;/a&gt;.&#13;&lt;br /&gt;&#13;&lt;br /&gt;PREG_PATTERN_ORDER - Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on. &#13;&lt;br /&gt;&#13;&lt;br /&gt;PREG_SET_ORDER - Orders results so that $matches[0] is an array of first set of matches, $matches[1] is an array of second set of matches, and so on. &#13;&lt;br /&gt;&#13;&lt;br /&gt;PREG_OFFSET_CAPTURE - If this flag is passed, for every occurring match the appendant string offset will also be returned. Note that this changes the value of matches  in an array where every element is an array consisting of the matched string at offset 0  and its string offset into subject  at offset 1.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Yes, the "matches" array will be different for every flag.  In Java, this looks (half-hearted with no syntax check) like this:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;&#13;&lt;br /&gt;Pattern p = Pattern.compile("/&amp;lt;p&gt;(.*?)&amp;lt;/p&gt;/");&#13;&lt;br /&gt;Matches matches = p.match(htmlString);&#13;&lt;br /&gt;for (Match m : matches){&#13;&lt;br /&gt;   m.group(1); // always contains the first set of parentheses in the regular expression.&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I'm tired so I have to finish writing another time.  Tune in for part two soon!</content>
<id>http://www.jasontconnell.com/news/the-internet-so-good-yet-so-so-bad</id>
<link href="http://www.jasontconnell.com/news/the-internet-so-good-yet-so-so-bad" hreflang="us-en" rel="alternate" title="The Internet: So good, yet so so bad" type="html"/>
<published>2008-04-02T01:00:44Z</published>
<title type="html">The Internet: So good, yet so so bad</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I just bought two "compilation" albums that should keep me occupied for a couple of days.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Eddie Cochran&#13;&lt;br /&gt;Buddy Holly&#13;&lt;br /&gt;&#13;&lt;br /&gt;Greatest hits or whatever.  I get the morning shift in work, of music.  We throw on tunes and rock.  Friday I put on the Beastie Boys "License to Ill", and previous installments included Red Hot Chili Peppers, Guns n' Roses, Blind Melon, and I forget what else.  It's a good time.  Time to mix it up with some 50s rock.</content>
<id>http://www.jasontconnell.com/news/i-like-that-old-time-rock--roll</id>
<link href="http://www.jasontconnell.com/news/i-like-that-old-time-rock--roll" hreflang="us-en" rel="alternate" title="I like that old time rock &amp; roll" type="html"/>
<published>2008-03-30T20:55:11Z</published>
<title type="html">I like that old time rock &amp; roll</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">&lt;img src="http://www.jasontconnell.com/albums/jason/album3/0330081348a.jpg" width="550"&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Don't we?&#13;&lt;br /&gt;&#13;&lt;br /&gt;For the past two days my brothers and I have been working on my lawn.  It's exhausting.  It'll be awesome when it's done.  I'll have pictures up in about a month.</content>
<id>http://www.jasontconnell.com/news/we-make-a-cute-couple</id>
<link href="http://www.jasontconnell.com/news/we-make-a-cute-couple" hreflang="us-en" rel="alternate" title="We make a cute couple" type="html"/>
<published>2008-03-30T15:00:01Z</published>
<title type="html">We make a cute couple</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">This has been apparent since I started learning about science, besides biology.  I'm up the latest I've been up for the past month or so.  It's 2 AM.  Bear with me.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I was always also pretty good at math.  No genius, but kind of quick to catch on.  This was displayed in first grade when I was moved from the B class to the A class in Math.  I was 6.  This also was evident when instead of learning long division the way the teachers would teach it, I taught myself a way to do it without writing even a quarter as much as the teacher's method.  I taught this to a kid in the class who was having problem doing it, and he got in trouble because he didn't "do all the math".  But it gave right answers.  I never got in trouble.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Then after about 8 years of video games (Nintendo and Sega Genesis mainly), by the time I was 14, I knew that I wanted to make video games, but didn't know what to learn to be able to do that.  In the meantime, I was still in first track math, getting 95s or so without trying much, acing Geometry and Trig, doing good in calculus.  When I was a junior, I had to start thinking about college, and had no idea what I wanted to do besides make video games, which I hadn't researched at all.&#13;&lt;br /&gt;&#13;&lt;br /&gt;So, instead, I was doing good in chemistry and generally enjoying it, so in my Junior year, I wanted to be a chemist.  The next year, I learned physics, was really good at it, and highly enjoyed it.  Although, I was only in 2nd track physics.  So I wanted to be a physicist.  Either of these two would have been a disaster, I think, compared to what I did end up taking.&#13;&lt;br /&gt;&#13;&lt;br /&gt;In college, still looking to fill that gaping void, I took a few physics classes, including astronomy.  Today, I still can't get enough physics.  With the advent of the internet, and podcasts, I listen to all things physics and astronomy, including &lt;a href="http://www.astronomycast.com/" target="_blank"&gt;Astronomy Cast&lt;/a&gt;.  But not only podcasts.  Audiobooks are like 4 hours long.  I have 18.7 hours worth, including three Stephen Hawking books, and one by the Dalai Lama, which is called "The Universe in a Single Atom", which is just a history of his studies and learnings from various minds in theoretical physics.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The only things is I'm not smart enough to come up with my own theories or even begin to understand some of the more complex theories out there.  There's not math in those books, though, just theories or almost proven theories, but no math to back them up.  Which is fine, I'd be completely lost since I haven't had a math course in years.  The way they explain it is good.  The current Astronomy Cast is "What shape is the Universe?"  I just get so completely lost thinking about it.  You might be able to come up with any shape as long as you can come up with a bit of evidence to prove it.  I can say, "When you step away from the universe and look at it, it spells 'Jason'".&#13;&lt;br /&gt;&#13;&lt;br /&gt;And talking about 11 parallel universes.  A universe that is always expanding.  And every object in space, every other galaxy we see is moving away from us, but we're not in the center.  There is no center.  And is it finite?&#13;&lt;br /&gt;&#13;&lt;br /&gt;The big bang.  How when the universe "started", it started as a point with a trillion trillion trillion trillion trillion grams per square centimeter or whatever.  My one theory is this... I imagine multiple big bangs in the past, but each time, the universe collapsed on itself.  So there's no way to know just how old the universe is because each time it started over.  Time started over.  Einstein, move over :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;If you think about that, multiple big bangs, but this universe is always expanding now... it means that in the past big bangs there was more mass in the universe that gravity made it eventually come back together.  After billions and billions of years.  But what happened to that mass that now it's expanding with no collapse in sight?  I don't know that there's no collapse in sight, though.  If the acceleration of the expansion of the universe is slowing down, then it will collapse again.  Of course I don't know that this isn't already a theory since I don't read or listen enough, and anything that Hawking doesn't discuss has since been ignored.  But I'll take credit for it :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;Just wrapping my head around those ideas;  the infiniteness of the universe, the shape, the center.  How instead of Newton's theory of gravity where objects PULL other objects to them, instead there's wells created in space.  How nothing in space travels in a straight line, not even light, since it gets warped by these divots in space created by mass.  It might keep me up later thinking about it, but I wouldn't venture to call myself even an amateur theoretical physicist, maybe not even a hobbyist, I just want to understand.  But Astronomy Cast says some of it is the most difficult ideas to understand.  Well, I love a challenge.</content>
<id>http://www.jasontconnell.com/news/i-have-an-affinity-for-science</id>
<link href="http://www.jasontconnell.com/news/i-have-an-affinity-for-science" hreflang="us-en" rel="alternate" title="I have an affinity for science" type="html"/>
<published>2008-03-25T01:25:31Z</published>
<title type="html">I have an affinity for science</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Sometimes I'll add an item to my amazon.com cart, only to end up leaving it there for months.&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;img src="http://www.jasontconnell.com/albums/jason/album6/amazon.jpg"&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;When I added that MicroSD card for my phone, it was like $30. Buy!&#13;&lt;br /&gt;&#13;&lt;br /&gt;Now, Jaws on the other hand... Damnit, I missed the $9.99 price.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Another item, I think it was Bill &amp; Ted's Excellent Adventure, just reached below $6 earlier this morning.  Might have to hop on that one.</content>
<id>http://www.jasontconnell.com/news/amazoncom-market</id>
<link href="http://www.jasontconnell.com/news/amazoncom-market" hreflang="us-en" rel="alternate" title="Amazon.com Market" type="html"/>
<published>2008-03-20T10:00:33Z</published>
<title type="html">Amazon.com Market</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Actually, some intern working for his campaign in Delaware County, PA, who's never met him, etc, telling me that in order to vote for Barack Obama during the Primary on April 22nd or whenever it is, I have to register as Democratic, instead of whatever I'm listed as (Independent or Other I think they said)... (Actually, I specifically remember I put "Unaffiliated" thinking no one would bug me, but it's a swing position, so everyone bugs you.  Oh well, better to not lie to everyone than just say I have no affiliations to imaginary parties :)   Not to offend anyone, I just don't take politics very seriously...)  So, they said I would have to "register as democrat" in order to "vote for Obama" because that's what every unaffiliated person does, but that I could "change back later".&#13;&lt;br /&gt;&#13;&lt;br /&gt;First off, I don't get that rule.  If everyone knows which way you're voting, what the hell's the point of voting, other than getting off the couch and heading to the polling station.  Oh, yeah, there they can hand you fliers and tell you that you've picked the wrong side like a jackass.  I agree with the whole voting thing and democracy, but I like to not be bugged.  I know there's an election coming up in November (who hasn't seen Hilary and Barack on TV in the past year?).&#13;&lt;br /&gt;&#13;&lt;br /&gt;Oh yeah, so, chances are I'll vote democratic, but I'm not voting at the primary, if I have to change my affiliation.  I picked that for a reason.  Make people think they have to work for my vote.  I'd rather not even have to care about politics, but there's just a lot of crap wrong with the world, and my little vote can make a difference!  Unless I pick the wrong guy... (or girl)</content>
<id>http://www.jasontconnell.com/news/barack-obama-called-today</id>
<link href="http://www.jasontconnell.com/news/barack-obama-called-today" hreflang="us-en" rel="alternate" title="Barack Obama called today" type="html"/>
<published>2008-03-15T15:00:12Z</published>
<title type="html">Barack Obama called today</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">These two new songs could be said to be written for Kodie, since one was before I went to pick her up at the Vet, and the second one when I got her home and all fed (2 full cans of soft meaty dog food!).&#13;&lt;br /&gt;&#13;&lt;br /&gt;The first one, a Mother Fing Jam in G, can be downloaded &lt;a href="http://stringed.org/files/motherfingJamInG.mp3" target="_blank"&gt;here&lt;/a&gt;.  It shows why I love my new found experience of fingerpicking, and also hammering on two notes at the same time with two different fingers on two very different strings.  You just have to put on headphones and listen to it to tell where I'm talking about.  Otherwise, it's just I hear a rhythm in my head and play along.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The second one, Long Jam, &lt;a href="http://stringed.org/files/LongJam.mp3" target="_blank"&gt;here&lt;/a&gt;, starts off finding a rhythm to play along with, then plays around in D for a while.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Kodie got her whole bottom row of teeth pulled :(  The front though, none of her big teeth.  These looked real bad in the past week or so, and I noticed two of them, at least, were really loose.  So they're all gone.  She's fine though. They said in a few weeks, if I want I can go back to the hard food, if Kodie will eat that stuff still!  I gave her some soft food, and it was like meat with gravy.  Two full cans, and she just ate it up.  She was starving so we'll see how she is tomorrow.  If she's still excited about getting food, then I actually have to learn how to portion it for her!  Usually when the bowl's empty I fill it and it won't be empty for about a day or so.  She's very good about eating that food because she doesn't like it :)  It's only when necessary.  But I bet I could keep filling her bowl up with this soft, meaty, gravy covered food and she'll just keep eating it.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I watched the HBO show "In Treatment" tonight and really liked it.  I was like "I should probably watch that show, it's on a couch, and there's no room for bad acting, so it's probably excellent or really shitty".  Then as I was thinking that, it came on.  It was probably an "On Next" thing.  It's on HBO.  It was excellent, I must say.  Might watch it some more.</content>
<id>http://www.jasontconnell.com/news/two-new-songs--kodie-looks-funny</id>
<link href="http://www.jasontconnell.com/news/two-new-songs--kodie-looks-funny" hreflang="us-en" rel="alternate" title="Two new songs,  Kodie looks funny" type="html"/>
<published>2008-03-13T22:00:25Z</published>
<title type="html">Two new songs,  Kodie looks funny</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I was sick Monday and Tuesday, but when I went downstairs after two days of bed ridden disgustingness, I noticed my dog wasn't eating anything, hadn't eaten for two days.  While I would have been flattered if she stopped eating because I was sick, I know they're smarter than that :P  I tried to give her her favorite treat and she turned it down.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Today (Wed the 12th) I was fine on maybe taking one more day off to fully recover, but I had to get the dog to the Vet, and I might as well go to work after that.  I was feeling like total garbage up until about 2:30, though, and then from about 3:15 onto the end of the day.  Took Kodie to the Vet at 9 or shortly after, was in work by 9:45.  I missed the phone calls from the Vet because this is how delirious I was all day:  we're in sort of a lunch meeting at work, and I'm like "Hmm, if my phone goes off... blah blah, should I check to see if it's on?  Nah it's fine"... 2:30 rolls around and I'm like "Man, they still haven't called me..."  The office closes at 3 and opens again at 6.  I check my pockets... no phone!  No idea.  It was in the car.  I may have even been delirious about Kodie not eating for 2 days since I was totally out of it for 1.  But just her energy level, it was soooo low, and if you know Kodie, you know she's nothing but energy most of the time.  You *can* calm her down, but usually she does much more stupid and funny things when she's all crazy :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;It's like, of course Vets can say "Oh we have to check for everything" and charge you for it all... but it's not even that expensive.  But you can tell that Kodie has some bad teeth and might not be eating because it hurts her.  But the Vet's gonna do blood tests, spool tests, all this stuff, might as well.  And you can't say "I think it's just because of her teeth", even though in the end you may be right... because us lay people don't know.  &#13;&lt;br /&gt;&#13;&lt;br /&gt;I know I can't say that because in my profession, it is also best to be thorough. I know sometimes I can see the answer WAAAY before I even begin looking into code, lots of times I can tell you the exact file the problem is in, and almost never can I tell you what line it's on.  Sometimes I boggle my own mind on how quick I come across some of these answers.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Just that it's probably way less expensive to find a problem with your pet relatively soon after a scheduled appointment so you don't have to get all the tests again :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;She'll be fine though.  She may never be able to eat hard food again, but I'm sure the Vet will tell me what kind of food to give her.  They called me at like 7 and said I could pick her up after giving me the lowdown on her condition and how none of the tests they've done led to anything (no kidding!?).  They said I can take her home or leave her overnight because she has another thing tomorrow.  Leave her overnight?!  Yeah right.  They tell me she can't eat any food, even though I took her there because she hadn't eaten any food for two days.  Plus, the lady doctor assistant was like "I gave her some of the i/d food (some sort of dietary food for dogs), and she ate it right up"  And I was like "That's good!  Was it soft?" And she's like "Yeah, it was soft".  But I get Kodie home and they gave me this 3/4 full tin of that food and told me not to feed her because she's having a procedure done tomorrow to her teeth.  I'm like "Ok.  No problem"... Yeah right.  She's gotta be starving, so I give her almost all of the can of food.  There's hardly any left :) But now she seems real good.  She had so much energy tonight out with the neighbor's dog, it was great :)</content>
<id>http://www.jasontconnell.com/news/dogs-are-the-best</id>
<link href="http://www.jasontconnell.com/news/dogs-are-the-best" hreflang="us-en" rel="alternate" title="Dogs are the best" type="html"/>
<published>2008-03-12T21:00:19Z</published>
<title type="html">Dogs are the best</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Did you take &lt;a href="http://acid3.acidtests.org" target="_blank"&gt;Acid3&lt;/a&gt; with your browser?&#13;&lt;br /&gt;&#13;&lt;br /&gt;My FireFox 3 beta 3 scores 61 out of 100.  The best reported was Opera 9.5 at 65.  The cofounder of Opera was a designer of CSS or something.  Acid3 was more of a Javascript + CSS test, whereas &lt;a href="http://acid2.acidtests.org" target="_blank"&gt;Acid2&lt;/a&gt; was strictly CSS.  FireFox 3 beta 3 passes that easily.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Microsoft's IE6 doesn't fare well.  I think it got 7 out of 100.  IE7 is probably way better?  Nope. 12.  Linux based browsers like Konquerer scored in the mid 50s.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I read a comment somewhere, probably Slashdot, that said these tests aren't to see if it's a good browser, but more to push the browser makers so that developers can use the things that they test for and take for granted that a wide variety of users will be able to support them.  That should make a lot of developers happy.  Except for Microsoft!  They just got done making sure their latest version of IE, 8, which is in beta, passes the Acid2 test.  That's where free software owns.  Release cycles based on business fiscal schedules are no good for anyone.</content>
<id>http://www.jasontconnell.com/news/acid3-embarassing-browser-makers-everywhere</id>
<link href="http://www.jasontconnell.com/news/acid3-embarassing-browser-makers-everywhere" hreflang="us-en" rel="alternate" title="Acid3: Embarassing Browser Makers Everywhere" type="html"/>
<published>2008-03-05T23:00:33Z</published>
<title type="html">Acid3: Embarassing Browser Makers Everywhere</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">There's probably two subscribers to my feed, and one of them yelled at me :p  But Google Reader should be back to business now, shortly after showing 400+ new items from this website.  Atom has an ID that it uses, and Google Reader apparently keeps track of your read items by that ID and doesn't care about the date at all, evidently.  So, new items showed up back to the beginning of this website.&#13;&lt;br /&gt;&#13;&lt;br /&gt;So, will there be 400+ new items every time I post?  No.  It has all those IDs now, which are new and changed, and unless I change them, they won't show up again.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I can't just write a post apologizing though.  I have to talk about the new cool thing that I'm working on here at home.  I've talked about it before but apparently, wasn't able to carry through with it.  Reasons were mainly that my laptop proved to be way to slow after the initial "wow" factor of installing &lt;a href="http://www.jasontconnell.com/news/wow-ubuntu-rules" target="_blank"&gt;Ubuntu&lt;/a&gt;.  (My reaction now would be more "Wow, FreeBSD on a ThinkPad RULES!")  The thing I'm talking about is my seamless integration between front end Javascript and backend Java.  I wrote about it &lt;a href="http://www.jasontconnell.com/news/fired-up-the-trusty-ol-linux-laptop" target="_blank"&gt;here&lt;/a&gt;.  But I've made a few changes.&#13;&lt;br /&gt;&#13;&lt;br /&gt;First, instead of the backend generating XML, it'll just read XML and spit out results in &lt;a href="http://www.json.org" target="_blank"&gt;JSON&lt;/a&gt;.  I'm kind of partial to that technology because of the name... it just kicks ass.  I got my first foray into JSON last week at work.  Initially, our backend PHP was just returning a few things, like 3, for the front end Javascript to parse and spit into HTML on the website.  What the final requirements called for was way more complex, and I didn't want to have to come up with some naming scheme, because it would just get so ugly.  Some things were related to each other but not to everything.  It would be something like this:&#13;&lt;br /&gt;&#13;&lt;br /&gt;"What is my name?:Jason,Steve,Albert:Jason:True: Jason,80%:Steve,5%,Albert:15%,2000,Elite"&#13;&lt;br /&gt;&#13;&lt;br /&gt;This is like a quiz or trivia, where the question was "What is my name?", the possible answers "Jason,Steve,Albert" comma separated, the correct answer "Jason", whether that person got it write "True", and finally the percentages that other people guessed, the total points for that user "2000", and their ranking "Elite".  And that's not even all of it.  It has to include the next question, and all of those possible answers.  Painful.  So instead, this is what it looks like:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;{&#13;&lt;br /&gt;"LastQuestion" : {&#13;&lt;br /&gt;   "Text" : "What is my name?",&#13;&lt;br /&gt;    etc&#13;&lt;br /&gt;},&#13;&lt;br /&gt;"User" : {&#13;&lt;br /&gt;    "Points" : "2000",&#13;&lt;br /&gt;    etc&#13;&lt;br /&gt;},&#13;&lt;br /&gt;"AnswerPercentages" : {&#13;&lt;br /&gt;    "Jason" : "80",&#13;&lt;br /&gt;    etc&#13;&lt;br /&gt;}&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Much easier to maintain, much easier to read, much MUCH easier for the front end to parse!  This can be parsed like this...  assume your callback function is called "callback" and is passed whatever is returned from the server, e.g. the JSON code above:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;function callback(data){&#13;&lt;br /&gt;    var obj = eval(data);&#13;&lt;br /&gt;    alert(obj.LastQuestion.Text); // will alert "What is my name?"&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;Yup, it's that easy.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Next affair... I'll need, and will build over time, a large Javascript library for building out websites with the data returned from the server.  Tables, forms, etc.  This will generally be a pain in the ass and is attributed to me delaying this project for as long as possible.  Ugh.&#13;&lt;br /&gt;&#13;&lt;br /&gt;If I get tired of that, then something's gotta give, and I'll either stop this crazy experiment or go crazy writing Javascript for hours and hours.  Thank God for FireBug.</content>
<id>http://www.jasontconnell.com/news/sorry-for-the-atom-spam</id>
<link href="http://www.jasontconnell.com/news/sorry-for-the-atom-spam" hreflang="us-en" rel="alternate" title="Sorry for the Atom Spam" type="html"/>
<published>2008-03-03T23:50:37Z</published>
<title type="html">Sorry for the Atom Spam</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I had this log file from my server that's just been sitting there collecting errors for about 2 years.  It got pretty big, upwards of 60 MB.  So, I wrote this program to break it into chunks.  I looked over the FreeBSD documentation to see if there's a program that just reads the last few KB or so.  I was getting no output on my new "Browse By Month" code, and when I wrote this program, I was able to split the file into chunks of about 976 KB each (1,000,000 bytes).&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;package filebreaker;&#13;&lt;br /&gt;&#13;&lt;br /&gt;import java.io.BufferedInputStream;&#13;&lt;br /&gt;import java.io.BufferedOutputStream;&#13;&lt;br /&gt;import java.io.FileInputStream;&#13;&lt;br /&gt;import java.io.FileOutputStream;&#13;&lt;br /&gt;&#13;&lt;br /&gt;public class FileBreaker {&#13;&lt;br /&gt;	public static void main(String []args){&#13;&lt;br /&gt;		String dir = "/usr/home/jason/Downloads/";&#13;&lt;br /&gt;		String filename = dir + "catalina.out";&#13;&lt;br /&gt;		int chunk = 1000000;&#13;&lt;br /&gt;		&#13;&lt;br /&gt;		try {&#13;&lt;br /&gt;			BufferedInputStream fs = new BufferedInputStream( new FileInputStream(filename) );&#13;&lt;br /&gt;			BufferedOutputStream os = null;&#13;&lt;br /&gt;			int itr = 0;&#13;&lt;br /&gt;			byte []buf = new byte[chunk];&#13;&lt;br /&gt;			int status = 0;&#13;&lt;br /&gt;			while (status != -1){&#13;&lt;br /&gt;				status = fs.read(buf, 0, chunk);&#13;&lt;br /&gt;				String chunkFilename = dir + "/out/catalina-" + itr + ".txt";&#13;&lt;br /&gt;				os = new BufferedOutputStream(new FileOutputStream(chunkFilename));&#13;&lt;br /&gt;				os.write(buf);&#13;&lt;br /&gt;				os.flush();&#13;&lt;br /&gt;				os.close();			&#13;&lt;br /&gt;				itr++;&#13;&lt;br /&gt;			}&#13;&lt;br /&gt;			fs.close();&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;		catch (Exception e){&#13;&lt;br /&gt;			e.printStackTrace();&#13;&lt;br /&gt;		}&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;I found out the error.  I'm using Java 1.6.0 on my local machine, and have yet to install it on my server.  I used a method (Calendar.getDisplayName(int, int, Locale)) that wasn't part of Java 1.5.0, which is running on my server.  DOH!&#13;&lt;br /&gt;&#13;&lt;br /&gt;I also now like putting code on my website since I have new css for handling &amp;lt;code /&amp;gt; tags.  It looks like this:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;code {&#13;&lt;br /&gt;	display: block;&#13;&lt;br /&gt;	overflow: auto;&#13;&lt;br /&gt;	width: 600px;&#13;&lt;br /&gt;	white-space: pre;&#13;&lt;br /&gt;}&#13;&lt;br /&gt;&#13;&lt;br /&gt;code br {&#13;&lt;br /&gt;	display: none;&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;:D  My text formatter takes line breaks and replaces them with "&amp;lt;br /&amp;gt;", and I wanted code to be preformatted so I don't have to replace tabs with spaces, and also I didn't have to check if I was inside a "code" tag and not insert &amp;lt;br /&amp;gt; for line breaks.  It's just a very convenient way to handle it that might look like crap in another browser that's not FireFox.  I'll add lots more code now :)</content>
<id>http://www.jasontconnell.com/news/more-code-for-your-convenience</id>
<link href="http://www.jasontconnell.com/news/more-code-for-your-convenience" hreflang="us-en" rel="alternate" title="More code for your convenience" type="html"/>
<published>2008-03-02T03:00:47Z</published>
<title type="html">More code for your convenience</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">After about an hour of programming, I have my URLs in a search engine friendly format!  This has many other benefits as well:&#13;&lt;br /&gt;&#13;&lt;br /&gt;For instance, I don't have to know the ID of the news I want to link to, just the title.  So, I can make a link to a news item I have previously written by typing in the title in a format that it expects.  For the news item titled "The Guitar Player", the link will be "the-guitar-player".  Click &lt;a href="/news/the-guitar-player"&gt;here&lt;/a&gt; to test.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Also, if I want, I can modify my "text writer" component in JSF, to search for strings like "[[The Guitar Player]]", and to write out the url, namely "/news/the-guitar-player".  Or I'd have to make it "[[News|The Guitar Player]]" if I want to add more dynamic linking, say for photos, downloads, comments, etc.  This is much like a Wiki works.  It can be a "news wiki" or a "wiki blog" or something ridiculous like that.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Also, after I save this, it will probably write out all of the news in my atom.xml file... it might take a while, there'll be 454 news items!  That's ok though.  I'll probably have to delegate that task to a new thread, so I can get to adding more news right away.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Categories are changed for rewriting purposes.  "Labels" have not been updated yet.  I have to make a new page because a "Label" object can pertain to Downloads and Pictures, so I have to list results for each, or modify the URL rewrite filter to accept "/picture/label/me" and "/download/label/music" to list pictures of me and my music downloads, respectively.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I don't run Apache HTTPD, so I had to write the URL rewriter all in Java for Tomcat.  It wasn't too bad.  Regular Expressions are neat.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The meat:&#13;&lt;br /&gt;&#13;&lt;br /&gt;&lt;code&gt;String url = ((HttpServletRequest)req).getRequestURL().toString().replace(HttpUtil.getBaseUrl((HttpServletRequest)req), "");&#13;&lt;br /&gt;		&#13;&lt;br /&gt;if (rewriteConfig.ignoreUrl(url)){&#13;&lt;br /&gt;	chain.doFilter(req, resp);&#13;&lt;br /&gt;}&#13;&lt;br /&gt;else {&#13;&lt;br /&gt;	String location = rewriteConfig.getLocation(url);&#13;&lt;br /&gt;	String rewriteUrl = rewriteConfig.getUrl(location, url.replaceAll("/" + location + "/", ""));&#13;&lt;br /&gt;&#13;&lt;br /&gt;	if (rewriteUrl != null){&#13;&lt;br /&gt;		RequestDispatcher dispatcher = req.getRequestDispatcher(rewriteUrl);&#13;&lt;br /&gt;		dispatcher.forward(req, resp); // forward the request&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;	else {&#13;&lt;br /&gt;		chain.doFilter(req, resp);&#13;&lt;br /&gt;	}&#13;&lt;br /&gt;}&lt;/code&gt;&#13;&lt;br /&gt;&#13;&lt;br /&gt;url is the requestUrl stripped of the host.  This is so I can make it work on dev (http://localhost:8080/jtccom) and production (http://www.jasontconnell.com/).&#13;&lt;br /&gt;&#13;&lt;br /&gt;This filter is called for every request, so I have an "ignore" map set up.  This tests if the URL contains a ".", since every rewritten url will only contain numbers, letters, and the occasional "/" or "-".  This is a HashMap for quick lookups.  So, it won't attempt to rewrite calls to "/js/someFile.js".&#13;&lt;br /&gt;&#13;&lt;br /&gt;The "location" part of the request is "/x/", so for news it will be "/news/".  The location is "news".  This is so I only have to loop through rewrite patterns for news, not for everything.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The pattern is written as "([0-9a-z-]+)/?" so if I pass in the whole URL (without the host), "/news/my-news-title", it won't match, so that's what the next line does, removes "/news/" so it's just "my-news-title".  The getURL function returns the rewritten URL, so like "/news.jsf?title=my-news-title".  I created a new unique column for News, and my "DaoWeb" interface has a "ChangeListener" property, so if I create a news or change it's title, it updates the "TitleKey" in this case.  Pictures are just forwarded by their picture id for now, so &#13;&lt;br /&gt;"/picture/23" as an example.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Coming soon:  News by date span!   /news/2008 for all news in 2008.  /news/2008/03 for all news in March 2008!  /news/2008/03/23  for all news on my birthday this year!!&#13;&lt;br /&gt;&#13;&lt;br /&gt;Tune in for more updates.  I'm cranking now, and Java is like riding a bike.  I also fixed a few bugs.</content>
<id>http://www.jasontconnell.com/news/hello-url-rewriting</id>
<link href="http://www.jasontconnell.com/news/hello-url-rewriting" hreflang="us-en" rel="alternate" title="Hello URL Rewriting!" type="html"/>
<published>2008-03-02T00:25:00Z</published>
<title type="html">Hello URL Rewriting!</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">I worked from home on Friday, so I had to VPN into the network and log onto my computer with Remote Desktop.  A (at first) horrible downside to this is that I couldn't access my iTunes library on the Mac.  My new $100 headphones' cord isn't long enough to reach my desk, and there's no room for it on the desk, and I sure as hell can't play music out of the tiny laptop speakers.  So, I decided to log onto &lt;a href="http://www.pandora.com" target="_blank"&gt;Pandora&lt;/a&gt; and listen to some of my "Bob Marley" radio station.  After a little while, I wanted to change it up so I put on my "Cracker" radio, which yielded some interesting music.  After that, I made a new radio station.  I wanted to listen to some blues.  I just typed in Robert Johnson and let Pandora handle the rest.  Was that a great move.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I'm listening to some greats that I've heard before and like, but nothing's really blowing me away.  So I'm getting lots of work done :)  Next thing I know, this version of "Catfish Blues" comes on.  All acoustic guitar, and the thing is distorting my speakers (or so I thought).  It's slow, guitar and singer, and the guitar is just amazing.  I flip over to my browser that's running Pandora, and see that it's a Texas bluesman named Lightnin' Hopkins.  I mark him with a "thumbs up", and keep listening.  A few songs pass, again, none blowing me away.  Then this other song comes on and I have the same reaction... f$@#%ing awesome guitar.  Flip over to Pandora... Lightnin' Hopkins again.  This happened like 4 times.  This is over 2 hours.  So today I bought some Sam Hopkins.&#13;&lt;br /&gt;&#13;&lt;br /&gt;The album that Catfish Blues is on is called "Blues in My Bottle".  I'm on the 2nd song right now... so far awesome.  There's quite a deal on iTunes if you're a fan of blues.  Lightnin' Hopkins "The Complete Aladdin Recordings", 1946-1949, 43 songs, $10.  "Blues in My Bottle" is all just guitar and singing.  Amazing guitar.  Buy it.</content>
<id>http://www.jasontconnell.com/news/lightnin-hopkins</id>
<link href="http://www.jasontconnell.com/news/lightnin-hopkins" hreflang="us-en" rel="alternate" title="Lightnin' Hopkins" type="html"/>
<published>2008-02-25T00:00:26Z</published>
<title type="html">Lightnin' Hopkins</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">Sound works, development environment set up (including eclipse, java, tomcat, mysql, mysql dbs and users [tables and data are automagic]), can't disable the "tapping" on the touchpad yet.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I got the development environment set up after some troubles where I forgot that I depend on some JARs being in the tomcat/common/lib folder, and don't copy them over.  Doh.  This stuff is all manual.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I had to configure my /boot/loader.conf to load the driver for my sound card (snd_hda), I've been messing around in the same file to see if I can load a 'synaptics' touchpad driver, or enable support, but I don't think I have a synaptics touchpad driver.  FreeBSD reports it as a Generic PS/2 mouse otherwise.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I need to disable tapping!  When you go to edit a Java file and accidentally move your cursor to the spot where you didn't want to edit at, it's so annoying.  However, I did notice that this touch pad IS freakin tiny, and I hardly touch it by accident.  That's good.&#13;&lt;br /&gt;&#13;&lt;br /&gt;Scrolling would be nice to have.  That's a hardware issue though, no scroll "wheel".  I looked around, and with moused options, you can emulate 3 buttons (I have two I think) and enable scroll with a combination of the middle mouse button (in my case both pressed) and moving on the mouse pad.  This would be tough.  Kinda like pressing CTRL +N+U+&lt;+O+/  Good luck.  I'm gonna write a program that says "To uninstall this software, press CTRL +N+U+&lt;+O+/ within the next 2 seconds."  Oh, you messed up.  Try it for 1 minute and your hand will hurt :)&#13;&lt;br /&gt;&#13;&lt;br /&gt;The ThinkPad T61 that I got comes with a fingerprint reader, and apparently someone made it work on Gentoo, of course, the OS I had on here for a while and couldn't do anything with.  I betcha now I could though.  I'm not retarded when it comes to setting up a Linux / Unix laptop anymore.&#13;&lt;br /&gt;&#13;&lt;br /&gt;You'll notice I now have a cool "RSS" link in the address bar if you're using a modern browser, like FireFox 2.0.0.11 or 3 beta 3 like I am.&#13;&lt;br /&gt;&#13;&lt;br /&gt;I'm heading up the mountains tomorrow.  Might go skiing, might just hang out and drink :)  We'll see.  I was asked to bring my guitar, but I only have my huge amp now!  It's awesome though.</content>
<id>http://www.jasontconnell.com/news/laptop-configured</id>
<link href="http://www.jasontconnell.com/news/laptop-configured" hreflang="us-en" rel="alternate" title="Laptop Configured" type="html"/>
<published>2008-02-23T01:00:56Z</published>
<title type="html">Laptop Configured</title>
</entry>
<entry>
<author>
<name>Jason Connell</name>
<uri>http://www.jasontconnell.com</uri>
<email>jasontconnell@gmail.com</email>
</author>
<content type="html">AIM IM with &lt;b&gt;Zatko&lt;/b 2/18/08 11:11 PM&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  25 hours&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  won by space race&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  it was total annilation though&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  jesus&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  year?&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  like 2045&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  my last big victory was a space race in 1957 on warlord&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  nice&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  13000+ points, abraham lincoln&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  how are points calculated&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  no idea&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  i annilated everyone but 2 countries&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  i was at war most of the game&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  which is why it took so long&#13;&lt;br /&gt;&lt;b&gt;Zatko&lt;/b&gt;:  i found the option to turn off battle animations on hour 24&#13;&lt;br /&gt;&lt;b&gt;Me&lt;/b&gt;:  but if you hover your mouse over your name, you can see how your points are broken down... population, t