Wednesday, December 24, 2008

Why I Keep this Blog Thing Up

I often ask myself why I do this blogging thing. I thought some more about it after reading my colleague Brian's post about his blog writing. Asides from keeping the 17-25 people who end up here every day up on all the banal elements of my life, I have kind of figured out why I started doing this and kept doing it. It's the fact that I can CREATE and PARTICIPATE by using this blog, even if the product isn't always the finest work.

There are a few things that I love in this world. I love my wife. I love my family. I love baseball. I love music. I love reading. The only thing I can really participate in anymore out of those is my marriage, and my family life. I can't really play baseball anymore thanks to an arm injury that has left my shoulder brittle and prone to reinjury, despite the surgery I had to get just to make it functional. All I can do is watch, remember, and enjoy the strategy of the game. For a short time I coached little league, but my current commitments leave me without the time to continue with that. I love listening to music. I love all sorts of music, but can play virtually none of it. I have picked up the guitar, but I am certainly not very good at it yet. All I can do is passively enjoy, and fumble through a few chords. I read. A lot. Reading is one of my passions. I read and read and read, and wonder how it is that there are people out there whose brain is able to generate the creative juices required to weave interesting tales together. People like my friend Ramsey, who are brilliant engineers by day, and extremely gifted writers by night. All I am good at is devouring the content.

All of these things are passive. Listening, reading, watching. I am passive. This blog is the only thing that I create most days that isn't just paid work. So, despite the uneven quality of the output, it's my stab at escaping passivity. I would like to say that it's cathartic, and sometimes it is. Sometimes it's just to talk about what I do, without having to directly bore someone to death face-to-face. Sometimes it's because I think it will help someone else. My most popular post is this Eclipse error post. It's kind of sad, because I've written all this stuff about my father, and about my work, and my ambitions, and a post about troubleshooting an IDE error is the number one post, followed closely by my gripes about my cable company. I hope to find a way in 2009 to post interesting things that are also popular. To that end, please feel free to comment anytime you wish, so that I may improve my content for those of you who out of guilt or necessity read this regularly.

Oh, and HAPPY HOLIDAYS! Radio silence will commence, as we are off to Indiana (grandparents house is an internet free zone), and your regularly scheduled swill will resume on Monday.

Monday, December 22, 2008

The Ghost of Startup Past

Well, as of last week, I have reached the formal dissolution of my very first startup. We met and signed some paperwork that says we all agree that we no longer exist, and to reallocate our shared resources. I found it so fitting that the end of this startup was so well organized. I think that this startup was interesting because we had all the organizational stuff down pat, operating agreements, etc. What we didn't have was the compelling product strategy and drive. So often, reading blogs of other startup folks, it's the exact opposite. This time around, I plan to spend 99% of my time on WHAT MATTERS. I must admit it felt good to be legit, and being incorporated and all that jazz gave me a false sense of accomplishment. I am now a year or two older (wiser too, hopefully?), and I am much more concerned with brass tacks.

The other big problem I faced last time personally was the unrelenting desire to build cool stuff. To build stuff from scratch, and to not rely on conventions or libraries. I think I have grown over the past couple of years as a developer, to the point where I am much more confident in my ability to get things done. I know I can build things if I need to. Therefore, the choice not to write cool software things is much easier to make. Now I want to build a product. If this means that I take something that's already built, and add value to it by focusing on FUNCTIONALITY. I want to create value for the user, and not create nerd brownie points for myself. Sourceforge is littered with projects that were the result of geeks trying to put a feather in their cap and some new acronyms on their resume. These projects are out on Sourceforge now because they couldn't sell them, in many cases.

To that end, I vow to not be 'cool' technically. Rather, I plan to be "functionally benevolent". I will ask people what they want, and build it as simply as possible. There are some wonderful building blocks out there, and I am going to use them. Let's hope that this all leads to some success in the new year.

Dear Ryan,

Attn: Ryan Grant, RB, Green Bay Packers
Re: Winning me my money

I am not sure if you read my blog, but if you do, I wanted you to know that I would love it if you would score 11 points tonight against Chicago. My pathetic fantasy hopes have come down to this. I am losing my third place game 68-58. If I would have started your peer, Mr. Portis, I would have already won my $150 back, but I didn't, so I need you to help. I will offer you my undying gratitude in return, and if you send me an address, I will send you a gift card to Olive Garden for $11. If you don't score at least 11 tonight, I will put a hex on you that the most esteemed faith healer won't be able to cure. The best course of action would be to take your first run from scrimmage the distance, thus winning for me and making it less stressful for both of us. I hope you do the right thing.
Kirk Gray

Thursday, December 18, 2008


Has anyone every gotten more press for doing less than Chancellor Rhee of the DC Schools? Don't get me wrong - I think she is doing things that are incredibly necessary for this broken school system we have here. Her argument for pay-for-performance for teachers is definitely reasonable - if you don't think you can do your job, then you probably don't deserve tenure anyway. I realize that education isn't that simple, but at some point someone has to draw a line and say "we have to start to fix this, and hope that the parents get on the bus sooner or later".

I am listening to the podcast of Rhee on Diane Rehm. I really want to hear about Rhee, but goodness would Rehm please, please, please speed it up? Anyone else hear the similarity between Rehm and this:

Just sayin...she gets good guests, but her show could be about 20 minutes shorter if she would just spit it out.

What's Up, December!

Well for anyone who's interested, here's the latest happenings.

I am in the last stages of getting our wedding photos online. I have setup Gallery2 on the server at home. It's a great PHP app that allows you to host your photos, that my buddy Nick put me on to. I hope everyone will enjoy it. I have the domain name for our server, and I think I have resolved the DNS server stuff (more on how to do all this in a separate post, since it simply does not seem like there is one place to get all the information you need to do all this on your own, and I had a lot of trouble cobbling it together from the disparate sources. I hope it will help others who find themselves in my situation. At any rate, the wedding pictures are awesome. If anyone has any sort of professional photography needs, then by all means, check out Thomas Graves. He is personable, talented, and on the day of the event, extremely unobtrusive, while capturing all the special moments. If anyone wants to see a preview, check out this site. Thomas put together a little sampler before we got all the photos.

We also have all of our honeymoon pictures up on Snapfish, so feel free to take a look.

I just finished The Professor and the Madman, which turned out to be a fantastic story. I mentioned it before, but the story is about the creation of the venerable Oxford English Dictionary, and one of its most prolific contributors, Dr. William C. Minor. For anyone not familiar with the OED, it was an incredible undertaking that required decades of work before it was all released. A dictionary is an interesting thing, because it's obviously never finished, as new words pop up every day. Minor's incredible contributions to the dictionary (tens of thousands of definitions and supporting quotations), are no small feat for anyone, but are more amazing when you consider that he was a lunatic, who murdered someone because of his paranoid delusions, and was doing his word from an insane asylum. The story takes the reader through a quick history of dictionaries, the OED's beginnings, the life of the OED's leader, James Murray, and the life of William Minor. It's a pretty short, quick read, and I would recommend it to anyone who is interested in words or just interesting historical stories in general.

I am now back on This is Your Brain on Music, which I started and shelved a while ago, and have also made it about a quarter of the way through Flights of the Mind, a biography of Leonardo Da Vinci. So far I have only made it through his apprenticeship, but it's definitely interesting, if for no other reason, because we were just in Florence for our honeymoon, and can picture the scenes described in the book, along with the works of art that I just saw in the Uffizi Gallery. What makes these renaissance thinkers so amazing is the fact that with minimal real academic training, they produced incredible output, be it art, science, or literature. These people are simply brilliant, and their achievements just seem to dwarf anything that is taking place now.

Christmas is fast approaching, and we will be heading to Indiana to visit my Grandparents. I know they are excited, and I am excited too, to spend my first Christmas with my beautiful wife. What else...We are also getting the house painted finally - Jena had the kitchen redone some time ago, but we never ever got the patch work and painting done, so now's the time. The first estimate comes today - hopefully it won't be ridiculous. I have no concept of how much house painting costs.

Work is busy. I have moved on to new projects, and no longer have to dwell on the evil LAMP site install. It's back to Sportsvite core stuff, which is much more fun. Currently, I am finishing the latest round of updates to our Powerade/CBS Sports partner site. I have been able to use some interesting libraries in this endeavor. I have also been toying with content by using some of the Web APIs out there, like YouTube and Flickr's. The world of content that is consumable is fascinating to me. The interwoven world of the web allows everyone to focus on what they are best at, and to supplement their offerings with other people's core competencies. Incredible. I think things will really get rolling when our fourth engineer joins the team in the new year. There are so many cool things coming down the pike.

Radio-Free Amtrak

Why is it that regional train service doesn't include internet service? Is there any legitimate excuse for this? In an age when there are AIRLINES (not an industry that screams 'Customer Service!') that provide wireless internet service while you fly, where you can go to McDonalds in some places and hop online, you can't take a train (a very business function), and get online.

I can take the $20 bus to New York city, and guess what? I can get wireless internet! They have plugs on the trains, so you charge your computer, but you can't get on the web. Boo.

That said, it's way better than flying. I get to the train station at 6:15 for the 6:30 train, and bam, get a coffee and get on the train. No arriving 2 hours early and going through security. Despite this, I sit here thinking about how much it sucks not to have wireless. I need to go back and re-read A Complaint Free World.

Friday, December 12, 2008

This Just In:

From the "don't do this on your site" file:

If you are going to have a form that requires a captcha to submit, and you choose to display virtually illegible captchas (see below), then don't zap the form contents into the ether when your user inevitably gets the captcha wrong. (Talking to you, mybloglog). I wrote this nice long post to support to let them know there was an issue I didn't really care about, but thought they might, and now it's just lost in the webs.


Mac Tricks I Should Have Been Using a Long Time Ago

As I mentioned when I first got my Macbook, I think that sudo sucks. What I failed to do was make my life any easier by developing some shortcuts.

I just finally got around to adding a bunch of aliases to my /etc/profile file:

alias tomcatDebug='sudo /tomcat-dir/bin/ jpda start'
alias tomcatRun='sudo /tomcat-dir/bin/ run'
alias tomcatStart='sudo /tomcat-dir/bin/ start'
alias tomcat='sudo /tomcat-dir/bin/'
alias apacheStop='sudo /apache-dir/bin/apachectl stop'
alias apacheStart='sudo /apache-dir/bin/apachectl start'

I am going to add about a million of these, because I constantly do way too much switching directories and typing. Any self-respecting nerd probably has stuff like this, but for the rest of us dummies, hopefully this will help.


I was reading the Philly newspaper that Jena brought back from her trip last weekend, and in the classifieds, I ran across a bizarre ad that basically said "Fart a lot? Get paid for it".

I thought it couldn't be real. I was wrong:

So strange. We live in a strange world.

Come on, UAW

UAW should file paperwork to change their name to Unemployed Auto Workers, because that's where this is headed. What this move says to me is that they don't have a lot of faith in the Big 3 to avoid bankruptcy, whether or not they get the bailout, so they might as well milk the money cow until it happens. Otherwise, how you can justify a decision to save the entire industry. I am sad for Michigan right now. It has been in the grips of greed and incompetence now for too long, and I can only hope that the bottom is near.

With news of a potential White House bailout being floated about, I frankly hope that Washington doesn't blink - anyone who is criticizing Congress for asking questions is kidding themselves. Just because Congress isn't perfect doesn't mean that these questions don't need to be asked. Would we all rather just dump taxpayer money into a broken company just to keep it afloat and broken for a few more months??

Thursday, December 11, 2008

When will WMATA get one of these?

Was reading Scripting News, by Dave Winer on Google Reader and came across this post that talked about the BART exposing a web API. I immediately wondered if our wonderful friends at WMATA had something like this. I discovered a twitter account apparently updated by the good people at Metrorail. Note that every single entry is 'double-tweeted'. If they can't get simple things like this right, my confidence in their ability to push out a public API wanes quickly. I found this site called meenster, which got rave reviews here, but it doesn't seem to show me very much. I don't know if it is broken temporarily or just completely defunct, but this is what I see for bustling Metro Center:

Not terribly confidence-inspiring news there. Ah well, I guess it was extremely wishful thinking there. Back to your regularly scheduled programming.

Go Dukes

When I got to college in the fall of 1995, I was pretty excited to be there. There was tons of stuff to do, new people to meet, college athletics to watch, and lots of free beer. James Madison at the time was a medium-sized state school, with about 9,000 undergrads. There were two buildings across the interstate, but most of the campus was located on the east side of I-81. I was assigned to Eagle Hall (tallest building in Harrisonburg, checking in at EIGHT stories), on the sixth floor or a building whose elevator was not the most reliable.

The only good thing about this building, and being on this floor, was the skybox view of the football field. Bridgeforth Stadium has come a long way. Thirteen years ago, it was a very basic stadium, with standard metal bleachers on either side, and was open at both ends. It was crappy astroturf. On gamedays, you would inevitably find it half full. We didn't have to go to the games, because we could sit in our rooms and watch Mike Cawley sling it all over the field, to other future NFL also-rans like Macey Brooks and Ed Perry. It was a fun brand of football to watch, though somewhat lacking in defensive intensity - there were many scores like 42-35. This is okay, because when you don't know the name of ANYONE playing in the game (not a lot of national notoriety for teams like New Hampshire or Richmond), you just want to see the scoreboard light up. They made the playoffs that year, if I remember it right, but they played on the road and lost in the first round. That was the last year that they were good for some time. My first year was also the second-to-last year of Lefty Driesell's time at Madison. The basketball team took a nosedive as well, after his departure to Georgia State.

Needless to say, my (more than four) years at Madison didn't make me a diehard JMU fan. I have pretty much stuck to my guns as a Michigan Wolverine fan, as my father raised me. They played games that mattered, were on TV regularly, and I could share the fun with my father. Even James Madison's National Championship football team in 2004 couldn't sway my allegiance.

Flash forward to last weekend. I am watching important football late in the season, but it ain't Michigan - oh no. They are 3-9, playing in the toilet bowl. This was James Madison in the playoffs yet again. It's a pretty big school - with a sprawling campus on both sides of I-81. There are 18,000 full time students now. A football powerhouse, they have been ranked #1 in 1-AA since upending the three-time defending champion Appalachian St team. I watched them last weekend, and came away not thinking "wow they are good for a 1-AA team", but rather, "wow, they are good". Also, I am pretty certain that if Michigan had Rodney Landers, who is a complete freak, that they would have gone 8-4 at worst this season. The guy is nasty. Make that Nasty with a capital N. Just watch #7 in these clips. Silly.

Tomorrow night, the Dukes will play in front of a packed house, in front of an increasingly cool and growing stadium, next to a giant parking deck that didn't used to be there, against Montana. On ESPN2. And they are going to win. And then they are going back to the championship. And I sure hope they win that one too. Anyway, the point of this post was that it's nice to actually be interested in your alma mater's sporting fortunes. Go Dukes!

Wednesday, December 10, 2008

Recession + Information = Comeback

Media is all different now. As this week's bankruptcy filing by Chicago Tribune illustrates, nothing is sacred in media any more. Almost all print media is laying off employees, and only those who were extremely forward thinking about the web and its potential will survive intact and profitable. "News" is still available in newspapers, and on the tradition news sites online, like and There is some analysis in the papers as well, in the form of editorials and columns, but, the vast majority is local news or newswire stuff. For better or worse, it seems like the real brunt of the "thought-work" has shifted onto the web. Obviously, since the barriers to entry on the web are low-to-nonexistent, so the existence of authoritative sources of news and analysis on the web are not a product of a name brand, but of the amount of followers the given site has. This is dangerous, but the good definitely outweighs the bad.

In the face of this, the way we react as a nation to the current state of the economy is quite interesting. The last time we were in a situation this dire (by most accounts the Great Depression), the knowledge and understanding about the technical minutiae of the crisis was concentrated in the brains of a very small group of people like Keynes, Schumpeter, Robbins and Hayek. Now, the science of Economics is much more mainstream, and there are far more people out there who understand (at least at some level) what is going on in the economy, what it means, and what to do about it (to a somewhat lesser extent). There are amazing modeling tools that make the what-if part of economics and econometrics so much more productive. Even more fascinating is that these economists are talking to us directly about what is going on, and what it all means. You can read near-daily blog posts from some of the great economic minds of our time about the current events, putting all the economic theory into context.

When I was taking these economics classes during my time at James Madison University, it was pretty rare to get economic theory and context in the same class (thank you Dr. Kreutzer for being one of the good ones who made a real effort to do this). Gregory Mankiw wrote the book I used for microeconomic theory. Now I can read his blog every day. You get real-time comment about such nebulous topics as bailouts, credit markets, unemployment, and whatever else you want. All this from brilliant folks who just want to share. Incredible.

I think that this information availability, and the wisdom of crowds will speed up the business cycles in our country. We have already seen the cycles speed increase on the way up - now we are seeing a blitzkrieg-style downturn. I believe that we will see a similarly quick end to this crisis. (I hope).

Tuesday, December 9, 2008

The Part Where The Java Developer Uses PHP

Any illusions I may have had about my PHP prowess were all but shattered over the past couple of days. What initially seemed like a fantastically successful migration disintegrated into a day of vigorous LAMP-stration, as I struggled through what seemed like a virtually impossible issue. Most everything was working - all read operations were just fine. Many inserts and updates were working as well. After about half an hour of poking around, I realized that the problem was that we weren't able to submit any form that included text with a single quote in it. Shouldn't be a problem right? I know the issue! Let's fix it. Not so fast my friend...

Here is the tale of my woe:

1) My first thought was "Google, single quotes php mysql". That's exactly what I did, and immediately found a reference to 'magic_quotes'. After reading the php help, I was pretty sure this was it. A thing that is built in to php to save the unsafe programmers from the evils of sql injections, by escaping special characters that are submitted as part of a form. That certainly includes single quotes. A-ha! This'll be quick. I verified that on the old server, and locally, this option was being used. I did this by running php -i, to get the php info. Here's what I saw on both of those servers:

magic_quotes_gpc => On => On

So I assumed that when I ran php -i on the new server, I would see

magic_quotes_gpc => Off => Off

Imagine my surprise when I ran php -i | grep magic, and saw

magic_quotes_gpc => On => On

How could that be? This was a definite crossroads in my debugging process, and I chose the wrong road. I could have verified that this was actually the case, but instead what I did was this:

2) Figure out how to escape strings in php prior to inserting into the database. Of course this application isn't using prepared statements - that would be too simple. Despite the availability of this option, no dice. That would solve everything, because the strings would be escaped as part of the persistence logic. Wrong. I played around with mysql_real_escape_string, which would work, but since this codebase has no persistence layer, I would to make a change to every single php file that posts to the database, and that just isn't practical for a product that we hope not to touch too much. So...the next option is to override the query() function in mysqli, to do some logic to escape the characters that need escaping. I started trying to do this, and wasn't getting anywhere, because it was pretty difficult to debug through this issue on the production to make sure that the new query logic was even being called. This was made especially difficult because of the sheer amount of cruft in the php_error_log.

Aside: Broken Windows

The Broken Windows theory is something that I heard a lot about during my time at Blackboard. The idea is that if you clean up the trash on a sidewalk, people are much less likely to litter. If you paint over all the graffiti, people won't tag on that wall. It was discussion in Freakonomics, and it a central theme in New York City's recovery from their crime epidemic of the 70s and 80s. At Blackboard, we had gotten pretty lax about what ended up in the log files. This sucks for a number of reasons. Under heavy use, this fills up the log files pretty quickly, using up disk space and cpu cycles to write the files. Under any usage level, it certainly makes it harder to see what the problems are in your software. The log is a place for things that you want to be there, like errors, warnings, and informational statements that you want there. It's not a good place for "Made it here at line 262", and "id coming in is: 12". That doesn't help anyone, and hasn't helped anyone since the person who put it in the log in the first place. My old manager was very astute in pointing this out, and making sure we did somethin about it. We made it a point at Blackboard to edit any code that did unnecessary print statements, and it really made a difference. Furthermore, nobody wanted to be the one who left gratuitous logging in the code.

Back to the story.

Once I decided that it couldn't be a php code thing, and definitely wasn't a mysql thing, I moved on to sheer despair and anger. This is probably not the best way to go about things, but it's where I was at. A walk to the coffee store with my boss led me to re-examine the php.ini file. See, I had compiled and tried to install php to include some packages that weren't installed initially, and it was a bad bad idea. Now, on this machine there are two versions of php. One is running on apache for the site - it's php 5.1.6. The php I installed was 5.2.6. Now I check and see what the options are for php again. Same thing. No way, I think. I finally did what I should have done a while ago and read the php.ini file. Guess what:

magic_quotes_gpc => Off => Off

How about that. I fixed that, and the problem is now solved. Voila.

The Moral of the Story

When I was doing interviews at Blackboard, I usually asked the candidates a few standard java questions to make sure they had a basic level of competency. Then I dove into problem solving techniques. So many people simply failed to even start any sort of critical thinking. I think that next time I am interviewing, I am going to use a version of this issue as my problem solving question.

Lessons learned - don't install php when it's already there as part of the OS. If you do, make sure that you are using the right version of php. Once you've done that, verify that what is in php -i is actually correct, by looking at php.ini. Biggest lesson learned - if your gut tells you something and you just know it's right, stick with it and follow up on it. It's usually the right path.

Saturday, December 6, 2008

What a Day.

Well today was one of those days where you just rock it out. I woke up early today and started getting ready for Part 1 of the day - Migration.


I'll probably do another post about this, but I had to migrate that PHP app I've mentioned a few times to a new server that we control. This is a good thing, and theoretically will be the end of my work with the application for all intents and purposes. It's one of those things that's been hanging over me for a while, and crap like that stresses me out. Happy it's done, and happy that it went pretty well, really, considering the hoops that required jumping through. Ahh. After that, I did some nerding out with the YouTube API as well. So cool, all the things you can do with that GData API set. Just wow. I'll probably eventually write about that too. Once I was done geeking, I moved on to Part 2 - Walking.


It isn't the walking that is so interesting. All I did was throw on the hoodie, walk over to Eastern Market to hit the bank, while listening to some awesome tunes on the Nano. This always puts me in a good mood, and since the migration had gone so well and only really took about an hour, I was on cloud nine. Getting to Eastern Market just made it better. There were wreaths, trees, and assorted holiday cheer on display. I got done at the bank, came back to the market, and went ahead and bought some delicious cinnamon sugar pecans from the Sweet Nuthouse. If you haven't ever had these (or the almonds), then you haven't lived a complete life. So delicious. I then bought a copy of Street Sense (favorite charitable organization in DC), and then donated to the Salvation Army bell ringers. Bless em for being out in the crappy cold. Then I headed back home, fighting the urge to tear into the pecans, and ready to start the third part of my day - Sports.


Today was a good sports day, albeit poorly scheduled. At 3:30, both Michigan and James Madison were on. I told Jena that I am not sure why these people don't consult me before scheduling these games. She just shook her head. Anyway, Michigan's hoopsters were taking on Duke at home in a rematch of the tournament loss from a couple weeks ago, and James Madison went up against Villanova in a football Quarterfinal. I had the basketball game on TV, and the football game on the computer (at least RCN has ESPN360, which I have to admit is pretty incredible). Michigan played an awesome game against a superior Duke squad, and pulled out another huge win over a #4 team. It was great to watch the team play as a team, and to watch John Beilein's vision coming to fruition earlier than I expected. Meanwhile, JMU jumped out to a 14-0 lead and looked like they were going to romp, but Nova came back and made it a tough game, taking the lead with 6 minutes to go. Not to be denied, the mighty Dukes marched down the field for the winning score, then sealed the deal with an interception in the final minute. Awesome. They will meet the Montana Grizzlies in the semifinals next week. GO DUKES!! With my fill of sports for the day, it was time for part four - Christmas shopping.

Christmas Shopping

I love Christmas shopping. I like to fight the crowds, wandering aimlessly from store to store. Buying things online just isn't the same. I love to go out and 'finish', only to go out again and buy more the next day. While I can appreciate the naysayers' lament of the materialist nature of Christmas, I don't care. I like to buy gifts for people. I like to wrap the gifts, and then I like to give them gifts. Especially Jena. My dad was big on Christmas as well. He used to just continue to buy gifts until the stores ran out, right up until Christmas Eve. The gifts were always exciting, but I think the excitement was more a function of just being part of something that someone was so excited about.

Now I am chilling on the couch. Relaxin. Feeling good. I have had a crappy, busy couple of weeks, but yesterday and today were good days. Some days you just have good days, and since Jena's out of town, I figured I'd tell someone about it.

Wednesday, December 3, 2008

Remove/Update Firefox 'about:config' Preferences (Mac OSX)

So I recently set a preference in my Firefox configuration on 3.0. I entered a string instead of an integer. Now, one would think that you could just switch this preference to an integer, or failing that, delete it. (At least for user-defined preferences). This, my friends was not the case. In case anyone else has this problem, let me help, because all the search results I ran across were wrong, wrong, wrong.

To set a pref:

type about:config in the address bar, add one.

Now, to find it:

/Users//Library/Application Support/Firefox/Profiles/.default

You will see a prefs.js file. This is the one. Now, make sure firefox is closed, and edit/remove the setting you used. When you restart, this setting will have taken effect. Hopefully this will help some other poor soul fight the good fight without wasting 45 minutes like I just did.