venerdì 29 dicembre 2006

C#: first impressions

I've started studying C# as I'll soon start a project in this language. It's similar to Java, so I'm not doing a giant effort; I like it, it's much better that VB, and Microsoft is offering a free (of charge, not free the GPL-way!!) development environment, for home and study purpose; I'll soon inquiry which are the limitations of this tool. But what I was thinking while reading some manuals is that Sun and Java are surely pointing in the right direction, if MS is going after, and C# is the “Microsoft's version of Java”; but now Java has a great advantage: it has been released under open source! And runs very well on a variety of platforms. But C# is somehow enhanced from J++, and it has some features borrowed from C++ (something I've actually missed a lot, programming in Java):
  • Delegates (from C++'s function pointers)
  • Stack based structures (in Java every object is heap based, while in C++ you have full freedom but you lack the garbage collector)
  • Properties (getter/setter)
What I'm not sure of its goodness is the lack of checked exception, which guarantees in Java a better software robustness; I'll see soon in real world projects if this will be penalizing. In the next days I will start studying the .NET library, and I will start using the IDE.

mercoledì 20 dicembre 2006

Tech 2007

2006 is almost over, and it's time to start thinking at what I should expect from 2007 (technologically speaking, of course); this year Intel and AMD have introduced multi core processing to the consumers, and most likely I will soon buy a new computer based on a Core2 Duo (4Mb cache, overclockable), connected with my LCD 32” TV. Surely I will get a wireless keyboard and mouse, and I will set up a wireless network in the house. I want to try Vista, and I want to continue using Ubuntu with Aiglx and Compiz or Beryl, so I want a nice graphic adapter (nVidia 7600 GT with passive silent dissipation). Why all this powerful hardware? Because of the new great software I expect to see next year! First of all I want to start focusing on Java again, and Java 6 seems quite interesting. It will surely be a great platform to test the advanced features that the new GUIs will offer; and I want to recover the VSC project, while continuing JObjectStore – both heavily multithreaded, so dual core could make sense. And from now on I think that also desktop applications, as server applications since now, will start focusing on multithread, to take full advantage from the new architectures, so to stay in touch with this trend, I'll start again studying concurrent programming – a topic I've unattended since the university times.

Rich Internet Applications are getting better and better (Google stuff is impressive), and Java EE and PHP will surely capture my interest, and most likely they'll become part of my new job. But also .NET could be interesting, mostly because of Vista's new features that will make obsolete old win32 software – what a great opportunity to create new work! Software houses that will use this opportunity will surely be the smartest next year, and the smartest developers or architects will surely need to know about .NET.

So this is what I expect to see in 2007:

  • Concurrent programming on desktop applications, not only servers
  • New GUIs, Vista and Aiglx, bringing new advanced desktop features
  • RIA based on Ajax, served by Java EE
  • .NET applications replacing old Win32 applications

I don't expect to see much C++ until the new standard comes out, so I'll focus mainly on Java6 and C#.

mercoledì 13 dicembre 2006

Java SE 6

Sun has just released Mustang, after opening Java through an open source license; two great news in a short time, means something is changing... will this be Sun's response to Vista? First of all, Mustang's enhancements are focused on the desktop (we have a better look with LCD subpixeling, better OS theme support, tray icons and a great speed improvement) and I guess that, after having satified the server side with EE, Java is aiming to the desktop, client and stand alone applications. And most of these applications will run on Vista; so what if a lot of people starts using Java applications on Win which can be ported without any effort on Linux? Sun is offering also Ubuntu as a choice of OS on its systems...
GNU/Linux and Open Source is getting better and betters, and a good, really good alternative to Vista!
Only one thing... on my Fedora 6, Mustang's window repaint is not working with Compiz...

Funny

The best way to accelerate a Macintosh is at 9.8m / sec / sec.
- Marcus Dolengo

giovedì 7 dicembre 2006

Back to the Future (of Object Oriented)

I've recently read the slides of Bruno's speech at JavaDay06Roma, and it reminded me of my first experiences in C++, while reading Stroustrup's “The C++ Programming Language”. At that time, there weren't frameworks available to build applications, so my thinking was focused on the design, and not the implementation nor the technology to use: I should really do a step back, and start thinking again in terms of pure Object Oriented Design!
I want to start my new job in the best way!

Dimissioni

L'ho fatto... finalmente questa mattina ho dato le dimissioni!

lunedì 4 dicembre 2006

My next Linux distro

I'm thinking about setting up a Linux DAW...
http://demudi.agnula.org
http://ubuntummc.com
http://ccrma.stanford.edu/planetccrma/software/
I'd like to get a nice codec set (even if they aren't open source), I would like a low latency kernel, LADSPA, ALSA, Ardour and wathever I need for usual office work (Open Office... nothing else!). I'd like to have AIGLX and Compiz as well, and Sun's JDK 5 and NetBeans... we'll see...

Useful system tracing

I'm very impressed about how modern system such as Linux and win, and even applications as anti-virus et similia are able to auto-update; this is a great feature for users, but I'm thinking of a way to improve this. In my applications, I'm using some AOP to trace module usage, both for profiling and for getting an automatic "user feedback". I'm thinking about a system to trace unused features, so that the system can be able to uninstall modules to free disk space, and to improve start-up performance; and what if a similar method could be used by the operating system to trace the usage of the installed software? Win is doing something like this, and from the control panel you can get informations about the amount of usage of each application, but if we could extend this tracing to all the components of a system, we could get informations usable to configure a system which include all and only the components we are using!
In my case, I have a Linux system always connected to the Internet via a ADSL connection: I'd like to uninstall unused features without effort, as easily as I install the modules that I need; I will always be able to reinstall them, if I need. I think we shall expect something like "intelligent auto-configuration" soon...