Two Down, One To Go

March 17th, 2008 No comments

UNC Ram Logo1) Win ACC Regular Season

2) Win ACC Tournament

3) Win NCAA Tournament

Random Selection / Seeding Thoughts:

  • Tennessee got hosed; #2 seed in the #1 overall seed bracket? Ouch. Conversely, UNC has to play the best #2 seed of the lot.
  • Davidson will beat Gonzaga. They are in the classic upset spot #10 seed and are essentially playing at home. Georgetown might be a little tougher :)
  • Duke does not deserve a #2 seed. The selection committee probably put them there to avoid having to listen to Dick Vitale cry about it.
  • I found it surprising Miami made the tournament but Virginia Tech didn’t – they will probably roll through the NIT.
Categories: Uncategorized Tags:

It's Good To Be King

March 10th, 2008 No comments

This says it all.

Danny Green destroys Greg Paulus

Categories: Uncategorized Tags:

The True Fan's Guide to Sports Hate

March 5th, 2008 No comments

I’ve always felt there’s nothing wrong with a little hate; as long as that hate is restricted to sports. Actually, a little Sports Hate is not only good and healthy, it can give you a reason to watch even more sporting events (like we need that). Sports Hate answers the question: Who Do I Pull For?

More accurately, Sports Hate tells us who to root against. From a practical standpoint, rooting against a team is far better than actually pulling for a team; when a team doesn’t simply die a horrible death, it’s much easier to say “oh well” and walk away than it is to see the team you’ve put your hope in lose. So if it’s your team pull for them. Otherwise, root against. But how do you figure out who to root against? Here’s your handy guide. As soon as one of the teams fit the following qualifications, abort; you’ve found your team to hate.

  1. Your Rival. The Rival tag trumps all others. And when I say “rival”, I don’t mean one of those teams that you respect and happens to be in the same state/city/metro area. A true rival is a team that infuriates you, who’s mere lack of failure pains your very soul. Examples of some of the more famous real rivals are:
    • North Carolina & Duke basketball
    • Michigan & Ohio State football
    • Red Sox & Yankees

    The Lakers & Celtics in the 80′s or the Cowboys and Steelers don’t count. You have to see the other team more than once every 4 years for it to be real. And if you’ve spent the last decade getting crushed on a yearly basis, you don’t count either. I’m looking at you, NC State.

  2. Personal Hatred. Does the smug look on Tom Brady’s face make your blood boil? Does Coach K’s sneer and/or profanity laced tirades make you wish for his death? There’s nothing wrong with that; a personal hatred is the basis on which real rivalries are born.
  3. Their Success Is Your Failure. There are always teams standing in your way. They are the team that’s keeping your down. Hate away.
    1. Divisional Opponents. The Cowboys going 12-4 means that it’s going to be harder for your Redskins to make the playoffs. That 3 game lead the Lakers have in the Pacific division are keeping your Suns out of the 2nd seed in the playoffs. Not only do you have to see these jerks more than anyone else in the league, their downfall can only help your boys. Set phasers to “negative thoughts” and fire away
    2. Conference Opponents. You love your Atlanta Hawks, and the New Jersey Nets who are playing the Spurs are then only thing standing between you and a playoff spot. Go Spurs!

    It must be noted that things get a little fuzzy in College Sports, where conference supremacy is second only to your team winning it all. Where as you, as a red blooded Ohio State fan, will pray for the Michigan’s downfall, things are not always so simple. When Wisconsin plays Kentucky, it is ok for you Big 10 fans, bless your little we-have-a-complex-from-underachieving hearts, it’s ok to hate on those jerks from the SEC.

  4. Their failure is your success. Remember when Tennessee spent approximately 18 minutes as the #1 college basketball team in the country? You can bet my UNC loving self was cheering Vandy on like they were wearing Carolina blue jerseys. And guess what? UNC is now it’s rightful place as the #1 team. If somebody winning or losing is going to help your strength of schedule or RPI or some other three letter acronym, don’t feel bad, you can pull for those plucky little Commodores.

And that’s about it. If you can’t figure out who to pull for from these guidelines, just remember, it’s always ok to pull for the underdog and against Duke.

Categories: Sports Tags: ,

Bad Code

February 20th, 2008 No comments

While working on some existing code (that someone else wrote), I got this error:

_recon_5F_tabs.java:45: code too large for try statement

:(

Categories: Tech Tags:

The Worst Elevators Ever

February 13th, 2008 No comments

I work on the 10th floor of the Charlotte Plaza building. I have come to believe that this building has the worst elevator system on the planet and is probably the worst office building in uptown Charlotte. I had previously believe that the International Trade Center held this title, as it was commonly referred to as the ghetto of uptown Charlotte office buildings. But I was wrong. In the time since January 18th, 2008, I have experienced the following problems with the elevators that service floors 2 through 15:

  • General slowness
  • Random stops
  • Floors being randomly highlighted as destinations; for example, one particular elevator will show 13 as a destination even though it is going down from the 10th floor
  • Unresponsiveness – I’ve gotten on an elevator on the 2nd floor, pressed #10 and it just sits there.
  • Inaccurate direction indicators; think that elevator is going up? Wrong.
  • Summon lights randomly turning off
  • Simply not working

Two examples stand out in my mind. One day we could not get an elevator to arrive at our floor that was going down. In a span of 10 minutes, we saw half a dozen going up, while none ever went down. Becoming fed up up, I eventually got on an elevator that was going up. Turns out the light was wrong, this one was headed downwards.

Just today, I walked over and pressed the down button. Nothing happened. I pressed the up button. No response. I sat there for a few minutes, waiting for something to happen, pressing down or up every 30 seconds or so. Nearly having given up, the down button suddenly lights up and an elevator arrives.

Argh.

Categories: Work Tags: , ,

trac + PostgreSQL 8.3 = broken

February 13th, 2008 No comments

I discovered a bug while monkeying around with trac, the absolutely wonderful, not to mention free (as in beer) wiki & bug tracking system aimed at software development – it’s Subversion browser breaks if your database is PostgreSQL 8.3. It works if it’s an empty repository, but as soon as you add a file or folder, it throws an error message like this:

Traceback (most recent call last):
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/api.py", line 339, in send_error
'text/html')
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/chrome.py", line 670, in render_template
if not req.session or not int(req.session.get('accesskeys', 0)):
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/api.py", line 168, in __getattr__
value = self.callbacks[name](self)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/main.py", line 255, in _get_session
return Session(self.env, req)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/session.py", line 48, in __init__
self.get_session(sid)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/web/session.py", line 74, in get_session
(sid, int(authenticated)))
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11b1-py2.5.egg/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
ProgrammingError: current transaction is aborted, commands ignored until end of transaction block

Fortunately there is a work around: Change the repository_type value in trac.ini to direct-svnfs instead of svn. A ticket has been opened on over on trac’s trac site

Categories: Tech Tags: , , ,

Spring Framework Annotation @SessionAttributes can be confusing

February 11th, 2008 3 comments

I spent a fair amount of time banging my head against the wall trying to figure out how @SessionAttributes works in Spring’s annotations. The concept and implementation is fairly simple, the use and lack of documentation is confusing. Here’s your standard usage:

@Controller@RequestMapping("/someForm.do")
@SessionAttributes("fooForm")
public class FooFormController {
	@RequestMapping(method = RequestMethod.GET)
	public String setupForm(ModelMap model) {
 		FooForm fooForm = new FooForm();
 		// populate fooForm
 		model.addAttribute("fooForm", fooForm);
 		return "fooFormDisplayPage.jsp";
 	}

	@RequestMapping(method = RequestMethod.POST)
 	public String processForm(@ModelAttribute("fooForm") FooForm fooForm) {
 		// do something with fooForm
 		status.setComplete();
 		return "redirect:/someOtherView";
	}
}

The way this works is that the object that is inserted into the ModelMap and identified by @SessionAttributes is stored in the session across the life of the controller. The ModelMap object’s lifespan is tied directly to that of the controller object. Despite it’s name, @SessionAttributes has absolutely nothing to do with HttpSession.set/getAttribute(), it’s simply the annotated version of <sessionForm> from the xml version of the Spring configuration. The upshot of this is that the value identified in @SessionAttributes is not available to a different controller.

What if you want to store something in the session across multiple requests? The tried and true method of storing it in the HttpSession is still valid:

@RequestMapping(method = RequestMethod.POST);
public String processForm(@ModelAttribute("fooForm") FooForm fooForm,
                          HttpSession session) {
	// do something with fooForm
        session.setAttribute("fooForm", fooForm);
	status.setComplete();
        return "redirect:/someOtherView";
}

You can also define multiple request mappings inside of the same Controller object

@Controller
public class MultiViewController {
	@RequestMapping("/foo");
	public String handleFooRequest(ModelMap model) {
		// Handle request
	}
	@RequestMapping("/bar");
	public String handleBarRequest(ModelMap model) {
		// Handle request
	}
}

And there you go. Annotations are neat, allow for straight up pojos, and remove a lot of unnecessary XML configuration. Use them, just make sure they are adequately documented.

Categories: Tech Tags: , ,

New Pictures + Confirmation

February 11th, 2008 No comments

We went to The Prenatal Picture this weekend partly to get some new pictures but primarily to confirm that the little monkey growing inside Kandace’s womb was indeed a female. Well, bring on the pink blankets, we’ve got confirmation. We’ve also got a truck load of new pictures.

The Prenatal Picture was a fairly amusing experience – the ultrasound room is dimly lit, with light music in the background, and the ultrasound is projected onto the wall so that friends and/or family can watch while being seated comfortably in the living room area set in front of the projection screen.

Categories: Baby Tags:

THAT'S NO MOON

January 30th, 2008 1 comment

eep

eep.

Categories: Baby Tags: ,

New Job Started

January 18th, 2008 No comments

Went through the standard process of meeting 2000 new people, many of whose names I will not remember and be forced to undergo some sort of awkward “have you met so and so” and I’ll say no and it will actually be somebody I’ve met.

All things considered things went fairly well. My only complaint is that they didn’t give me a laptop (boo) and they use an old version of Lotus Notes. I’m pretty confident this is the worst mainstream software ever.

Categories: Work Tags: