I am not sick. I am broken.

Firefox changed some of it’s defaults in version 2.0.  The new defaults are mind-numbingly bad in some places; and simply annoying in others.  Thankfully they can be fixed.  Here are a couple of the worst offenders and how to fix them.

Changing Back to shrinking Tabs in Firefox

  1. Open a new firefox tab.
  2. Type “about:config” into the address bar
  3. Type “tab” into the filter field.
  4. Change the settings of both “browsers.tab.tabClipWidth” and “browsers.tab.tabMinWidth” to 5
  5. Restart Firefox.

Use a single close button on Firefox

  1. Open a new firefox tab.
  2. Type “about:config” into the address bar
  3. Type “browser.tabs.closeButtons” into the filter field.
  4. Change value to “3” (without the quotes)
  5. Restart Firefox.

With foxes we must play the fox

Here is a list of Firefox shortcuts I have found over the years. I have kept this list on the company blog for months now, and yet, every-time I read over it I find something useful.

Shortcut Description
Alt + B Open the Bookmarks drop-down menu
Alt + D Select the current Location bar text
Alt + E Open the Edit drop-down menu
Alt + F Open the File drop-down menu
Alt + G Open the Go drop-down menu
Alt + H Open the Help drop-down menu
Alt + T Open the Tools drop-down menu
Alt + V Open the View drop-down menu
Alt + Enter Open address in a new tab
Alt + Left Arrow Move back
Alt + Right Arrow Move forward
Alt + Home Open the Home page
Alt + F4 Close active window
Backspace Move back
Delete Delete
Esc Stop downloading a page
End Move to the bottom of a page
Home Move to the top of a page
Ctrl + + (plus sign) Increase text size
Ctrl + – (minus sign) Decrease text size
Ctrl + 0 Restore normal text size
Ctrl + 1 Open Tab 1
Ctrl + 2 Open Tab 2
Ctrl + 3 Open Tab 3
Ctrl + 4 Open Tab 4
Ctrl + 5 Open Tab 5
Ctrl + 6 Open Tab 6
Ctrl + 7 Open Tab 7
Ctrl + 8 Open Tab 8
Ctrl + 9 Open Tab 9
Ctrl + F4 Close active tab
Ctrl + F5 Refresh (override cache)
Ctrl + A Select All
Ctrl + B Open/close the Bookmarks pane
Ctrl + C Copy
Ctrl + D Add a bookmark (defaults to the active page)
Ctrl + E Activate Web Search
Ctrl + F Find
Ctrl + G Find again
Ctrl + H Open/close the History pane
Ctrl + I Open/close the Bookmarks pane
Ctrl + J Open/close the Downloads dialog box
Ctrl + K Activate Web Search
Ctrl + L Select the current Location bar text
Ctrl + M Open a new e-mail message using the default e-mail client
Ctrl + N Open a new Firefox window
Ctrl + O Open a file
Ctrl + P Print
Ctrl + R Refresh
Ctrl + S Save As
Ctrl + T Open a new tab in the current Firefox window
Ctrl + U View the source code for the current page
Ctrl + V Paste
Ctrl + W Close the active tab within the current Firefox window
Ctrl + X Cut
Ctrl + Y Redo
Ctrl + Z Undo
Ctrl + Down Arrow Select next search engine in Web Search bar
Ctrl + Up Arrow Select previous search engine in Web Search bat
Ctrl + Tab Select the next tab within the current Firefox window
Ctrl + Page Down Select the next tab within the current Firefox window
Ctrl + Page Up Select the previous tab within the current Firefox window
Ctrl + Shift + Tab Select the previous tab within the current Firefox window
Ctrl + Enter Add “www.” to the beginning and “.com” to the end of the text in the Location bar
Ctrl + Shift + Enter Add “www.” to the beginning and “.org” to the end of the text in the Location bar
Ctrl + Shift + R Refresh (override cache)
Ctrl + Shift + W Close Firefox
Shift + F3 Find previous
Shift + F6 Move to the previous frame
Shift + Enter Add “www.” to the beginning and “.net” to the end of the text in the Location bar
Shift + D Delete the selected Autocomplete entry
Shift + Backspace Move forward
F1 Open Mozilla Firefox Help
F3 Find again
F5 Refresh
F6 Select the current Location bar text
F7 Toggle on/off Caret Browsing
F11 Switch between full-screen/normal view

To discover the limits of the possible…

I am going to repost this letter by Shae Allen via the BizNik forum. It would be even funnier if it wasn’t my life we are talking about. I present, for your reading enjoyment, “If Architects Had To Work Like Web Designers.”

Dear Mr. Architect:

Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.

Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don’t have nearly enough insulation in them).

As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like aluminum, vinyl, or composite siding. (If you choose not to specify aluminum, be prepared to explain your decision in detail.)

Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that kitchen should be designed to accommodate, among other things, my 1952 Gibson refrigerator.

To insure that you are building the correct house for our entire family, make certain that you contact each of our children, and also our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure that you weigh all of these options carefully and come to the right decision. I, however, retain the right to overrule any choices that you make.

Please don’t bother me with small details right now. Your job is to develop the overall plans for the house: get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpet.

However, keep in mind that my wife likes blue.

Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.

While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It therefore should have appeal to a wide variety of potential buyers. Please make sure before you finalize the plans that there is a consensus of the population in my area that they like the features this house has. I advise you to run up and look at my neighbor’s house he constructed last year. We like it a great deal. It has many features that we would also like in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe that you can design this into our new house without impacting the final cost.

Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction costs as a result of later design changes.

You must be thrilled to be working on as an interesting project as this! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can’t happen very often. Contact me as soon as possible with your complete ideas and plans.

PS: My wife has just told me that she disagrees with many of the instructions I’ve given you in this letter. As architect, it is your responsibility to resolve these differences. I have tried in the past and have been unable to accomplish this. If you can’t handle this responsibility, I will have to find another architect.

PPS: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case..

Development Life-cycle Integration

Now that I can focus on more application development issues at work, it is time to start bringing up some of the open source life-cycle tools I need.  Integrating the individual tools (MediaWiki, Bugzilla, Subversion, Mailman, WordPress, etc..) requires some work.  This has proven to be a little different than my previous experience because we are an Active Directory shop.  MS Active Directory actually uses a form of LDAP for authentication but it is different enough that each of the tools I use requires a little… playing… to get it working.  Here are the important links:

The reality is that if you company is not doing re-time build tests, nightly builds, automated testing, bug tracking with integration into you source control management system, and automated reporting; then your company is waisting developers time and resources.  Open Source has only been as successful as it has because of the plethora of automated tools available to them.  Your competition is using them… you better be.  There are hundreds of freely available software engineering tools in the Open Source world.  Check out Tigris.org for a fairly complete list.

10 JavaScript Tips

Here is a lists of useful tips for novice JavaScript programmers. With AJAX becoming a way of life on the internet, the importance of solid software engineering practices has become more important. All too often neither JavaScript developers, nor “hard language” programmers think of JavaScript as real programming. Most people’s web experience would improve significantly if more people did.

Mail Server on OpenSuse

Quick link to a mail server install that I have been working on for a client. These are simply some notes on getting SMMP, cyrus-sasl, Postfix, and POP3 working with SSL. The information also includes creating public key certificates and signing them. The intended platform is OpenSuse 10.2

The notes are based on a HowToForge.net article titled The Perfect Setup: OpenSuSE 10.2.

Public and Private… Parts.

I constantly forget how to setup a shared key environment for OpenSSH. It is pretty easy to find a tutorial on The Linux Documentation Project or How-To Forge but why do that when I can just have one here for me to find. This is a quick-and-dirty example of generating public and private keys, using shared-key authentication, and configuring an SSH agent. Eventually I will write a kde-agent so you don’t have to use the gnome one… but that is for another post.