24 February, 2008

Best Firefox Extensions

 

Best Firefox Extensions

Stumble Upon Toolbar

13 February, 2008

Dear Abby

The following are a few letters sent to Abigail Van Burin (Dear Abby) that she herself admitted she was at a loss to answer:

Dear Abby, What can I do about all the sex, nudity, language and violence on my VCR?

Dear Abby, Our son writes that he is taking Judo. Why would a boy who was raised in a good Christian home turn against his own?

Dear Abby, I joined the Navy to see the world. I've seen it. Now, how do I get out?

Dear Abby, My forty-year-old son has been paying a psychiatrist $50 an hour every week for two-and-a-half years. He must be crazy.

Stumble Upon Toolbar

GJay

GJay (Gtk+ DJ) generates playlists across a collection of music (ogg, mp3, wav) such that each song sounds good following the previous song. It is ideal for home users who want a non-random way to wander large collections or for DJs planning a set list. You can generate playlists from within the application, or run GJay as a standalone command-line utility.

Playlist matches are based on:

  • Song characteristics that don't change
    • Frequency fingerprint
    • Beats per minute
    • Location in file system
  • Song attributes that you set
    • Rating
    • Color (whatever that means to you)

Currently, GJay only works under Linux. There are plans afoot to get it working on MacOS. GJay is released under the GPL.

Like it? Get it.

Stumble Upon Toolbar

Audacity - The Free, Cross-Platform Sound Editor

Audacity is free, open source software for recording and editing sounds. It is available for Mac OS X, Microsoft Windows, GNU/Linux, and other operating systems. Learn more about Audacity... Also check our Wiki and Forum for more information.

The latest release of Audacity is 1.3.4 (beta). Because it is a work in progress and does not yet come with complete documentation or translations into foreign languages, it is recommended for more advanced users. See New Features in 1.3 for more information about the 1.3.x beta series.

For all users, Audacity 1.2.6 is a stable release, complete and fully documented. You can have both Audacity 1.2.6 and 1.3.3 installed simultaneously.

You can use Audacity to:

  • Record live audio.
  • Convert tapes and records into digital recordings or CDs.
  • Edit Ogg Vorbis, MP3, WAV or AIFF sound files.
  • Cut, copy, splice or mix sounds together.
  • Change the speed or pitch of a recording.
  • And more! See the complete list of features.

Stumble Upon Toolbar

12 February, 2008

Free Online Computer Science and Programming Books, Textbooks, and Lecture Notes | FreeTechBooks.com

No catch. Absolutely free

Free Online Computer Science and Programming Books, Textbooks, and Lecture Notes | FreeTechBooks.com

Stumble Upon Toolbar

09 February, 2008

Discoveries and Inventions by Men And Women

Men discovered COLOURS and invented PAINT, Women discovered PAINT and invented MAKEUP.

Men discovered the WORD and invented CONVERSATION,
Women discovered CONVERSATION and invented GOSSIP.

Men discovered GAMBLING and invented CARDS,
Women discovered CARDS and invented WITCHERY.

Men discovered AGRICULTURE and invented FOOD,
Women discovered FOOD and invented DIET.

Men discovered FRIENDSHIP and invented LOVE,
Women discovered LOVE and invented MARRIAGE.

Men discovered TRADING and invented MONEY,
Women discovered MONEY and invented SHOPPING.

Thereafter Men have discovered and invented a lot of things...
While Women STUCK to shopping.

Stumble Upon Toolbar

Software Engineering Proverbs

A clever person solves a problem.
A wise person avoids it.

-- Einstein


André Bensoussan once explained to me the difference between a programmer and a designer:

"If you make a general statement, a programmer says, 'Yes, but...'
while a designer says, 'Yes, and...'"


No matter what the problem is,
it's always a people problem.

Jerry Weinberg


Wexelblat's Scheduling Algorithm:

Choose two:

  • Good
  • Fast
  • Cheap

Craziness is doing the same thing and expecting a different result.

Tom DeMarco, rephrasing Einstein, who said

Insanity: doing the same thing over and over again and expecting different results.


"There's no time to stop for gas, we're already late"

-- Karin Donker


Deming's 14 points

  1. Create constancy of purpose.
  2. Adopt the new philosophy.
  3. Cease dependence on mass inspection to achieve quality.
  4. Minimize total cost, not initial price of supplies.
  5. Improve constantly the system of production and service.
  6. Institute training on the job.
  7. Institute leadership.
  8. Drive out fear.
  9. Break down barriers between departments.
  10. Eliminate slogans, exhortations, and numerical targets.
  11. Eliminate work standards (quotas) and management by objective.
  12. Remove barriers that rob workers, engineers, and managers of their right to pride of workmanship.
  13. Institute a vigorous program of education and self-improvement.
  14. Put everyone in the company to work to accomplish the transformation.

We know about as much about software quality problems as they knew about the Black Plague in the 1600s. We've seen the victims' agonies and helped burn the corpses. We don't know what causes it; we don't really know if there is only one disease. We just suffer -- and keep pouring our sewage into our water supply.

-- Tom Van Vleck


The Troops Know

  • The schedule doesn't have enough time for maintenance in it.
  • A lot of bugs get past the tests.
  • Most old code can't be maintained.

To go faster, slow down. Everybody who knows about orbital mechanics understands that.

-- Scott Cherf


Everybody Knows:

  • Discipline is the best tool.
  • Design first, then code.
  • Don't patch bugs out, rewrite them out.
  • Don't test bugs out, design them out.

Everybody Knows:

  • If you don't understand it, you can't program it.
  • If you didn't measure it, you didn't do it.

Everybody Knows:

If something is worth doing once, it's worth building a tool to do it.


Your problem is another's solution;
Your solution will be his problem.


Everybody Knows:

  • If you've found 3 bugs in a program, best estimate is that there are 3 more.
  • 60% of product cost comes after initial shipment.

The significant problems we face cannot be solved by the same level of thinking that created them.

-- Albert Einstein


On the radio the other night, Jimmy Connors said the best advice he ever got was from Bobby Riggs:

  • do it
  • do it right
  • do it right now

It is not enough to do your best: you must know what to do, and THEN do your best.

-- W. Edwards Deming


A leader is best when people barely know that he exists.
Less good when they obey and acclaim him.
Worse when they fear and despise him.
Fail to honor people, and they fail to honor you.
But of a good leader, when his work is done, his aim fulfilled,
they will say, "We did this ourselves."

-- Lao-Tzu


You must be the change
You wish to see in the world

-- Gandhi


Experiment escorts us last,
His pungent company
Will not allow an axiom
An opportunity.

-- Emily Dickinson


when the cart stops
do you whip the cart
or whip the ox?


Q: How many QA testers does it take to change a lightbulb?
A: QA testers don't change anything. They just report that it's dark.

Kerry Zallar


Q: How many software engineers does it take to change a lightbulb?
A: Just one. But the house falls down.

Andrew Siwko


One test is worth a thousand opinions.


"If you didn't write it down, it didn't happen."

This saying is popular among scientists (doing experiments), but I believe it applies to software testing, particularly for real-time systems.

--Larry Zana


We reject kings, presidents, and voting.
We believe in rough consensus and running code.

--Dave Clark (1992)


I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don't, and the spirit of the passionate intellect that has tied them together, or tried. That's why programming---or buying software---on the basis of "lists of features" is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess.

-- Ted Nelson


Software is Too Important to be Left to Programmers, by Meilir Page-Jones.


"If you think good architecture is expensive, try bad architecture."

-- Brian Foote and Joseph Yoder


Abraham Lincoln reportedly said that, given eight hours to chop down a tree, he'd spend six sharpening his axe.

-- TidBITS 654, quoted by Derek K. Miller, via Art Evans


... while we all know that unmastered complexity is at the root of the misery, we do not know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy.

-- E. W. Dijkstra, Communications of the ACM, Mar 2001, Vol. 44, No. 3


You can only find truth with logic if you have already found truth without it.

-- Gilbert Keith Chesterton (1874-1936) " The Man who was Orthodox", via Paul Black

Stumble Upon Toolbar

03 February, 2008

Popup blocker tester

As you might know, all modern web browsers contain a built-in popup blocker. But the real question is "Does it really work?". This is where our friends at PopupTest.com come in handy.

This web site enables you to test your browser against various techniques of popup spamming. And if your browser fails in any of the tests you can always download and install "FireFox", the free web browser that passed all tests without using any extra plugins (extensions).

Anyway, PopupTest.com doesn't only test your browser against bad popups, it also checks for the good kind of popups, the kind that you want to appear. And also a test agianst media flooding websites.

It's really a great free service. That helps you determine which browser is better in a single battle.

Stumble Upon Toolbar

01 February, 2008

The Goodtimes Email Virus

Goodtimes will re-write your hard drive. Not only that, but it will scramble any disks that are even close to your computer. It will recalibrate your refrigerator's coolness setting so all your ice cream goes melty. It will demagnetize the strips on all your credit cards, screw up the tracking on your television and use subspace field harmonics to scratch any CD's you try to play.

It will give your ex-girlfriend your new phone number. It will mix Kool-aid into your fishtank. It will drink all your beer and leave its socks out on the coffee table when there's company coming over. It will put a dead kitten in the back pocket of your good suit pants and hide your car keys when you are late for work.

Goodtimes will make you fall in love with a penguin. It will give you nightmares about circus midgets. It will pour sugar in your gas tank and shave off both your eyebrows while dating your current girlfriend behind your back and billing the dinner and hotel room to your Visa card.

It will seduce your grandmother. It does not matter if she is dead. Such is the power of Goodtimes; it reaches out beyond the grave to sully those things we hold most dear.

It moves your car randomly around parking lots so you can't find it. It will kick your dog. It will leave libidinous messages on your boss's voice mail in your voice! It is insidious and subtle. It is dangerous and terrifying to behold. It is also a rather interesting shade of mauve.

Goodtimes will give you Dutch Elm disease. It will leave the toilet seat up. It will make a batch of Methamphetamine in your bathtub and then leave bacon cooking on the stove while it goes out to chase gradeschoolers with your new snowblower.

That is all, you've been warned.

Stumble Upon Toolbar

The Evolution of a Programmer

High School/Jr.High

  10 PRINT "HELLO WORLD"
20 END

First year in College


  program Hello(input, output)
begin
writeln('Hello World')
end.

Senior year in College


  (defun hello
(print
(cons 'Hello (list 'World))))

New professional


  #include <stdio.h>
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;

for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}

Seasoned professional


  #include <iostream.h>
#include <string.h>

class string
{
private:
int size;
char *ptr;

string() : size(0), ptr(new char[1]) { ptr[0] = 0; }

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = "Hello World";
cout << str << endl;

return(0);
}

Master Programmer


  [
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");

// bring in my interfaces
#include "pshlo.idl"

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader(<windows.h>);
importheader(<ole2.h>);
importheader(<except.hxx>);
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");

// needed typelibs
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};


#include "ipfix.hxx"

extern HANDLE hEvent;

class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};


#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws
", pwszString);
return(ResultFromScode(S_OK));
}


CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include <windows.h>
#include <ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");

printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {


hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}

Apprentice Hacker


  #!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can't close $arg: $!\n";
}
} else {
print ($msg);
}
1;

Experienced Hacker


  #include <stdio.h>
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

Seasoned Hacker


  % cc -o a.out ~/src/misc/hw/hw.c
% a.out

Guru Hacker


  % echo "Hello, world."

New Manager


  10 PRINT "HELLO WORLD"
20 END

Middle Manager


  mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world."?
I need it by tomorrow.
^D

Senior Manager


  % zmail jim
I need a "Hello, world." program by this afternoon.

Chief Executive


  % letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

Anonymous

Stumble Upon Toolbar