Every so often, I am surprised when a new version of software I use lands. Last Thursday, I received one such surprise in the form of Firefox 3.6. Normally I follow development news closely enough that it seems like release will never come; however this one slipped beneath my radar. When the browser notified me that the new version had landed, I had no choice but to immediately install it and begin geeking out over new features and performance improvements.
I was most pleased about the huge improvements in JS performance. This is particularly important at work, where I use an XP box that is decidedly less than cutting edge in terms of horsepower. Because I do most of my work in Firefox, improvements in speed are a boon to my productivity.
A comparison two runs through the Sun Spider test on my work PC are below (Spoiler alert: 173% improvement!):
Run 1 (FF 3.5) Run 2 (FF 3.6)
Wednesday, January 27, 2010
Sunday, December 6, 2009
Another Year of BCS Failures
Last night I sat on my sofa and watched with fascination--but not surprise--as two of the so-called top teams in the nation were embarrassed in big games. Of course, I refer to Florida's 32-13 debacle and Texas's 13-12 escape (which was also a debacle). Yesterday's events underscore the real problem that we have with the BCS/polling system used in college Football at the FBS level. Take this scenario into consideration:
A team has a stellar season, wins their conference and goes on to have a very solid win against a formidable opponent in the bowl game. The following season, most poll voters are very "high" on this team and give them a high ranking in the preseason polls. After a few weeks of play and good performance, this translates into an equal or similar slot in the BCS rankings.
This team goes on to run the table in a conference that turns out not to be as good as expected--top-heavy, indeed, with this team being at or near the top. They didn't prove as much on the field as they should have due to competition that was decidedly sub-par, but because they didn't lose to these other teams, the BCS kept them from falling below their inflated preseason position due to the importance placed on what teams have in the "L" column.
Then, after a season of trouncing any and all opposition, the team reaches the championship game: after so many months of media hype and a zero in the "L" column, the team shows up convinced of their superiority and possibly even slightly complacent. Maybe mix in a key injury during the game. The result is an ugly, ugly night. The team is exposed as a group of "frauds". Not capable of living up to lofty expectations. Charlatans. All of this because the team was propelled to a high position largely because of opinion (beginning with those preseason polls) rather than a résumé built on the field against quality opposition. This team, due to a lack of real challenges on the field during the season, did not progress as much as was needed to meet the challenge that came in the form of the opponent in the championship game. And boy, were they ever punished for it. Not only on the field, but afterward in the form of a critical media and gloating fans of the opposing team.
Who is this team, you ask? It's 2006 Ohio State in the BCS National Championship game. It's also 2009 Florida in the SEC Championship game; 2009 Texas in the Big 12 Championship game. Take your pick.
This kind of nonsense is exactly why the BCS should go. By nature of its very flawed design, this system produces teams like what have been described above. Voters decide which two teams are "best" at the beginning of the season and--barring upsets, which don't often happen when conferences lack parity--the BCS supports what is essentially an educated guess. Last night's games showed that those guesses were wrong. Florida, Texas, and other teams were essentially crowned among the nation's best based largely on last season's performance. Take from them the quality of competition that was expected (which is true this year in both the Big 12 and the SEC) and what do you get? A team that is ill-prepared and ill-progressed late in the season. A recipe for disappointment.
The BCS must go, but it probably never will because the powers that be are making far too much money on the way things currently work, which is a discussion for another day.
A team has a stellar season, wins their conference and goes on to have a very solid win against a formidable opponent in the bowl game. The following season, most poll voters are very "high" on this team and give them a high ranking in the preseason polls. After a few weeks of play and good performance, this translates into an equal or similar slot in the BCS rankings.
This team goes on to run the table in a conference that turns out not to be as good as expected--top-heavy, indeed, with this team being at or near the top. They didn't prove as much on the field as they should have due to competition that was decidedly sub-par, but because they didn't lose to these other teams, the BCS kept them from falling below their inflated preseason position due to the importance placed on what teams have in the "L" column.
Then, after a season of trouncing any and all opposition, the team reaches the championship game: after so many months of media hype and a zero in the "L" column, the team shows up convinced of their superiority and possibly even slightly complacent. Maybe mix in a key injury during the game. The result is an ugly, ugly night. The team is exposed as a group of "frauds". Not capable of living up to lofty expectations. Charlatans. All of this because the team was propelled to a high position largely because of opinion (beginning with those preseason polls) rather than a résumé built on the field against quality opposition. This team, due to a lack of real challenges on the field during the season, did not progress as much as was needed to meet the challenge that came in the form of the opponent in the championship game. And boy, were they ever punished for it. Not only on the field, but afterward in the form of a critical media and gloating fans of the opposing team.
Who is this team, you ask? It's 2006 Ohio State in the BCS National Championship game. It's also 2009 Florida in the SEC Championship game; 2009 Texas in the Big 12 Championship game. Take your pick.
This kind of nonsense is exactly why the BCS should go. By nature of its very flawed design, this system produces teams like what have been described above. Voters decide which two teams are "best" at the beginning of the season and--barring upsets, which don't often happen when conferences lack parity--the BCS supports what is essentially an educated guess. Last night's games showed that those guesses were wrong. Florida, Texas, and other teams were essentially crowned among the nation's best based largely on last season's performance. Take from them the quality of competition that was expected (which is true this year in both the Big 12 and the SEC) and what do you get? A team that is ill-prepared and ill-progressed late in the season. A recipe for disappointment.
The BCS must go, but it probably never will because the powers that be are making far too much money on the way things currently work, which is a discussion for another day.
Labels:
BCS,
College Football,
Florida Gators,
Texas Longhorns
Wednesday, November 18, 2009
Browser Boot Camp
Greetings, fellow MindLeaders!
I was recently fortunate enough to lead a training session at the office. Given the fact that my employer is a company whose product is a web app, I saw an opportunity to train co-workers about what is going on with the World Wide Web and web browsers today (and tomorrow, for that matter). The one-hour training session was referred to as Browser Boot Camp and was a success, thanks in large part to the enthusiasm of the attendees.
The presentation can be downloaded in the following formats:
ODF (Open Office) | PDF
(You may need to right-click and choose Save Target As).

Browser Boot Camp by Rick Ucker is licensed under a Creative Commons Attribution-No Derivative Works 3.0 United States License.
I was recently fortunate enough to lead a training session at the office. Given the fact that my employer is a company whose product is a web app, I saw an opportunity to train co-workers about what is going on with the World Wide Web and web browsers today (and tomorrow, for that matter). The one-hour training session was referred to as Browser Boot Camp and was a success, thanks in large part to the enthusiasm of the attendees.
The presentation can be downloaded in the following formats:
ODF (Open Office) | PDF
(You may need to right-click and choose Save Target As).
Browser Boot Camp by Rick Ucker is licensed under a Creative Commons Attribution-No Derivative Works 3.0 United States License.
Monday, November 9, 2009
Bitpim & Bluetooth Under Ubuntu Karmic
Last week, I gleefully installed Ubuntu 9.10, the Karmic Koala, on a new laptop. One of the first things on my to-do list was getting Bitpim set up so I could transfer ringtones & contacts between my laptop and my cell phone (a Verizon Wireless LG Dare).
To accomplish this, I looked up an old tutorial I had followed a while back for setting everything up on my old desktop machine.
I have found that a couple of things have changed since that guide has written, so I thought it would be worthwhile to post an updated version and share my findings.
Getting Started
Everything in this tutorial is possible under Karmic without installing any packages that aren't installed by default (except for Bitpim, of course).
This works for my LG Dare (Firmware version 05) and should work for many/most/all other Verizon LG phones that support the proper Bluetooth profiles -- possibly many more beyond that.
Just to keep things relatively short, we will assume that you have already managed to pair your phone with your computer.
Unless otherwise specified, assume any commands I ask you to issue will be done in Terminal.
Step 1: Find your phone's MAC address
The easiest way to do this is to browse the device via Nautilus: from the Bluetooth icon in the Gnome Panel, choose your device and then choose Browse Files. This will open a new Nautilus window and your phone's MAC address will be displayed in the address bar in the format obex://[mac:address:here]/.
Step 2: Find the channel used by the Bluetooth Serial Port service
Issue the command: sdptool browse mac:address:here.
My Dare uses Channel 5 for Serial Port as shown here:
Service Name: Serial Port
Service RecHandle: 0x10006
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Note: Some phones may not show anything labeled "Serial Port". In the case of my old phone (an LG VX9900), for example, I used the BT DIAG service instead and it worked. If you don't have a Serial Port section, you may have to try another service instead (but no guarantees it works).
Step 3: Create an RFCOMM binding by editing the appropriate config file
Open the config file by running: gksudo gedit /etc/bluetooth/rfcomm.conf
Uncomment the rfcomm0 section (remove the # from each line) and change it to look like this:
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device mac:address:here;
# RFCOMM channel for the connection
channel 5;
# Description of the connection
comment "Needed by BitPim";
}
Step 4: Make sure your bluetooth bindings are added at startup
Due to a bug in 9.10, the rfcomm bindings that we specified above (in rfcomm.conf) will probably be ignored at startup. Reply #5 in the LP bug report provides a workaround for this issue. The instructions there are written for users who have upgraded to 9.10-- on my fresh 9.10 installation however, I needed only to follow step 3, which I will repeat here.
Open rc.local (gksudo gedit /etc/rc.local) and add the line:
rfcomm bind yes
Above the last line (which should say exit 0).
Step 5: Restart the Bluetooth service
Issue the commands:
sudo /etc/init.d/bluetooth stop
sudo /etc/init.d/bluetooth start
Note: running sudo /etc/init.d/bluetooth restart did not work for me: this caused the BT service to stop, but it wouldn't start again on its own. I had to issue "start" to get it to start again.
Step 6: Start Bitpim and check available com ports
Start Bitpim and go into Settings, then click the Browse... button to the right of "Com Port". You should see "Bluetooth (/dev/rfcomm0) listed under Available Ports. If you do, you are all set! You can now start reading/writing your phone data using Bitpim. If not, you may have done something wrong. Double check your work above and try again before continuing.
Step 7: Have fun hacking away at your phone!
If you have any questions or run into problems, please be as specific as possible when asking for help.
Thanks to:
Ars Technica
Tony
To accomplish this, I looked up an old tutorial I had followed a while back for setting everything up on my old desktop machine.
I have found that a couple of things have changed since that guide has written, so I thought it would be worthwhile to post an updated version and share my findings.
Getting Started
Everything in this tutorial is possible under Karmic without installing any packages that aren't installed by default (except for Bitpim, of course).
This works for my LG Dare (Firmware version 05) and should work for many/most/all other Verizon LG phones that support the proper Bluetooth profiles -- possibly many more beyond that.
Just to keep things relatively short, we will assume that you have already managed to pair your phone with your computer.
Unless otherwise specified, assume any commands I ask you to issue will be done in Terminal.
Step 1: Find your phone's MAC address
The easiest way to do this is to browse the device via Nautilus: from the Bluetooth icon in the Gnome Panel, choose your device and then choose Browse Files. This will open a new Nautilus window and your phone's MAC address will be displayed in the address bar in the format obex://[mac:address:here]/.
Step 2: Find the channel used by the Bluetooth Serial Port service
Issue the command: sdptool browse mac:address:here.
My Dare uses Channel 5 for Serial Port as shown here:
Service Name: Serial Port
Service RecHandle: 0x10006
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Note: Some phones may not show anything labeled "Serial Port". In the case of my old phone (an LG VX9900), for example, I used the BT DIAG service instead and it worked. If you don't have a Serial Port section, you may have to try another service instead (but no guarantees it works).
Step 3: Create an RFCOMM binding by editing the appropriate config file
Open the config file by running: gksudo gedit /etc/bluetooth/rfcomm.conf
Uncomment the rfcomm0 section (remove the # from each line) and change it to look like this:
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device mac:address:here;
# RFCOMM channel for the connection
channel 5;
# Description of the connection
comment "Needed by BitPim";
}
Step 4: Make sure your bluetooth bindings are added at startup
Due to a bug in 9.10, the rfcomm bindings that we specified above (in rfcomm.conf) will probably be ignored at startup. Reply #5 in the LP bug report provides a workaround for this issue. The instructions there are written for users who have upgraded to 9.10-- on my fresh 9.10 installation however, I needed only to follow step 3, which I will repeat here.
Open rc.local (gksudo gedit /etc/rc.local) and add the line:
rfcomm bind yes
Above the last line (which should say exit 0).
Step 5: Restart the Bluetooth service
Issue the commands:
sudo /etc/init.d/bluetooth stop
sudo /etc/init.d/bluetooth start
Note: running sudo /etc/init.d/bluetooth restart did not work for me: this caused the BT service to stop, but it wouldn't start again on its own. I had to issue "start" to get it to start again.
Step 6: Start Bitpim and check available com ports
Start Bitpim and go into Settings, then click the Browse... button to the right of "Com Port". You should see "Bluetooth (/dev/rfcomm0) listed under Available Ports. If you do, you are all set! You can now start reading/writing your phone data using Bitpim. If not, you may have done something wrong. Double check your work above and try again before continuing.
Step 7: Have fun hacking away at your phone!
If you have any questions or run into problems, please be as specific as possible when asking for help.
Thanks to:
Ars Technica
Tony
Wednesday, October 21, 2009
Getting Started with Eclipse
For about the last month I have been learning Java. Due to outside requirements, I have been using the BlueJ IDE for development. However today I decided to give Eclipse a try.
I installed version 3.2.2 from the Ubuntu repos and loaded a project I had just completed in BlueJ. It was then that I was greeted with a few errors regarding my code. The first of which was:
Scanner cannot be resolved to a type
The line of code in question was:
private Scanner userInput = new Scanner(System.in);
Strange, I thought, since I had made no changes to the code and had just compiled and run this project in BlueJ.
I first checked the installed version of Java:
$ java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11)
OpenJDK Client VM (build 14.0-b08, mixed mode, sharing)
$ javac -version
javac 1.6.0_0
Ok, everything looked good there. I checked the compiler settings in Eclipse and changed the compiler from 5.0 compliant to 6.0 compliant. No joy.
After some more digging I concluded that the issue was probably that Eclipse was not using the proper JRE. Sure enough, Eclipse was using version 1.5 at /usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0. I added another JRE entry pointing to /usr/lib/jvm/java-6-openjdk (which is what my BlueJ installation was already using) and voila! No more errors.
I guess I should look into cleaning up the multiple JRE's I have installed on this machine.
But first, back to exploring Eclipse!
I installed version 3.2.2 from the Ubuntu repos and loaded a project I had just completed in BlueJ. It was then that I was greeted with a few errors regarding my code. The first of which was:
Scanner cannot be resolved to a type
The line of code in question was:
private Scanner userInput = new Scanner(System.in);
Strange, I thought, since I had made no changes to the code and had just compiled and run this project in BlueJ.
I first checked the installed version of Java:
$ java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11)
OpenJDK Client VM (build 14.0-b08, mixed mode, sharing)
$ javac -version
javac 1.6.0_0
Ok, everything looked good there. I checked the compiler settings in Eclipse and changed the compiler from 5.0 compliant to 6.0 compliant. No joy.
After some more digging I concluded that the issue was probably that Eclipse was not using the proper JRE. Sure enough, Eclipse was using version 1.5 at /usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0. I added another JRE entry pointing to /usr/lib/jvm/java-6-openjdk (which is what my BlueJ installation was already using) and voila! No more errors.
I guess I should look into cleaning up the multiple JRE's I have installed on this machine.
But first, back to exploring Eclipse!
Monday, October 12, 2009
User Database Manager
As I wrote about back in June, I have been getting back into programming this year. I started off in Python and it went well. Approximately two months in, I was able to write a simple database manager. It actually started as a response to LaRoza's Beginner's Programming Challenge #7 and turned into a bit of a monster as I added more and more functionality once I satisfied the initial requirements. The program is written in Python and uses a sqlite database. The requirements are pysqlite 2.x on the client machine in addition to an installation of Python.
I figured that since the program is robust and feature-complete (albeit limited in scope), it would be worthwhile to officially release it under a GNU GPL. This will happen once I figure out what hosting service and/or version control system to use. Hopefully, someone out there in learner-land may find it useful.
Thursday, October 8, 2009
Flickr
After months of neglect and with a little bit of inspiration from the Cellular Obscura blog, I decided today to revive my Flickr account. My photostream has been added to the sidebar. Hopefully I'll be able to fill it with some noteworthy photos.
Subscribe to:
Posts (Atom)