We are having my long expected vacations in my old home, Mendoza. Our families are very happy of having our son Martin among them. Off course, it feels very weird to be here on vacation for the first time.
Everything seems to be right in the same place as a year before. Only my parents seem to have loose some weitght.
I am happy that everything is ok, but at the same time it feels so good to have gone to other country to have a fresh start. It feels so good to still have new oportunities every day!
Life, software, politics, arts, and naive future prediction (This blog is in suspended animation)
Saturday, December 27, 2003
Monday, December 15, 2003
Salam Pax Dixit
Where is Raed ?: "I want a fully functioning Saddam who will sit on a chair in front of a TV camera for 10 hours everyday and tells us what exactly happened the last 30 years. I do not care about the fair trial thing Amnesty Int. is worried about and I don'r really care much about the fact that the Iraqi judges might not be fullt qualified, we all know he should rot in hell. but what I do care about is that he gets a public trial because I want to hear all the untold stories "
Friday, December 12, 2003
I want my MCSD
I think I deserve to have a really big certification so I have decided I will dedicate some hours a day to prepare for the exams. I would prefer to have instructor lead classes, but right now that would mean too much money, so I am buying the complete hardcover MCSD .NET Self Paced Training Kit from Microsoft Press through BooksAMillion, and some more complementary titles. I think it will worth a lot to me. I need a change in my career for good. I am not very proud of what I am currently doing, and I am not very proud of the time it is taking to me to get in .NET at full speed. The MCSD is supposed to be my passport to a employability and to a new state of mind... I have to change my blog description again...
Right now I have doubts about my ability to keep on the right path to Certification without the help of an instructor. What should I do?
Any advice would be extremely appreciated.
Right now I have doubts about my ability to keep on the right path to Certification without the help of an instructor. What should I do?
Any advice would be extremely appreciated.
I changed blog description again
Another Microsoft Dittohead Blogger didn't make any sense anymore to me. Nothing makes any sense so... Now I am The Bored Blogger.
Thursday, December 11, 2003
Odette wasn't that bad
Unfortunatelly some people had an ugly time because of the storm, but it wasn't as bad as I expected. We spend two days preparing for it and waiting for it, and it finally passed while we were sleeping on satuday night. We had many hours without electricity, but here in Santo Domingo that could have had nothing to do with the storm.
Saturday, December 06, 2003
Weather Underground: Tropical Storm Odette Intermediate Advisory Number 7a
Weather Underground: Tropical Weather: "Tropical Storm Odette
Statement as of 1:00 am EST on December 06, 2003
...Odette strengthening slightly as it moves northeastward...
...Heavy rain bands moving over Hispaniola and Puerto Rico...
a Tropical Storm Warning is in effect for the Dominican Republic
from Isla Saona westward and for Haiti.
A tropical storm watch remains in effect for the southeastern
Bahamas...and the Turks and Caicos Islands.
At 1 am EST...0600z...the center of Tropical Storm Odette was
located near latitude 15.6 north...longitude 72.5 west or about
145 miles...235 km...south-southwest of the Isla beata on the south
coast of the Dominican Republic.
Odette is moving toward the northeast near 10 mph...17 km/hr...and
this motion is expected to continue for the next 24 hours. This
motion could bring the center of Odette over Hispaniola on
Saturday.
Maximum sustained winds indicated by reconnaissance aircraft are now
near 60 mph... 95 km/hr...with higher gusts. Some additional
slight strengthening is possible before Odette nears Hispaniola.
Tropical storm force winds extend outward up to 145 miles...230 km
from the center. These winds could reach the south coast of
Hispaniola by early afternoon.
The estimated minimum central pressure is 995 mb...29.38 inches.
Rainfall accumulations of 8 to 12 inches...with higher amounts in
the mountains...can be expected near the path of Odette. These
rains could cause life-threatening flash floods and mud slides...
particularly in the mountains of Haiti. Rainbands associated with
Odette are already spreading across portions of Hispaniola and
Puerto Rico.
Repeating the 1 am EST position...15.7 N... 72.5 W. Movement
toward...northeast near 10 mph. Maximum sustained
winds... 60 mph. Minimum central pressure... 995 mb.
For storm information specific to your area...please monitor
products issued by your local weather office.
The next advisory will be issued by the National Hurricane Center
at 4 am EST.
Forecaster Stewart
Statement as of 1:00 am EST on December 06, 2003
...Odette strengthening slightly as it moves northeastward...
...Heavy rain bands moving over Hispaniola and Puerto Rico...
a Tropical Storm Warning is in effect for the Dominican Republic
from Isla Saona westward and for Haiti.
A tropical storm watch remains in effect for the southeastern
Bahamas...and the Turks and Caicos Islands.
At 1 am EST...0600z...the center of Tropical Storm Odette was
located near latitude 15.6 north...longitude 72.5 west or about
145 miles...235 km...south-southwest of the Isla beata on the south
coast of the Dominican Republic.
Odette is moving toward the northeast near 10 mph...17 km/hr...and
this motion is expected to continue for the next 24 hours. This
motion could bring the center of Odette over Hispaniola on
Saturday.
Maximum sustained winds indicated by reconnaissance aircraft are now
near 60 mph... 95 km/hr...with higher gusts. Some additional
slight strengthening is possible before Odette nears Hispaniola.
Tropical storm force winds extend outward up to 145 miles...230 km
from the center. These winds could reach the south coast of
Hispaniola by early afternoon.
The estimated minimum central pressure is 995 mb...29.38 inches.
Rainfall accumulations of 8 to 12 inches...with higher amounts in
the mountains...can be expected near the path of Odette. These
rains could cause life-threatening flash floods and mud slides...
particularly in the mountains of Haiti. Rainbands associated with
Odette are already spreading across portions of Hispaniola and
Puerto Rico.
Repeating the 1 am EST position...15.7 N... 72.5 W. Movement
toward...northeast near 10 mph. Maximum sustained
winds... 60 mph. Minimum central pressure... 995 mb.
For storm information specific to your area...please monitor
products issued by your local weather office.
The next advisory will be issued by the National Hurricane Center
at 4 am EST.
Forecaster Stewart
Thursday, December 04, 2003
My English sucks
I can see many of my post are from not easy to understand to plain unreadable. I am not sure I can improve. Some are not that bad, I hope. Anyway, nobody is reading ;)
Little request for a little improvement in Internet Explorer
While thinking about the way I surf news sites, I remembered Opera has a feature that helps a lot: the ability to open a link in a new window in the background. From my recollection, you have to Ctrl+Right+Click and Opera will open the link in a new windows, but it wont call SetForegroundWindow on it, so you can keep searching for other links of interest. That makes my news surfing even easier because I don't need to Alt+Tab after the Ctrl+Click.
I guess it would be very easy for Microsoft to include this in next version of Internet explorer.
I guess it would be very easy for Microsoft to include this in next version of Internet explorer.
What is the problem with the new Hotmail?
My coworker Manuel came to my desk to complain that the new Hotmail layout was optimized for a resolution of 1024x768 pixels. I think at 800x600 it is still very usable, but I have to agree that I don't like some details about the new version.
First and most annoying of all: Message links are javascript links. I really hate every site on this planet that do this. I don't want to get in a REST vs. Javascript links debate. I see it is an usability problem.
Why is using javascript links broken? Because you cannot Shift+Click on them. I do this all the time, I think of it as the Scoblesque way of surfing the web. As I am a developer, there is too much information outhere that I wish I could grasp, but I cannot. I have no time to loop from searching a page for a link to reading its content, clicking on the back button, waiting for the page to reload (I think Hotmail reloads faster now), and searching for next link. So what I do is to open the main page, I get myself in "search mode", I Shift+Click+Alt+Tab on every item I think is relevant because of the subject. Then I switch to "read mode" and I read them one by one. I close them as quicly as I see they don't cut it. Hopefully, in a few minutes I have closed them all and I am ready to continue my work.
I am very used to do this with news sites (There is a news site from my country that I hate so much for this same reason. I guess I should give them my feedback in another post.) and in Hotmail which is actually the only web mail I use.
So, please guys... The Web may not be as a rich medium as Longhorn Avalon will be, but right now it has some productivity features. Don't blow it! Every time you take functionality like this out of it, you are hurting us. Now I remeber I saw something like this in the Microsoft Support Knowledgebase before. You could not Shift-Click on the items in the result pane, but you could Righ-Click and open the item in a new window (I have no idea how they did that). Fortunatelly it is working ok now.
Second, the big MSN star and logo on the right: The objective is us to love MSN, isn't it? Ok, it is not working. The GIF file is actually 22KB, which is not a lot, but it must take from 3 to 4 extra seconds on a dial up connection (I haven't tried). The real problem is the amount of screen real state it sucks. It takes around the 20% of the screen in 800x600 with.
You already took the banner upthere. We are used to it, we know we are using a free service. Why do you need to put such an annoying logo on the right side?
I feel I should email Hillel Cooperman and ask him his opinion, even when MSN is not his department.
Besides this I think I like the new layout more than the former. Good job guys!
My wish for the next version: Eat your own dog food. If you can build Hotmail completely in ASP.NET then ASP.NET is already the best web application platform. If you cannot, then help improve it.
First and most annoying of all: Message links are javascript links. I really hate every site on this planet that do this. I don't want to get in a REST vs. Javascript links debate. I see it is an usability problem.
Why is using javascript links broken? Because you cannot Shift+Click on them. I do this all the time, I think of it as the Scoblesque way of surfing the web. As I am a developer, there is too much information outhere that I wish I could grasp, but I cannot. I have no time to loop from searching a page for a link to reading its content, clicking on the back button, waiting for the page to reload (I think Hotmail reloads faster now), and searching for next link. So what I do is to open the main page, I get myself in "search mode", I Shift+Click+Alt+Tab on every item I think is relevant because of the subject. Then I switch to "read mode" and I read them one by one. I close them as quicly as I see they don't cut it. Hopefully, in a few minutes I have closed them all and I am ready to continue my work.
I am very used to do this with news sites (There is a news site from my country that I hate so much for this same reason. I guess I should give them my feedback in another post.) and in Hotmail which is actually the only web mail I use.
So, please guys... The Web may not be as a rich medium as Longhorn Avalon will be, but right now it has some productivity features. Don't blow it! Every time you take functionality like this out of it, you are hurting us. Now I remeber I saw something like this in the Microsoft Support Knowledgebase before. You could not Shift-Click on the items in the result pane, but you could Righ-Click and open the item in a new window (I have no idea how they did that). Fortunatelly it is working ok now.
Second, the big MSN star and logo on the right: The objective is us to love MSN, isn't it? Ok, it is not working. The GIF file is actually 22KB, which is not a lot, but it must take from 3 to 4 extra seconds on a dial up connection (I haven't tried). The real problem is the amount of screen real state it sucks. It takes around the 20% of the screen in 800x600 with.
You already took the banner upthere. We are used to it, we know we are using a free service. Why do you need to put such an annoying logo on the right side?
I feel I should email Hillel Cooperman and ask him his opinion, even when MSN is not his department.
Besides this I think I like the new layout more than the former. Good job guys!
My wish for the next version: Eat your own dog food. If you can build Hotmail completely in ASP.NET then ASP.NET is already the best web application platform. If you cannot, then help improve it.
Tuesday, December 02, 2003
Delphi, GC, and .NET
Chris Anderson points to this cool article by Allen Bauer about class helpers in Delphi 8 for .NET.
I read the article with much joy because I have been interested in this IDisposable thing since the beginning. Back then I was convinced that there was a lot of room for improvement in it. Slowly, I became convinced that the IDisposable pattern was as good as it could be.
Now I see Delphi .NET design seems to clash with some of the conceptions I have acquired about GC in .NET. Of course I don't remember a lot about my Turbo Pascal 5.5 days, and I am not a Delphi programmer, but I think my thoughts still apply. Here is my deconstruction:
- Objects without finalizers take one GC cycle to be freed, while objects with finalizers take more.
- Actually in .NET all objects have a Finalize method. It is only that System.Object has a No-Op Finalizer and any class that doesn't override Object.Finalize is considered not to be finalizable. On the other hand the automatically injected Free procedure in Delphi .NET seems to be a No-Op on objects that dosen't have a real Finalizer.
- In accordance with Microsoft guidelines only very few classes should have finalizers. We are advised against writing finalizers for objects that don't directly wrap unmanaged resources. Most classes with finalizers should also implement IDisposable to provide a mean of explicit control. This allows users to avoid the performance penalty of finalizers (for that Dispose calls GC.SuppressFinalize). In addition, objects that aggregate resource managers should also implement IDisposable even when they shouldn't have finalizers themselves.
- Since all Delphi objects seem to have a Free method, I think it makes a lot of sense for it to automatically implement IDisposabe for all objects having finalizers.
- While in the Dispose method you try to dismantle your object graph (you clean up your main object's unmanaged and managed resources, and you even cascade Dispose calls as necessary), in the Finalize method you should avoid touching other objects (you don't even know if they are still alive since you cannot make assumptions about collection order). That is what the IDisposable design pattern is about. That is supposed to be the role of de Disposing parameter: to make Dispose and Finalize slightly different methods.
- But Allen seems to be in favor of allways manually dismantling an object graph before feeding the parts to the Garbage Collector. By dismantling I mean calling foo. Free and cutting all owned references. I had the idea that the GC was clever enough to take care of the entire graph very efficiently and call only the registered finalizers.
- But in my recollection GC will wait on an object finalizer before freeing dependant objects. So pruning the graph early makes some sense.
- For what I read it seems Borland took the IDispose design pattern upside down and maybe solved the problem. They just let you write one Destroy method, then they take care of injecting the disposed flag.
- Since objects are always meant to be freed through a call to Free (even inside container object destructors), they check for the existence of a destructor, then the check for the disposed flag, and they do the right thing.
- This leaves the question of wheather they call SupressFinalize on the object when Free is called preventively.
- I also wonder if the Delphi compiler is intelligent enough not to add a real finalizer when all you need is a disposer. That is the right thing to do when the object aggregates resource managers but has no unmanaged resources to deal with directly. Maybe there should be a way to give the compiler a clue.
- In my understanding Free seems to be static. You can call it even on a nil instance. It will make the check for you.
- This reminds me of the idea some of us had in the DOTNET list about including a "delete" operator in C#. We all had different ideas about how to differentiate the disposing from the finalizing time, but I think none came with the idea of just injecting a "disposed" flag to test if it was the first time the call is made. I think we were afraid of the interactions of such a simple thing with the posiblity of objects being revived in their Finalizer (which I think it is used in pools for reusable objects).
- What if GC.ReRegisterForFinalize and GC.SupressFinalize worked with the "disposed" flag? SupressFinalize turns it off, and ReRegisterForFinalize turns it on. They could also make the "disposed" flag (or should we call it "finalized") accesible through something like bool GC.IsFinalized(object obj). IsFinalized should first check for null reference (in which case it always returns True) and then for the "disposed" flag.
- So "delete foo" coud do something like:
if !GC.IsFinalized(foo)
{
GC.SupressFinalize(foo);
foo.~foo(); //off course Finalize is not public but we have access to it.
foo = null;
}
That looks a lot like SafeDelete!
- All in all, I think Delphi design makes sense because it allows Borland to preserve compatibility and language consistency, but maybe if I were them I would be discouraging Delphi programmers of those practices for future development. For instance, if developers continue to write Destroy procedures for simple memory or references clean up, Delphi.NET applications will suffer a performance penalty because they will all be translated to finalizers. Or am I wrong?
- I wonder how much magic would it take for Microsoft to do something along the lines of what Borland did. I think they could even improve on it.
- Even when I know I forgot something critical (I always do) I go to sleep with the naive feeling that my delete operator for C# is a good thing. I love to think about those things, I always loved it. You can search for diego and dispose in the DOTNET list archives and you will see!
I read the article with much joy because I have been interested in this IDisposable thing since the beginning. Back then I was convinced that there was a lot of room for improvement in it. Slowly, I became convinced that the IDisposable pattern was as good as it could be.
Now I see Delphi .NET design seems to clash with some of the conceptions I have acquired about GC in .NET. Of course I don't remember a lot about my Turbo Pascal 5.5 days, and I am not a Delphi programmer, but I think my thoughts still apply. Here is my deconstruction:
- Objects without finalizers take one GC cycle to be freed, while objects with finalizers take more.
- Actually in .NET all objects have a Finalize method. It is only that System.Object has a No-Op Finalizer and any class that doesn't override Object.Finalize is considered not to be finalizable. On the other hand the automatically injected Free procedure in Delphi .NET seems to be a No-Op on objects that dosen't have a real Finalizer.
- In accordance with Microsoft guidelines only very few classes should have finalizers. We are advised against writing finalizers for objects that don't directly wrap unmanaged resources. Most classes with finalizers should also implement IDisposable to provide a mean of explicit control. This allows users to avoid the performance penalty of finalizers (for that Dispose calls GC.SuppressFinalize). In addition, objects that aggregate resource managers should also implement IDisposable even when they shouldn't have finalizers themselves.
- Since all Delphi objects seem to have a Free method, I think it makes a lot of sense for it to automatically implement IDisposabe for all objects having finalizers.
- While in the Dispose method you try to dismantle your object graph (you clean up your main object's unmanaged and managed resources, and you even cascade Dispose calls as necessary), in the Finalize method you should avoid touching other objects (you don't even know if they are still alive since you cannot make assumptions about collection order). That is what the IDisposable design pattern is about. That is supposed to be the role of de Disposing parameter: to make Dispose and Finalize slightly different methods.
- But Allen seems to be in favor of allways manually dismantling an object graph before feeding the parts to the Garbage Collector. By dismantling I mean calling foo. Free and cutting all owned references. I had the idea that the GC was clever enough to take care of the entire graph very efficiently and call only the registered finalizers.
- But in my recollection GC will wait on an object finalizer before freeing dependant objects. So pruning the graph early makes some sense.
- For what I read it seems Borland took the IDispose design pattern upside down and maybe solved the problem. They just let you write one Destroy method, then they take care of injecting the disposed flag.
- Since objects are always meant to be freed through a call to Free (even inside container object destructors), they check for the existence of a destructor, then the check for the disposed flag, and they do the right thing.
- This leaves the question of wheather they call SupressFinalize on the object when Free is called preventively.
- I also wonder if the Delphi compiler is intelligent enough not to add a real finalizer when all you need is a disposer. That is the right thing to do when the object aggregates resource managers but has no unmanaged resources to deal with directly. Maybe there should be a way to give the compiler a clue.
- In my understanding Free seems to be static. You can call it even on a nil instance. It will make the check for you.
- This reminds me of the idea some of us had in the DOTNET list about including a "delete" operator in C#. We all had different ideas about how to differentiate the disposing from the finalizing time, but I think none came with the idea of just injecting a "disposed" flag to test if it was the first time the call is made. I think we were afraid of the interactions of such a simple thing with the posiblity of objects being revived in their Finalizer (which I think it is used in pools for reusable objects).
- What if GC.ReRegisterForFinalize and GC.SupressFinalize worked with the "disposed" flag? SupressFinalize turns it off, and ReRegisterForFinalize turns it on. They could also make the "disposed" flag (or should we call it "finalized") accesible through something like bool GC.IsFinalized(object obj). IsFinalized should first check for null reference (in which case it always returns True) and then for the "disposed" flag.
- So "delete foo" coud do something like:
if !GC.IsFinalized(foo)
{
GC.SupressFinalize(foo);
foo.~foo(); //off course Finalize is not public but we have access to it.
foo = null;
}
That looks a lot like SafeDelete!
- All in all, I think Delphi design makes sense because it allows Borland to preserve compatibility and language consistency, but maybe if I were them I would be discouraging Delphi programmers of those practices for future development. For instance, if developers continue to write Destroy procedures for simple memory or references clean up, Delphi.NET applications will suffer a performance penalty because they will all be translated to finalizers. Or am I wrong?
- I wonder how much magic would it take for Microsoft to do something along the lines of what Borland did. I think they could even improve on it.
- Even when I know I forgot something critical (I always do) I go to sleep with the naive feeling that my delete operator for C# is a good thing. I love to think about those things, I always loved it. You can search for diego and dispose in the DOTNET list archives and you will see!
Monday, December 01, 2003
Goggle Search: Diego Vega
Look... Google Search: diego vega. Ok, I don't really know what I did well this time, but right now I am number one Diego Vega in Google.
Do I get that for complaining? Or just for using the world Google 20 times in a paragraph... LOL
Ok, in sign of appreciation I will tell you about all my silly ideas on what to do with Google, including the add-in for WinFS.
By the way, I think PageRank rocks! Should I switch to Google dittohead... Nah, that would be too much.
Do I get that for complaining? Or just for using the world Google 20 times in a paragraph... LOL
Ok, in sign of appreciation I will tell you about all my silly ideas on what to do with Google, including the add-in for WinFS.
By the way, I think PageRank rocks! Should I switch to Google dittohead... Nah, that would be too much.
Subscribe to:
Posts (Atom)
Moving to MSDN
I haven't decided yet, but it is very likely that I will stop blogging here for some time. For some background, I have moved to the sate...
-
I apologize to everybody that has visited my blog lately... Sadly, I know it is too late for this. Today I found by accident that the Braven...
-
UPDATE 3/1/2006: The hotfix is officialy out for the Visual Basic background compiler crash. Thanks to Lisa, Margaret, and the VB Team. UP...