Archive for the 'Software' category

The most useful freeware

Nov 17 2007 Published by Vincenzo Carabillo' under Freeware, Software, Websites

The Freeware Genius website has posted a great list of freeware software that can be used to re-install a Windows machine. The list contains a lot of incredibly useful software as well as screenshots and reviews.

Link:
Reinstall Windows and outfit your system with all freeware programs

Comments are off for this post

Google’s Android revolution

Nov 15 2007 Published by Vincenzo Carabillo' under Google, OSs, Software

Will we have have an Android in our pockets? Google new exciting project is an Operating System for mobile phones. Android is a groundbreaking idea that will probably change the market. In the future we would be able to use the same user interface for mobile phones made by different companies. An API (Application Program Interface) is already available for accessing the low-level hardware features, and a conveniently crafted Eclipse plug-in can be downloaded to start writing new applications in Java. The Android SDK (Software Development Kit) contains a nice emulator in which to preview the applications under development. Everything works smoothly, and is very easy to setup. Excellent!

 

The Open Handset Alliance which Google is building, holds together many big names (HTC, LG, Samsung, Motorola,Intel, Broadcom, Marvell, Qualcomm, SiRF, T-Mobile, Telefonica, Telecom Italia and Sprint, plus Google and eBay and a variety of other partners) but not Nokia or Microsoft. This means that it seem that no Nokia phone wil be equipped by Android for the moment being, but I guess that Nokia could join later. Of course Microsoft would be much harder to convince!
For motivating developers to start using the new platform, Google has launched a contest (the Android Developer Challenge), for which there are more than 10 million $ awards for the best applications made for this platform.

The idea to deliver an Operating System like Android is surprisingly in line with Google’s mission to "organize the world’s information". Once again Google proved to work smart, and once again will change the way we approach the IT, this time in our pocket.

What will happen next?

  • Many developers will happily start to work with Android
  • there will be several hundreds of beautiful pragrams for this platform before the commercial launch
  • many manufacturers will be happy to see such audience, and will put more attention (and budget) on the platform
  • mobile phone users will be able to buy phones from several companies, sure to be able to use the same android software in each of them. Now the choice for an handy will be easier, finally not based on usability, but on style, and hardware quality!

Android is good news. We have to wait until the second half of next year to be able to buy one of those phones able to run Android.

Comments are off for this post

Basic Software Architecture and Deployment Choices (part 1)

Jun 22 2007 Published by Vincenzo Carabillo' under Architectures, Deployment, Software, Work

This is the first of a serie of posts on how to face some basic challenges when starting a new software project. The choice now is more complex than in the past, and this happened mainly because many languages have evolved, many other are born, many more people use now computers, and especially because internet is now a very important reality.

Gentlemen, choose your language

To choose a language in which to develop a project is not trivial. If somebody asks me "Which is your favorite language?" I promptly answer Java, but in case I am given a new project, a structured decision approach is needed.

A problem well-defined is half solved” — John Dewey

The main question is: what do you want to achieve? The question must then be better specified focusing on the user, performance, available technologies, quantity of data involved, time-to-market, competitors, state-of-the-art, and so on. Each architecture has pros and cons: Java is portable and object-oriented, but needs resources; C is fast, but neither object-oriented nor easily portable; Lisp is good for artificial intelligence, but is very hard to teach to procedure-oriented people; with PHP you can build fantastic web-based applications, but is not the best choice for stand-alone programs… there is also the possibility to mix up solution: in a past project I wrote PHP code that generates HTML and Javascript, which was executing dynamically generated SQL code; in that case some lines of code ended to host four different languages!

Aim to reduce complexity
The secret for a successful architectural choice is aiming to reduce the project’s complexity.
Facing the challenge to release the project in time, within the given budget, and with the highest possible quality (within the given time and budget), complexity is the most evil enemy.
A general rule to face complexity is to (Divide et impera: divide the problem in small, independent parts, and develop those parts separately.  How far this "divide and conquer" analysis will go it will be your choice. It is a matter of experience to identify how to reach your target in a clever way. Generally speaking, an object oriented language almost forces the division of the project in "objects", and this helps code maintainability and scalability.

Prototyping
Another enemy (funny to say!) to achieve a good final quality is the client: non-it oriented people tend to underestimate how bad it could be to change the requirements after that development has started. The requirements must be well defined, understood, and agreed at the beginning of the project. Writing down requirements and describing the agreed solution in detail to the client before starting development can seem a waste of time, but will save lots of efforts afterwards.
Most projects involve some GUI (Graphical User Interface), or at least a "presentation layer". A prototype should be presented as soon as possible in the development phase. Just think that the client will see and use software only from outside: algorithms and calculation engines will probably remain just black boxes for the client, while he will just focus on the usage and results.
The prototype should be built in the same way the final product will be executed (E.G.: if you have chosen Java, just present a dummy Java GUI). If this is not possible, just build a graph in Powerpoint (or the open source alternative OpenOffice Impress). If even this is not possible, just use pen and paper, and do not forget to finish with date and signatures from both parts.

In the next post of this serie, we are going to explore deeper technical and architectural topics… stay tuned!

One response so far