To deliver software which is cheap, gutsy, powerful and simple.
Posted by cgp

I've worked in Eclipse for a long time. It's a terrible IDE. I'm just going to make a short list of everything that's wrong with it, and because I'm hoping it will reach somebody who knows how to fix these things, I'll also list how to fix it:

  1. Problem: The icons in the toolbar are useless, and difficult to decipher. The tooltips that come up aren't very helpful.
    • Fix: Longer descriptions in the tool tips and use better icons.
  2. Problem: When you engage a pull down and scroll over to the item next to it, it isn't activated.

Training Pace

22 Oct 2009
Posted by cgp

I apparently need to slow down (big surprise)

  1. Calculate Your Training Paces
  2. Calculate Training Pace

Google Wave Review

14 Oct 2009
Posted by cgp

I haven't really had time to look deeply enough at it just yet, but I'll post a review of Google Wave in a little bit.

Posted by cgp

I wrote a heart rate calculator. This has been done, many, many times.

function HeartRateCalculator(resting, max) {
this.resting = resting;
this.max = max;
this.reserve = this.max - this.resting;
this.lower = (this.reserve * 0.6) + this.resting;
this.upper = (this.reserve * 0.8) + this.resting;
this.target = (this.lower + this.upper) / 2;
}


It basically looks like:
function HeartRateCalculator(resting, max) {
this.resting = resting;
this.max = max;
this.reserve = this.max - this.resting;
this.lower = (this.reserve * 0.6) + this.resting;
this.upper = (this.reserve * 0.8) + this.resting;
this.target = (this.lower + this.upper) / 2;
}


Resting:
Max: (You can calculate this here)

$(function() {
$('#calcTHR').click(function() {
var resting = parseInt($('#restingHR').val())
var max = parseInt($('#maxHR').val());
var heartRateCalculator = new HeartRateCalculator(resting, max);
var heartRateHtml = "Target Heart Rate = " + heartRateCalculator.target;
$('#results').html(heartRateHtml);
});
});

Maven Files

28 May 2009
Posted by cgp
How easy would it be to create a maven POM editor. I know there's one in Eclipse, but Eclipse is slow, and frankly, the editor doesn't give very good help. Alright, lets learn about Maven and see how this turns out.
Posted by cgp

For stackoverflow, I was curious about the efficiency of the top reputable users. Turns out there is quite a range. (about 17-35). So I wrote a little bookmarklet:

Note, that this "calculator" is thrown off by things like if you offered a bounty on a question. (I'm at 17.5 something, but would have been at 19.5 something if I hadn't offered 350 bounty on a question - actually, my efficiency is still pretty low, and even lower if you take out the 200 or so other points I got via bounty :) )

I'm a hacker (one step above n00b, which might be a little harsh). I figure that the correct way to do this would have been with some sort of percentages based on a logarithmic scale. Ideally it would look like:

Top 1% - Guru
Top 10% - Wizardly
Top 25% - Wise
Top 50% - Professional
Top 75% - Average
Top 95% - Hacker!
Bottom 5% - N00b.

(for those who have answered > 15 questions)

But based on the fact I can't calculate this across all accounts to get the percentiles, I'll just have to guess.

How Efficient Are You?

Bookmarklet Creator

17 Apr 2009
Posted by cgp

This bookmarklet creator takes care of creating a bookmarklet.

Features:

  • Usage of url parameters when loading javascript to prevent caching of the target javascript URLs.
  • Loads multiple javascript, css, or even HTML (appends automatically) files.
  • Tracks what has been loaded previously and avoids reloading that was has been already loaded.
  • In the absence of a callback function, always the last
  • Populate popular javascript AJAX libraries from the Google CDN with the click of a button.

Bookmarklet Title:
Bookmark Loader Location:

Download Bookmarklet Loader

Javasript/CSS URLs:http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
Javascript callback:

Your Bookmarklet Link

String.prototype.startsWith = function(str) {
return this.substring(0, str.length).toLowerCase() == str.toLowerCase();
}
String.prototype.endsWith = function(str) {
return (this.length-str.length)==this.toLowerCase().lastIndexOf(str.toLowerCase());
}

function updateLink() {
var scripts = jQuery('#jsSrc').val().replace(new RegExp('\n$', 'igm'), '').split('\n').join("','");
var src;
var loaderScript = jQuery('#bookmark_loader').val();
var callbackScript = jQuery('#callbackFunc').val().replace(new RegExp('\n$', 'igm'), '');
if (scripts.length == 0) {
src = "javascript:void(function(){"+callbackScript+"}())";
} else {
if (callbackScript.length > 0)
callbackScript = "callback = function() {"+callbackScript+"};";
src = "javascript:void(function(){"+callbackScript+"urls=['"+scripts+"'];var s=document.createElement('script');s.src='"+loaderScript+"?x='+new%20Date().getTime();document.getElementsByTagName('head')[0].appendChild(s);}())";
}

jQuery('#scriptlen').html((502-src.length)+" characters left");
//jQuery("#src").val(src);
jQuery("#bookmark")[0].href = src;
jQuery("#bookmark").html(jQuery('#linkText').val());

}
$(function() {
jQuery("#linkText").keyup(updateLink);
jQuery("#jsSrc").keyup(updateLink);
jQuery("#callbackFunc").keyup(updateLink);

updateLink();
});

References:

  • http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
  • http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/

Random links:

09 Apr 2009
Posted by cgp

SEO:
http://www.gabrielweinberg.com/blog/2009/04/search-engine-optimization-seo-tips.html
Tables aren't the only evil:
http://www.smashingmagazine.com/2009/04/08/from-table-hell-to-div-hell/