Why I love Gmail

I manage 14 different email addresses through one single Gmail account. Any idea how many spam emails I get to those addresses in a 30-day period?

Read more »

Topics: ,

SimpleModal v1.1 Released

There are three new options and the handling of data has been revamped. For more details, including documentation, demos, tests and downloads, visit the project page.

I'm finishing up a WordPress plugin based on SimpleModal, which should be ready soon. The Contact link above is powered by the new WordPress plugin.


jQuery bug – Ajax ‘no-cache’ parameter

In jQuery 1.2.1, when using the $.ajax function with cache: false, jQuery appends a parameter with the current timestamp to the URL. This parameter makes the URL unique and therefore prevents subsequent request from being retrieved from the browser cache.

However, the code that adds this 'no-cache' parameter does not check to see if it already exists and so under certain circumstances you can end up with URL's that look like:


It certainly makes the URL unique :)

I opened a ticket and submitted a patch, which was quickly optimized by a jQuery developer, davidserduke.

It's nice to see a project with responsive, helpful developers.

Topics: ,

Comparison of JavaScript compression methods

While creating the build system for our Java web application, I set out to do some benchmarking on some of the different JavaScript compression methods. When our project builds, I configured our Ant build script to create three different version of our JavaScript files; full source, minified (comments and whitespace removed), and packed (compressed).

I also configured Tomcat to use gzip compression and then ran six different test, the three version of our JavaScript files without gzip compression and the three versions with gzip compression.

I measured the load time and size using FireBug from within Firefox and recorded the following results:

Full Source Minified Packed
Without GZIP 167 KB | 329ms 95 KB | 281ms 70 KB | 313ms
With GZIP 67 KB | 297ms 48 KB | 219ms 47 KB | 312ms

Although my "tests" are very informal, I think that it is clear that the minified version with GZIP server compression offers the best results. It is only slightly larger than the packed version in size, but it loads almost 30% faster (due to the overhead of decompressing the packed version).

Topics: ,

Struts 2 bug – s:submit tag type=button rendering

In Struts 2.0.11, the s:submit tag with type=button does not render properly.

While working on a project using Struts 2, I was attempting to create a HTML button that looked something like:

<button type="button" class="button positive save">
    <img src="/images/tick.png" alt="Save"> Save

I followed the Struts 2 Tag Reference for the submit tag and tried the following:

<s:submit type="button" cssClass="button positive save">
    <img src="/images/tick.png" alt="Save"> Save

Instead of rendering like my example above, it looks like:

<img src="/images/tick.png" alt="Save"> Save
<button type="submit" id="test_0" value="Submit" class="button positive save">Submit</button>

Not exactly what I had in mind... ;)

Read more »

Topics: , ,

Conditional page/post navigation links in WordPress (redux)

After more helpful input, I've decided to update my original solution.

Instead of overriding four WordPress functions and adding two new ones in my functions.php file, I have slimmed it down to just one:

 * If more than one page exists, return TRUE.
function show_posts_nav() {
	global $wp_query;
	return ($wp_query->max_num_pages > 1);

This function will tell me if there is more than one page...and if there is, I will show the posts navigation (next_posts_link and previous_posts_link). I updated my WordPress (index.php, archive.php and search.php) files with:

<?php if (show_posts_nav()) : ?>
<div class='navigation'>
	<span class='older'><?php next_posts_link('&laquo; Older Entries'); ?></span>
	<span class='newer'><?php previous_posts_link('Newer Entries &raquo;'); ?></span>
<?php endif; ?>

As for the single post next/previous links, I decided to remove the check because I'll always have more than one entry.

Much cleaner and less code ;)


Conditional page/post navigation links in WordPress

Update: This post has been replaced with an updated version.

While creating a new theme for this site, I added some CSS styling around the page/post navigation links.

For example, in my index.php page, I have the following HTML/WordPress code:

<div class='navigation'>
  <span class='older'><?php next_posts_link('&laquo; Older Entries') ?></span>
  <span class='newer'><?php previous_posts_link('Newer Entries &raquo;') ?></span>

And the following CSS code:

.navigation {font-size:.7em; background:#353535; height:16px; margin:0 -16px 8px -16px; padding:8px 6px 0px;}
.navigation span {margin-top:-4px;}
.navigation .older {float:left;}
.navigation .newer {float:right;}

Everything looked great, until I brought up a page that did not have a previous or next link. The styled navigation div was still there, but there was nothing in it. So, I set out to conditionally display the navigation div if either a previous or next link existed.

Read more »


New site design

I finally got around to updating the theme for this site. It was quite an adventure learning about WordPress Themes and its API. The more I use WordPress, the more I like it!

Thanks to my brother-in-law, Max, for helpful tips on my new logo and also to Michael Heilemann for his default WordPress theme, which I used as a reference.

As time allows, I'll be adding content to the about, resume, projects and contact pages.

If you have any comments or criticism ( hopefully constructive ;) ) on the new site design, I'd like to hear them...

Eric Martin