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:
- 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.
- Problem: When you engage a pull down and scroll over to the item next to it, it isn't activated.
I apparently need to slow down (big surprise)
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.
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);
});
});
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.
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:
Javasript/CSS URLs:http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
Javascript callback:
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/
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/
