In the past 24 hours we've been dumped on with probably 14" of snow here at the house. We've been in a Blizzard Warning for the past 18 hours or so (and it's to continue for another 6 hours.) This is the first Blizzard in this area since 1978. While this amount of snow fall is a drop in the hat to what some places are used to, it's a huge snowfall for what this area is used to seeing in a 24 hour period of time.
I love the snow, so I'm really enjoying it. We've got a nice brand new huge 6' x 6' window in our front room, so I'm just enjoying watching the snowfall. I've taken our oldest dog, Maddie, out a couple of times to play in the snow. Nikki (the one that just had surgery) really wants to play when I take her out to go potty, but the snow is just too deep to let her really trek around in. Anyway, Jenn got the camera out and we took these pictures about an hour ago.
Smashing Magazine recently posted a an article on 35 (Really) Incredible Free Icon Sets. There's a number of sets I haven't seen. The one that immediately caught my eye was pinvoke's PI Diagona Pack.
It comes with 200 unique icons in two different sizes (10x10 and 16x16.) It has a similar look to the famfamfam set of icons called Silk. Here's what the icons look like:
It seems the pinvoke site's getting a lot of downloads at the moment, but I was able to find a mirror of the pi_diagona_pack.zip file.
Almost 40 years later and Abbey Road is still one of the best albums of all time. My father was a huge Beatles fan and many of my earliest memories are of sitting in my car seat and singing Beatles tunes with my parents. I've been heard Abbey Road countless times, yet it still gives me the same thrill every time I listen to the record. I might go months between listens, then I'll pull it out again and amazed at the greatness of the album all over again.
This is an album that should absolutely be on everyone's mp3 player. If you don't own Abbey Road go buy it right now; if it's not on your mp3 player, go load it.
For your listening pleasure, here's I Want You:
For extra bonus coverage, here's a rehearsal of I Want You with Billy Preston and the guys going through a run through:
If you can find it, Eric Gales does a great cover of I Want You on his Picture of a Thousand Faces album.
Simon Whatley had a good post yesterday on operating precedence in ColdFusion. It's important to understand the priority in which statements are evaluated, but what I think is more important is to explicitly define the precedence by using parenthesis. This makes the code much easier to read and much less likely to be misinterpreted. Take the equation:
What is the value of x? The correct value is 23, since the multiplication operator takes precedence over the addition operator. However, it's very easy to misread the equation as 3 + 4 = 7, 7 * 5 = 35. Here's the equivalent line of code, but with the precedence of the operations explicitly defined:
This is much clearer to the reader on how the equation should be executed. Writing code that easy to maintain should always be one of your top priorities and using parenthesis around your statements is one great way to help the readability of your code.
From c|net News.com: Gary Gygax, 1938-2008: Rest in peace, Dungeon Master
Gary Gygax, co-creator of Dungeons & Dragons and one of the fathers of tabletop role-playing games, died on Tuesday at the age of 69. He had suffered from heart problems.
The news was first announced on the message board of Troll Lord Games, the publisher of Gygax's most recent works. It has since been directly confirmed by the company, which will post an announcement on its Web site later Tuesday.
Gygax was best known for helping create Dungeons & Dragons and Advanced Dungeons & Dragons. He also pioneered tabletop role-playing games. The first D&D rulebooks were released in 1974 by TSR, and since then have produced three full-fledged sequels, numerous revisions and updates, and dozens upon dozens of additional rulebooks, settings, and campaigns. While Gygax hadn't had much direct involvement with D&D for many years, he developed and contributed to many role-playing games, including Troll Lord Games' Gary Gygax's Fantasy Worlds.
I've updated the jQuery Calculation Plug-in with a few changes:
The onParseError/onParseClear methods are useful when you need to flag the element that threw the error—such as changing the background color of the element to highlight it doesn't contain a valid number.
Make sure to check out the example of the avg() method on the documentation page. If you input an alpha string into any of the fields, the field will turn red to indicate the parsing engine could not find a number in the field.
I also added support for negative numbers—which was an oversight on my part.
A common task you might want to accomplish in jQuery is to match elements that are paired together. For example, you have a page full of authors and only want to show their biographies if they click on a link.
Your first thought might be to do something like the following:
The problem with this approach is that when you click on the <dt /> tag it will open all of the <dd /> tags. This is because the selector being used specifies all of the <dd /> tags and doesn't do anything to filter the tags to the specific matching tag.
I found this clip on VanHalen.com. It's basically an audio clip of what it might sound like if David Lee Roth tried out for American Idol.
Probably the biggest problem I've had with Microsoft Outlook over the last decade is with my Outlook Profile getting slightly corrupted, preventing me from closing open "archive" PST files. When you attempt to close the PST, you'll see the following message:
Error: The operation failed. An object could not be found.
This is actually caused by a Registry corruption to the Outlook profile that is in use. Microsoft recommends creating a new profile, but that makes you re-create all your E-mail Accounts and you lose your rules, autocomplete addresses, etc. You can back up your rules, but re-creating a profile is a bit of a pain if you have a complex Outlook configuration.
Today I ran into this problem again. I was migrating all my archived "Deleted Items" for 2007 to a new PST so I could permanently archive the file. After moving all the files, I wanted to compress my archived "Deleted Items" folder but couldn't because I was getting this error message.
Since I really didn't want to re-create my profile, I went out searching for a tool that might be able to clean up my profile for me. Fortunately after a few minutes of Googling, I came across CodeTwo PST Ghostbuster.
This program worked like a charm to clean up my profile. You'll want to use the "Backup" feature before you attempt deleting a PST—just to make sure you can restore things if something goes awry.
If I could make an improvement to the program, it would be for the list of PST files to delete to be a select box of attached PST files instead of having to type the name of the PST folder into the text box. However, the program worked as advertised and saved me lots of time since I didn't have to migrate to a new profile.
Yesterday my Dad and I celebrating our birthdays. I was born on my Dad's 25th birthday—which is something I've always enjoyed. It's pretty rare to share a birthday with a parent (although my Grandma and Great-Grandma on my mother's side shared a birthday,) but it's a bond between us that is something I'm glad we share.
Since winter is a slower time for my parents, my Mom and Dad drove to Columbus and my Mom made dinner at our house for my Dad and me. She always makes us Beef Stroganoff as it's our favorite meal. Ironically, neither of our wives care much for it but they make it for us because they know we love it.
Whenever we have a leap year, it always makes me think how close I was to being a leap year baby. If I would have been born 3.5 hours later, I would have actually been celebrating my birthday today. However, I was already almost 3 weeks late, so I'm pretty sure I was just waiting for my Dad's birthday.
By the way, I was an extremely cute baby:
I'm working on a dropdown menu based on the <ul /> tag. The menu can have an unlimited number of children menus and I decided the "suckerfish" method was a very effective method for achieving my menu structure.
One of the problems I ran into was trying to implement a drop shadow layer for the menus. While there are many ways to implement a drop shadow, I thought the most straight forward method was to use a shadow <div /> with the same dimensions of the menu it's shadowing. The problem I ran into is I couldn't properly get the drop shadow to appear below it's anchored menu. It kept wanting to appear above the menu.
In my code I was explicitly setting the <ul /> tag being displayed to have a z-index one higher than the drop shadow, but the drop shadow always remained on top. After tracking the problem for a bit, I realized was that the because of the nested nature of the <ul /> tags, even though I was explicitly defining a z-index, the <ul /> was inheriting from the parent.
The fix was just to move the shadow <div /> as a sibling to the <ul /> it's shadowing. Once I did this I was able to correctly place the shadow <div /> underneath the <ul /> tag it was shadowing.
We recently bought a Self-Signing Cert from Comodo through Tucow's Authors site. Through Tucows I was able to get a 3 year cert for $195—which is cheaper than a 1 year cert from either Thawte or Verisign.
I was expecting them to send me a cert via e-mail, but instead they install the certificate into the browser in which you purchased the certificate. From this point on Comodo doesn't offer any instructions on how to use the cert, so I had to do some research.
First, I'd recommend buying your cert using Firefox. If the cert gets installed into Internet Explorer, you need to jump through a bunch of hoops to generate the p12 file from the pvk format. Once you have your cert stored as a PKCS12 file, the steps for signing your Java Applet are pretty straightforward.
The instructions below show you how to sign an applet provided your personal cert has installed into Firefox. If you already have your p12 file, the you can skip to step 11(the directions use the filename of self-sign.p12 for the exported key.)
You should now see some output that looks like:
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 1 entry
[Alias], Jan 1, 2008, keyEntry,
Certificate fingerprint (MD5): hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh
The [Alias] is a string that might be look like a UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx) or it could just be string of various text. The alias will be the part of the text up to the first comma before the date.
I highly recommend creating an Ant build.xml script for compiling and signing your JAR. The biggest benefit is once you get it set up, there's nothing manual you need to do.
Well finally got the infection under control—at least for the most part. Her left hind leg, which was the one that was really swollen, got back to normal size by Thursday of last week. He right hind leg is still a little irritated, but they were able to take her staples out yesterday. The funny thing is the leg that looked so bad last week, looks really good.
The incision has healed up nicely and you barely notice it. The right leg is still a little red and swollen. Since she still has a bit of an infection and the leg is tender, they want us to keep the eCollar on when we can't keep an eye on her—just to prevent excessive licking. We're able to keep the eCollar off as long as we can keep an eye out to make sure she doesn't keep licking at the wound.
She still handling being in her kennel well. She hasn't really complained, other than the occasion crying around 6am when she needs her potty break.
The one thing that has Jenn and I little concerned is that when we got back to the house yesterday (after getting the staples out) she slipped a bit in the driveway. The Vet told us we didn't have to use her sling anymore, but our intention was to keep using it since it's been so icy outside. Unfortunately, right after I lifted her out of the SUV, but before I could get the sling on her, she slipped a bit in the driveway. She was walking a bit tenderly yesterday, so we're monitoring it closely to make sure she didn't injure it. I think it's just that the infection is still a little tender after getting the staples removed, but we'll know more today I think.
She's also definitely getting her strength back. She's really started to drag us around the backyard. Part of the reason I want to keep using the sling is it helps me control her a little bit. If she's putting to much stress on her back legs, I can lift her rear up a bit and that gets her to stop.
Hopefully by the end of week 3, the infection will be completely gone.
[UPDATED: Thursday, February 28, 2008 at 8:02:17 AM]
I thought maybe this was a tip worth blogging. I like to use labels in my debug information as it helps me to quickly identify the debug statement that generated the output. Appending a label string to a simple value is easy enough in JavaScript, as it'll automatically be converted to a string. However, this doesn't work for complex values. You can place the label on a separate line, but I like to try to keep things to one line whenever possible. The way I do this is to use an array to output my label first and then the value:
This gives you the benefit of generating a label and a value all on one line. I find the syntax very easy to read in the Firebug console and it keeps everything on one line—just the way I want it. The output will look like:
Hopefully someone else will find this tip useful.
UPDATE:For those of you who want a Firebug to output a hyperlink to the line that invoked the message, you might want to use console.debug() instead.
Over the weekend I made a few changes to my Field & Calculations plug-ins. One big change is I moved the plug-ins to the jQuery SVN repository. This should help people to find the plug-ins and will provide an easy way to stay on top of the changes.
The biggest overall change to the Field Plug-in is the addition of callbacks to the a few of the methods, especially the createCheckboxRange. This allows you to do something like change the background color of the checkbox's row. I also added a default setting (checkboxRangeKeyBinding) which allows you to configure which keyboard event triggers the range selection. This still defaults to the [SHIFT] key, but I can see where you might want to change this binding in certain situations.
The changes I made to the Calculation Plug-in should make it even easier to implement. I altered the sum() and avg() methods so that you can now create bindings to easily update the page. Previously, the methods only performed the calculations, so you had to write your own binding calls. Now if you want to update the element #totalSum whenever the user changes a value in a field beginning with the keyword "sum", you can do: $("input[@name^=sum]").sum("keyup", "#totalSum");
Here's a list of the changes that I've made in the past few days: