venerdì settembre 29, 2006 This is my last day in Sun, so this is my last post.
For a java guy, choosing to depart Sun after nearly 6 years was, at least, hard. But, well, it's done. I am not anymore a Sun employee. I am not proficient enough in English to express my feelings about this... and probably I couldn't find the right words in my own Italian.
... anyway, my new blog is here (and hopefully here in a while)
Ladies and gentlemen... mr James Gosling.
for non-italian-roman speakers this rouglhy translates to
JG: design patterns are not that useful, if you want
UL: what the hell, I have to rework the slides I am continuously using since 1998


Ok, it's almost 2 weeks working on my shiny new MBP (standard 17", 1,5Gb RAM), so it's time to wrap-up.
What I like:
- OSX :)
- it's fast, very fast
- Core DUO, because of Parallels. I have installed XP and Solaris 10 on two different VMs. Now i can rotate (using virtue) between Operating Systems! And they both work at near native speed
- Java on intel: it's way faster than Java on powerpc (G4 or G5), probably because the new VM is now much more similar to Sun's
What I don't like:
- the CPU whining. It was driving me nuts, then I found MagicNoiseKiller. With the latest 10.4.6 update MNK is slightly less effective, you need first to open and close the PhotoBooth and then run the code to make it work. I am still waiting for a firmware update or something similar...
- it's hot, and it's not quite comfortable to work with a MBP on lap.
- wifi. It's not working as it should. At home works perfectly with an Airport, but I had problems to connect to some routers. When the battery is low, sometimes it drops connections.
I can live with the whining (thanks to MNK) and with the hot case, but I really hope that Apple will solve the wifi problems. It's the sugar on the cake, and I miss it.
Overall, I am amazed: it is the best laptop I have ever had and it's a great machine. Some youth problems, hope they will be solved in the next weeks. If you can resist, it's probably safer to wait this summer to buy it. If you are like me and you can't... go and enjoy it!
Here is a snapshot of my macbook running 3 operating systems together (click for an high resolution image). And believe it or not, all feel responsive!
Just shortly after Apple announced bootcamp to make you dual boot windows on mac-intel, I found this... meaning that now I don't have anymore excuses and I can go to the Apple Store and buy a Macbook.
Ok, I have one more excuse: my wife.
Update of 15/04: Ok, done. I am writing this on my shiny new macbook pro, and I am still married. More on this later...
The laptop I dream of, unfortunately, still doesn't exist... it should:
have OSX as the main Operating System 
have a multi-core CPU and other state-of-the-art hardware to be a reasonably fast machine in different working conditions
have lot of out-of-the-box connectivity options, wifi, gigabit ethernet, bluetooth, etc.
be energy-savvy, a lot of noteboooks really work well only when plugged to the AC. I want to do a Roma-Milano in train and still be working at Firenze
be lightweight enough to be carried on, especially on Monday mornings
... so what? This is very similar to a Macbook! But I also need...
a fast virtualization approach: I want to install in OSX different images and work with different operating systems and network configurations at a reasonable speed. In my daily work I absolutely need Solaris and Linux, with Windows coming as a nice to have. Multiboot is not an option, I definitely prefer a true virtual approach.
Basically, I am ranting because I think the Macbook is now the most appealing machine (although quite expensive), but is lacking a virtual machine software, at least for me, to be a strong-buy. Microsoft Virtual PC is slow as hell and impracticable for serious use, and I don't know of other OSX Virtual machines which really work. Now the macs have Intel processors, so this should be only a matter of time...
Let's see what happens in the next few months! In the meanwhile, I just signed this petition...
UPDATE of 26/03: hey, perhaps somebody up there likes me...
I am writing this from Catania, in the wonderful Sicily, south of Italy.
I am working with some smart software guys in ST Microelectronics, which you should know because is one of the biggest semiconductor producer, and you probably have one of its chips somewhere in your phone, PDA, or pc.
It's why this place is called Etna valley.
I'm just in a room in front of the swimming pool, and I'm working with a high speed network connection (not a wifi one, they have ethernet too). And tomorrow I will speak with guys who implemented (years ago, before Spring had momentum) their own Inversion Of Control framework to better serve internal applications.
Look at some shots of the hotel and here at Etna.
If you are envy, I can understand... so, I seriously advice a working vacation here
uL
import static org.junit.Assert.assertEquals;
public class AdditionTest {
  private int x = 1;
  private int y = 1;
  @Test public void addition() {
   int z = x + y;
   assertEquals(2, z);
  }
}
.. could be too late to buy the brand new x2100 instead of the Ultra 20. It is essentially the same hw, but it's a server and not a workstation. These new low price opterons really rock!
And... did I mention the wonderful ads? 
http://www.sun.com/emrkt/rejected/approved.html
http://www.sun.com/emrkt/rejected/index.html
http://www.theinquirer.net/?article=26127

My wife just opened a "brick and mortar" boutique, because... you know, old economy is sometimes better than new one.
So we are now in old business, selling luxury pens and gifts, Montblanc , Piquadro , this kind of no-geek stuff I have never heard before 
I must say that I would have preferred something similar to thinkgeek , but probably that shouldn't be remunerative, at least in Italy 
So what? But this is a perfect excuse to buy a new server (you know, to serve an old new economy little ecommerce!), so I just bought a brand new Sun Ultra 20 .
If you haven't heard of it, it's an AMD-64 opteron machine with an exceptionally cheap price. Well, it's not exactly a server, but for some small sites that should be enough. I asked for 2Gb additional memory, so I will be able to use a prevalence layer for persistence
I am just like a kid, and can't wait for my new toy!
//For.java
import java.util.Collection;
public class For {
  public static void each(Collection c, Block block) {
    for (Object o : c) {
    block.execute(o);
   }
  }
  public static Object find(Collection c, Block block) {
   for (Object o : c) {
    if (block.execute(o)) {
     return o;
    }
   }
   return null;
  }
}
//Block.java
public interface Block {
  boolean execute(Object o);
}
//Main.java
import java.util.ArrayList;
public class Main {
  public static void main(String[] args) {
   String s1 = "Hello";
   String s2 = "cruel";
   String s3 = "world";
   List items = new ArrayList();
   items.add(s1);
   items.add(s2);
   items.add(s3);
   For.each(items, new Block() {
    public boolean execute(Object o) {
     String s = (String)o;
     System.out.println(s.toUpperCase());
     return false;
    }
   });
   String x = (String)For.find(items, new Block() {
    public boolean execute(Object o) {
     return (o.equals("cruel"));
    }
   });
   System.out.println(x);
  }
}