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??
Friday, December 12, 2008
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!
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!
Labels:
jmu
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 cnn.com and msnbc.com. 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).
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.
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.
Labels:
programming,
software
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.
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.
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.
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.
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.
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.
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.
To set a pref:
type about:config in the address bar, add one.
Now, to find it:
/Users/
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.
Labels:
software
Subscribe to:
Posts (Atom)