The Dark Side Of A Developer

Sunday, June 19, 2005

Internet Explorer with tabbed browsing!

Search and browse smarter with MSN Search Toolbar, now with Windows Desktop Search:

Search and Browse Smarter Using MSN Search Toolbar with Windows Desktop Search

Now with Tabbed Browsing NEW! Browse smarter with tabs:
- Switch between Web sites within the same Internet Explorer window NEW! Find anything
- Search the Web any time, anywhere, and easily locate documents, e-mail messages, and more on your PC Shop faster
- Fill out online forms with one click Access MSN services
- Get one-click access to Hotmail, MSN Messenger, and MSN Spaces

...At Last, My Master!!!

Friday, June 10, 2005

Apple throws the switch, aligns with Intel

Apple throws the switch, aligns with Intel | CNET "CEO Steve Jobs announced Monday that Apple will gradually shift its Mac line to Intel-based chips over the next two years. The move confirms a timetable first reported by CNET
Jobs' announcement formed the centerpiece of a keynote speech to Mac programmers attending the company's annual Worldwide Developer Conference here. The conference, expected to draw some 3,800 attendees this year, is a traditional venue for Apple product launches. "

Saturday, June 04, 2005

Microsoft Office to get default XML

Microsoft Office to get default XML: "Microsoft has said that its next generation of Office software will be based around the more Internet friendly XML technology.
A spokesVole said that XML will be the default file format for documents created in Word, Excel and PowerPoint, which will make it easier for other programs to read documents."

Friday, June 03, 2005

Bye, Bye My!

The Raw Feed: "Not Your Computer Anymore -- Microsoft to Drop 'My' Nomeclature

Microsoft reportedly plans to drop the 'My' from what is now called 'My Computer' on Windows desktops. It will just say 'Computer.' The 'My' in 'My Music,' 'My Pictures,' and so on will also be dropped. The change will show up in the 'Longhorn' version of Windows."

Wednesday, June 01, 2005

The real story about how Anakin Skywalker became Darth Vader (Java Version)

Kirill Grouchnikov's Blog: The real story about how Anakin Skywalker became Darth Vader: "

Kirill Grouchnikov's Blog describe us the last Star Wars episode with the point of view of a Java Developer. It is a really funny history...

The real story about how Anakin Skywalker became Darth Vader:

Here it is - the JDK 5.0-compliant story behind 'Revenge of the Sith'. See it in all its glory, using the new java.util.concurrency package:

public class Princess implements ExecutorService {
public static final Princess PADME = new Princess();

// private member
private StarShip ship;

private Princess() {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
timer.scheduleAtFixedRate(task, new Date(), 1000);

public class JediKnight implements ExecutorService {
public static final JediKnight ANAKIN = new JediKnight(false);
public static final JediKnight OBI_WAN = new JediKnight(false);
public static final JediKnight YODA = new JediKnight(true);

private JediKnight(boolean isYoda) {
if (!isYoda) {
else {
Locale yodaLocale = Locale.EN;

public class Sith {
public static final Sith LORD = new Sith();

private Sith() {

public static main() {
// The following line has been commented out so as not
// to confuse fans who never did it

// Utils.initChildren(JediKnight.ANAKIN, Princess.PADME);

// Use JDK 5.0 concurrency package
Future> padmeFuture = Princess.PADME.submit(
new Callable>() {
public Set call() {
try {
int weeks = (int)(36+4.0*Math.random());
this = null;
finally() {
Child boy = new Child("Luke");
Child girl = new Child("Leia");
Set result = new HashSet();
return result;

if (JediKnight.ANAKIN.poll(padmeFuture) instanceof ThreadDeath) {

// use some marketing ideas
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("object.restore.afterGC"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.power.dark.*"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.power.*"));
Sith.LORD.promise(JediKnight.ANAKIN, new RuntimePermission("force.*"));

JediKnight.ANAKIN.setInternalName("Darth Vader");

JediKnight.ANAKIN.promise(Princess.PADME, new RuntimePermission("*"));


// Use JDK 5.0 concurrency package
Future anakinFuture =
new Callable() {
public RuntimePermission call() {
try {
Class princessClass = Princess.getClass();
Field shipField = princessClass.getDeclaredField("ship");
// will never throw SecurityException on Jedi Knight
JediKnight.this.add(new RuntimePermission("object.ship.board.*"));
return (StarShip)shipField.get(Princess.PADME);
catch (SecurityException se) {
// never supposed to happen to Jedi Knight
System.out.println("Internal error. Contact George Lucas.");

StarShip padmeShip =;



// note - absolutely no need for GC, Anakin will be collected automatically.

ReferenceQueue sithWatchList = new ReferenceQueue();
PhantomReference anakinRef = sithWatchList.remove();
JediKnight anakinPhantom = anakinRef.get();

Sith DARTH_VADER = Sith.LORD.assemble(anakinPhantom, LimbFactory.getSpareInstances());
MouthPiece newMouthPiece = MouthPieceFactory.getInstance();
// no need to check that it works - guaranteed to work with no noise
else {
// TODO - create alternative scenario for Sith revenge