IE 7 Hates USB Mice

I’ve half assedly (yes, it’s a word, I made it up) followed the IE 7 development. I’m a web developer, it’s my job to be aware of such things. So, when it was still in beta (about 2 or 3 months ago) I installed it at work to see what it was all about. First impression: bloated piece of crap that does the exact same shit that Firefox has been doing for years; tabs, RSS, popup blocking, add on’s (extensions for the < 2.0 users), et al. The interface was horrible (still is) and it just wasn’t that interesting to me. It had a distinct Vista feel for XP and we already know how I feel about Vista.

So when the release of IE 7 was final earlier this week, I thought, “well, maybe the polished version is better.” Well, it wasn’t. Still the same bloated piece of crap I installed a few months ago. Not only that, but one of the first things that left a really bad taste in my mouth was the “Windows Genuine Advantage” bullshit during the install. This has to be the worst move Microsoft could have made. Not only is it annoying (not that it took a long time to verify that the version of Windows I was using was authentic), but it’s extremely insulting.

“We don’t trust you as far as we can throw you, so, we’re going to need to check your license to make sure it’s legit. Hope you don’t mind.”

Horse shit. If they want to check the license against a database of known compromised keys, so be it. Do so unbeknownst to the user. Don’t tell them about it. If it’s an unauthentic key, notify them and let them know how to purchase a valid license. It’s extremely rude.

The second thing I did was to open IE 7 and create a new tab. “Woohoo,” I thought, “IE has tabs.” One second later, the application completely vanished. Yes, vanished. No crash reporter deal; no popup telling me everything is cool (which it’s not), the application just crashed. Nothing. I could reproduce this every time. Open IE, create a new tab, POOF!

So, I set out to figure this out. Why the hell is this damn thing crashing every time? Honestly, I normally would have just uninstalled the damn thing and went about my merry business. However, I learned from our Help Desk at work that they are forcing the update on everyone’s workstation. Why, couldn’t tell you. The application was out for a day and the ever so helpful Help Desk was walking around installing IE 7 for everyone.

I spent half the day searching for answers and re-installing the software with no luck. The shit just wouldn’t work. Typical. At some point, I told one of my colleges about the problem I was having. I had already started with the add-on’s turned off and disabled a bunch on them that I didn’t need. He asked me if I was using a USB mouse.

“Yes, why?”

“Try using the USB to PS/2 adapter. Joey [the ever so helpful Help Desk guy] said to use it when I was having issues one time.”

Are you shitting me? “OK”, I thought, “nothing else seems to be working and I guess one more reboot wouldn’t hurt.” So, I shut down the machine, unplugged my USB mouse and plugged it into the PS/2 port. Mind you, this is a Microsoft mouse running Microsoft drivers. Well, when I rebooted, fired up IE and created a new tab, guess what; no crash.

So here’s my question, Microsoft: Why the hell does your mouse cause your software to disintegrate into thin air?

In the end, I’m trying IE 7 out for a day or two to see how it behaves. So far, I’m unimpressed. Like I said before; it does the same thing Firefox has been doing for years. It seems that the best Microsoft could muster up in the past, what, 3 years, is to play catchup with the rest of the internet world.

Way to go Microshit! You just earned a C- in the school of web development.

Technorati Tags: ,

LiMP: Lighttpd, MySQL & PHP on OS X

In following with the LAMP, MAMP, and WAMP themes, I’ve come up with my own acronym: LiMP. Lighttpd, MySQL, PHP. Of course, this doesn’t really follow the conventions of the other acronyms (my OS isn’t represented). Mainly because adding an ‘M’ just doesn’t sound (or look) right. It’s a great setup and I recently reconfigured it so it’s a (somewhat) isolated installation that could potentially be installed on any OS X system. I also managed to get ExecWrap working properly as well.

*NB*
This is a fairly technical article and requires getting your fingers dirty in the Terminal (a.k.a. comman line). If you’re not fully comfortable in the Terminal, I suggest you familiarize yourself with the Terminal. You’ll also need to have installed the latest version of Xcode.

You can build this just about anywhere on your system you like. I personally keep everything in

/usr/local/src

but you can build this anywhere you want on your system. I also like to

sudo -s

so that I’m always root when comiling and installing these things. Let’s jump in…

Create your src directories:

mkdir -p /usr/local/src && cd /usr/local/src

That’s it. Now lets dig in…

Setting up Lighttpd on OS X

I figured building this on OS X wouldn’t take too much effort and I was pretty much right. Lighttpd builds just fine on OS X but it does need some other libraries installed for certain functionality. Specifically, fastcgi and Perl Compatible Regular Expressions. These libraries install without issue as well.

First lets grab the fastcgi libraries:

curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar zxvf fcgi-2.4.0.tar.gz && cd fcgi-2.4.0
./configure
make
make install
cd ..

Now lets get the PCRE libraries:

curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-5.0.tar.gz
tar zxvf pcre-5.0.tar.gz && cd pcre-5.0
./configure
make
make install
cd ..

Now for lighttpd:

curl -O http://www.lighttpd.net/download/lighttpd-1.4.12.tar.gz
tar zxvf lighttpd-1.4.12.tar.gz && cd lighttpd-1.4.12
./configure --prefix=/Library/limp/lighttpd

Hopefully, you’ll see something like this after the configure script is done.

Plugins:

mod_rewrite     : enabled
mod_redirect    : enabled
mod_ssi         : enabled
mod_cgi         : enabled
mod_fastcgi     : enabled
mod_proxy       : enabled
mod_evhost      : enabled
mod_simple_vhost: enabled
mod_mysql_vhost : enabled
mod_access      : enabled
mod_alias       : enabled
mod_setenv      : enabled
mod_usertrack   : enabled
mod_compress    : enabled
mod_auth        : enabled
mod_status      : enabled
mod_accesslog   : enabled
mod_rrdtool     : enabled
mod_secdownload : enabled
mod_expire      : enabled

If you don’t see mod_fastcgi in there, something went south.

make
make install
cp doc/lighttpd.conf /Library/limp/lighttpd/lighttpd.conf

MySQL

For MySQL, I just used the standard binary installation provided by MySQL. Therefore, we’ll need to also configure and install the libraries after installing the binary package. (Thanks to Richard Valk for his article series for this bit).

First, download and install MySQL (version 5.0.24a as of this writing) Standard binary for OS X for your platform (PPC or Intel). Once you’ve installed the package, install the StartupItem and make your life simple-er (??). After everything is setup, you should modify your

PATH

environment variable again in your ~/.bashrc file.

export PATH="/usr/local/bin:/usr/local/mysql/bin:"${PATH}

Now we have to rebuild mysql and install the shared libraries we need for building PHP. Make sure you’re still in your ‘src’ directory.

curl -O http://www.stathy.com/mysql/Downloads/MySQL-5.0/mysql-5.0.24.tar.gz
tar zxvf mysql-5.0.24.tar.gz && cd mysql-5.0.24
./configure --prefix=/usr/local/mysql \
 --localstatedir=/usr/local/mysql/data \
 --libexecdir=/usr/local/mysql/bin \
 --libdir=/usr/local/mysql/lib \
 --with-server-suffix=-standard \
 --enable-thread-safe-client \
 --enable-local-infile \
 --enable-shared \
 --with-zlib-dir=bundled \
 --with-big-tables \
 --with-readline \
 --with-archive-storage-engine \
 --with-innodb \
 --without-docs \
 --without-bench \
make
make install
cd ..

Compiling PHP on OS X (with the mysqli extension)

This was fairly straight forward with the exception of GD. It took me a while to figure this out, but I was using

--with-gd=/sw

and this was confusing the compiler for some reason. When I changed it to just

--with-gd

everything compiled fine… including the mysqli extension. Here’s what my config looks like:

./configure \
 --prefix=/Lbrary/limp/php \
 --enable-fastcgi \
 --enable-force-cgi-redirect \
 --enable-mbstring \
 --with-xml \
 --with-zlib \
 --with-curl \
 --with-mysql=/usr/local/mysql \
 --with-pdo-mysql=/usr/local/mysql \
 --with-mysqli=/usr/local/mysql/bin/mysql_config \
 --with-pdo-sqlite \
 --with-sqlite \
 --with-mcrypt=/sw \
 --with-gd \
 --with-jpeg-dir=/sw \
 --with-png-dir=/sw \
 --with-zlib-dir=/sw \
 --with-xpm-dir=/usr \
 --enable-exif \
 --enable-ftp \
 --enable-libxml \
 --enable-soap \
 --enable-sockets

make && make install
cp /Library/limp/php/bin/php /Library/limp/php/bin/php-cgi

I’m renaming the php binary to php-cgi because, well, that’s what it is. It’s the CGI version, not the CLI version. If you want to compile the CLI version, replace

 --enable-fastcgi \
 --enable-force-cgi-redirect \

with

 --enable-cli \

and run

make && make install

again. Only do this after you’ve renamed the php file to php-cgi. Otherwise, you’ll overwrite the cgi version with the cli version and it won’t work with fastcgi.

Building ExecWrap


I’ll have to finish this at a later date… sorry. This was originally posted to my old WordPress blog as a Draft but got imported into Typo via the wordpress2.rb script as a published article… so I left it.