I'm an experienced web developer, software engineer, and leader. Welcome to my blog. If you need to reach out you can continue the conversation with a tweet to @geedew. I hope you find what you are looking for here. You can also find me on Github and StackOverflow.

Usability and a Simple JavaScript hovering menu

Many web developers ask ‘what is usability?’. This is one of those topics that I can explain, but it may be easier to demonstrate. My this experiences have led to some principles; one of them is that if I’m going to build it, it must be usable. Unfortunately, many sites that I like, that tout usability, screw up one important concept that annoys me greatly.

I ask myself, “when using a menu, why do I have to drag my mouse from one button to the next, and fear losing the menu if I cross it’s border anywhere?” Some menus are just annoying because they disappear mid mouse move, some are extremely hard to use because of several layers of menus, some I have resorted to using tabs to get to the correct menu item. It’s unfortunate that people can’t get this right.

/ / / Read More

Scribd and Slide mode : Why is my height wrong?

While recently using Scribd‘s services, I came across a very nasty bug, and a nice clean fix. Scribd allows developers to tap into a great, but somewhat basic API. One of these settings allows a developer to set a default ‘mode’ before the API then builds the flash calls necessary to display the document. The issue comes up when you choose the ‘slide’ mode as the loading view. No matter what ‘height’ you set, with ‘auto_size’ set to false, the height will adjust to the wrong height.


/ / / Read More

Making a better notification plugin: jQuery

I find myself at a crossroads. I really like using jQuery, and I really like not having to write my own plugins as there are some really good ones out there. But I have run into a problem when it comes to a notification system. Let’s take a step back and discuss the purpose for a minute.

Update 7/29/2009
I now have a page dedicated to this at http://www.alldorks.com/wordpress/notify where you can also find the source code repository.

/ / / Read More

X61 Tablet - Ubuntu

This install guide in incomplete, but it is the most advanced guide you will find for the X61 tablet running Ubuntu Jaunty (unless google likes you more than it likes me). I will attempt to keep is somewhat organized with the following Table of Contents:

Installing Ubuntu Jaunty 64 from the Alt. CD

Following this setup, YOU WILL LOSE ALL OF YOUR DATA. So backup your drive.

  • Download the CD here

  • Burn the ISO image onto a CD.

    *   _Things get a little sticky here.  Reasons being, the X61T does not have a CD-ROM drive, Ultrabase aside.  I personally went out and purchased the LG GSA-E5OL (External Super Multi DVD Rewriter) which is pretty slick itself... very slim, and very much perfect for the X61T.  It's bootable and 100% linux friendly.. and it has lightscribe!  Other options you have: network install, usb install, external HD install.  But really, the easiest, and the way that I have chosen is just get a plug-n-play external CD-ROM drive._
    
  • Backup your information and get ready to roll with the install.

  • Put your new Alternate CD in your drive, say goodbye to your hard work on your laptop and begin the journey to a fresh install of Jaunty.

  • The first thing you should get is a language menu. I chose English…duh.

  • Before you move on to the install, check the cd for defects, this usually only takes about 10-15 minutes max. It’s very important not to skip this, it’s only 10 minutes and if you have a bad CD, you may get 10 minutes into a semi-bricked laptop.

  • Once the CD is confirmed Okay, you should find yourself back at the menu (I think I had to do a restart). Press

    1
    2
    3
    4

    This will give you the advanced options of going into `expert` mode. Select this mode by using your arrow keys and pressing

    ``` xmlenter

    To exit, press

        
    1
    2
    3
    4
    5

    on your keyboard.

    * Select to 'Install Ubuntu' with your arrow keys and press<p>
    ``` xmlenter
    <p class="entry-text">You're now going to be put into an internal menu. I will underline the options that you will click on. All of them will be clicked, and in order from top/down. * <span style="text-decoration: underline;">Choose the language</span>... I selected all defaults here. You may or may not need to change anything, but the defaults are for all english speaking individuals. * <span style="text-decoration: underline;">Detect and Mount the CD-ROM</span>... I went over this before, hopefully you are using a CD-ROM. * <span style="text-decoration: underline;">Load debconf preconfiguration file</span>... * <span style="text-decoration: underline;">Load installer components from CD</span>... Now, I winged this here. You are given a menu with some short descriptions. Yes, I know i chose the `expert` mode and I guess I lied slightly (I was curious?). Ok, so I chose the `lvmcfg` selection and the `parted-udeb` selection on the grounds I simply MUST have full drive encryption AND ext4... which you would think is just common sense in this day and age. * <span style="text-decoration: underline;">Detect network hardware</span>... you need this step, whether you need it or not. My computer runs off Wifi internet, so the next step will obviously fail, to which it asks you to skip it after it fails, in which that is what I would suggest you also do. If you are wired to the internet, you should disconnect before this step? Why, because you're possibly going to get mixed results on the rest of the steps I'm going to be following. * <span style="text-decoration: underline;">Configure the network</span>... Choose Auto. Not configured -&gt; continue. Explained in the last post, this step will fail, but you must attempt it to get the menu selection of `do not configure network at this time`. Please select this step. * <span style="text-decoration: underline;">Hostname</span>... Unless you are a guru of some sort, to which I ask "why are you reading this?", you will not need the hostname for much. It will however help you if you're going to be web programing. I will be. So my hostname is 'coyote' as it matches my Desktops hostname 'bear' and my servers hostname, 'den'. * <span style="text-decoration: underline;">Configure the clock</span>... I selected all the defaults, other than my timezone, `central` time. Yes, your bios is using UTC. * <span style="text-decoration: underline;">Partition disks</span>... The FUN!!! part. I am NOT the best person to ask when it comes to the greatest Linux setup for disk partitioning. Some people are fanatic about separation of home/root/var etc. I'm not in the least, in fact, I chose `Guided - use entire disk and setup an encrypted LVM` and you should too. It's just too much effort for the benefit to do anything but that option. Follow through this option with the default selections until you get to `passwords`. Make your password a passphrase. Mine is a complete sentence, replacing some letters with special characters, and is a 33 character long sentence with no spaces. You will need this to get into your computer, NO MATTER WHAT. Do not forget it and make it easy to remember. Choose more defaults until it asks you to `write changes`. Do NOT write the changes yet, we need to tweak it. * You can select with the arrow keys the primary partition that has the `/` character as the mount point and is an `ext3` drive. Select this drive and press
    1
    2
    3
    *   Using your arrow keys again, go up to the `ext3` volume option and press

    ``` xmlenter
    Move the dropdown to `ext4` and press
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    Why are we selecting ext4? Well.. because it's better. You will find your system acting, more efficiently and that's a good thing.

    * Now you can go back and write the changes. The screen scrolls so you may have to use your arrow keys to go all of the way down to get access to the selection.

    * <span style="text-decoration: underline;">Install the base system</span>... This will bring up the kernel choice. I chose `linux-generic`, rather than the others. I only chose this because I may be making some 'fixes' to the kernel later, and the most generic option will have the least consequences to these actions. I also chose the `targetted image` so that I would have a more streamlined setup. If I'm missing things later, it really won't matter as chances are I will have to get the source files to make the changes.

    * <span style="text-decoration: underline;">Set up all users & passwords</span>... You will want shadow passwords. Do not encrypt the home folder, it will have negative performance impacts and your entire drive can't be mounted without the password you chose, so you should be ok enough without this option

    * <span style="text-decoration: underline;">Configure the package manager</span>... I took no notes here, so I'm assuming that I didn't have anything to do here.

    * <span style="text-decoration: underline;">Install Grub</span>... Do not install Grub 2, it will fail. It's not really going to be necessary and may cause issues later because it's still undergoing some big changes.

    * <span style="text-decoration: underline;">Install the MBR</span>... I think I wrote this note wrong, but I'm going with it as an option, even though my best guess says it's actually an option of the last one. In any case, you need to install the MBR so that you can boot your new partitions.
    * And that should be pretty much it. After the system is finished, it should tell you that it needs to restart. Your CD should eject, and then it will restart and load up to the point of having to put in your Crypt Password that you created earlier.

    * The first thing you should do when getting into your new setup is this:

    * go to the top right menu Applications -&gt; Accessories -&gt; Terminal

    * inside of the terminal enter these commands:

    ``` xmlsudo apt-get update

    Enter your password to confirm

            
    apt-get upgrade```
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    Hit `Y` and `enter` if any updates are found. Your system is now fully up to date!

    ## What works out of the box?

    Sound, Pen, Touch, Nearly all Function Keys, Led's, Wifi, Bluetooth. It's actually a very robust system out of the box.

    </div>

    * * *

    <div id="scrolling">

    # Using the middle mouse for vertical and horizontal scrolling

    This is actually much easier to do in Jaunty on a clean system. This will also work in Intrepid, as long as you haven't already configured Xorg.conf to handle the same functions.

    1. Open up a terminal. On the top left menu choose Applications -&gt; Accessories -&gt; Terminal.

    2. Within the terminal type these commands
    ``` xmlcd /usr/share/hal/fdi/policy/20thirdparty sudo touch x61t-scroll.fdi
    Enter your password
    gedit x61t-scroll.fdi```
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    A new window should open (GEdit) that is blank. Enter the following into the new window.

    ``` xml&lt;match key=&quot;info.product&quot; string=&quot;TPPS/2 IBM TrackPoint&quot;&gt; &lt;merge key=&quot;input.x11_options.EmulateWheel&quot; type=&quot;string&quot;&gt;true&lt;/merge&gt;
    &lt;merge key=&quot;input.x11_options.EmulateWheelButton&quot; type=&quot;string&quot;&gt;2&lt;/merge&gt;
    &lt;merge key=&quot;input.x11_options.YAxisMapping&quot; type=&quot;string&quot;&gt;4 5&lt;/merge&gt;
    &lt;merge key=&quot;input.x11_options.XAxisMapping&quot; type=&quot;string&quot;&gt;6 7&lt;/merge&gt;
    &lt;merge key=&quot;input.x11_options.Emulate3Buttons&quot; type=&quot;string&quot;&gt;false&lt;/merge&gt;
    &lt;merge key=&quot;input.x11_options.EmulateWheelTimeout&quot; type=&quot;string&quot;&gt;200&lt;/merge&gt;
    &lt;/match&gt;
  1. Save and Close the new GEdit window.

  2. Restart your computer and the settings should now work for both horizontal and vertical scroll

Getting Touch to Work with Just HAL

These steps follow right in line  with the last steps.  From a clean system, it's actually not that hard.
<ol>
    <li>Get the packages 
apt-get install wacom-tools xserver-xorg-input-wacom```
1
2
3
4
5
6
<li>Download the libraries
``` xmlsudo apt-get update
sudo apt-get install build-essential libx11-dev libxi-dev x11proto-input-dev xserver-xorg-dev tk8.4-dev tcl8.4-dev libncurses5-dev
sudo apt-get upgrade```</li>
<li>Now the kernel headers for your kernel are needed. To determine your kernel version:
``` xmluname -r
If you have the generic kernel:
apt-get install linux-headers-generic```
1
2
3

If you have the rt kernel:
``` xmlsudo apt-get install linux-headers-rt
(Remember if you update to a newer kernel, then the module won't work on restart because the module is compiled for a specific kernel. You will have to recompile the module for the newer kernel.)</li> <li>Okay now unpack the source code tar and go into the unpacked source code directory.
tar xjvf linuxwacom-0.8.3-2.tar.bz2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	cd linuxwacom-0.8.3-2```</li>

<li>Then we compile and install the linuxwacom kernel module.
(To see the options the linuxwacom configure script offers you type "./configure --help | less".)
``` xml./configure --enable-wacom --prefix=/usr
make```</li>

<li>(using --prefix=/usr installs to /usr instead of the default /usr/local)!!!!We DO NOT run "sudo make install" since we only want the module.</li>
<li> Next we copy the module to the appropriate directory:

``` xml sudo cp ./src/2.6.28/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/wacom.ko```</li>

<li>Now, simply run this command to calibrate your touchscreen to remove that annoying distance issue.

``` xmlwacomcpl
Your all set, should run great! A big pain in the butt though is when these things don't stick after a logout or restart. Well, this is how I solved that!
chmod 755 $HOME/.xinitrc
1
sudo gedit $HOME/.xinitrc
comment out the line that says ". /etc/X11/xinit/xinitrc" by adding a # in front of it. Save the file. <li>From ubuntu's menu, go to
-> Preferences -> Startup Applications```
1
2
3
4
5

Create a new one... I called mine TouchCalibration
for the command put

``` xmlsh $HOME/.xinitrc
And save that. Now it should run on login... which will really help! Details were partially gathered from this [thread](http://ubuntuforums.org/showthread.php?t=1038949&amp;page=18) Thanks [gali98](http://ubuntuforums.org/member.php?u=344352)!</li>

Install and run Google Gears on Ubuntu 64 -bit

Google Gears allows sites configured with gears to run in offline mode.  For instance, I'm editing this post in offline mode as I type. Basically, FF3 + 64 bit Ubuntu do not match with the binary code.  Luckily, Google has made Gears open sourced, so some smart people have taken this problem and have solved it.  So far, I know that this app will work with 3.09 and 3.1 Firefox.  Chances are, that is what you have running right now if you have been keeping updated.

It's simple to install,
Click the link. [gears-linux-opt-05210.xpi](http://nielspeen.com/blog/wp-content/uploads/2009/05/gears-linux-x86_64-opt-05210.xpi) via http://nielspeen.com/blog/2009/02/google-gears-64-bit/
Allow the program to install.
Click yes when it asks if you would like to restart.

At that point, whenever you encounter a gears enabled website, you can add it as a trusted site, download the info and your can then go offline!

Enjoy!

Perfecting the Linux User Desktop

The linux desktop over the years has been a large struggle for many users. I hear many complaints from people that have ‘tried’ linux out and they seem to all come to the conclusion that it is difficult or even impossible to use. The unfortunate part about most of these complaints, is that they are reiterating something they read 10 years ago, or something their friend who knows computers becaues he is a ‘gamer’ told him so.

/ / / Read More