Share

Software

Form the we-write-it-all-the-time departement.
You find here some tips and tricks I have collected in my all-day job.
Please take a look also at SIForge.org for some other articles  I wrote in  italian.

Last but not least a funny error message:

WSAD Error while displaying an error... 

 

 

 

 

 

 

 

 


Network computer

Posted on August 3, 2008 by giovanni - 1 comment
Tags: Business , Software
Take a look to my article on the future of operating systems and network computers on Gioorgi.com. Gioorgi.com will slowly become the new business blog of Objectsroot.com

iPhone programming

Posted on April 29, 2008 by giovanni - 1 comment
Tags: Software , Books Reviews


iPhone Open Application Development
 By Jonathan A. Zdziarski
 First Edition  March 2008
 Pages: 280
 ISBN 10: 0-596-51855-2 | ISBN 13: 9780596518554

(full article)

Boosting Squeak: RockSolid images

Posted on April 29, 2008 by giovanni - 1 comment
Tags: Software

As some of you know, I was a Smalltalk fan&developer in the last twelve years. I have stopped working on smalltalk years ago... anyway, I am happy to  look forward the Squeak Smalltalk Community from time to time.

I republish here an original article posted by me on SqueakPeople, over 4 years ago.
The reason is simple: I am very happy to see a Squeak code fork called "Sapphire" which share most of my thoughts:

Sapphire wants to take a fresh look at the Smalltalk philosophy and current implementations. The idea is to produce high quality open-source packages that will be loadable on a micro kernel. 

 I will take a look to Sapphire, and you will find my throughts here in the next months.

(full article)

The Valueteam PDFGenerator

Posted on April 16, 2008 by giovanni - 1 comment
Tags: Business , Software

Per un importante cliente, abbiamo sviluppato una applicazione chiamata PDFGenerator, che è stata pacchettizzata come un vero e proprio prodotto.
Vediamo come è stato possibile...

(full article)

Apple as hardware only company

Posted on March 1, 2008 by giovanni - 1 comment
Tags: Business , Software

In the last year, "Apple Computer" has changed a bit its focus.

First of all, Apple has erased the  word "computer" in the company name.

Then,  has shifted its focus on new products like the iPhone.

iPhone is a GSM telephone, and so it is quite different product for a computer company.

I see a very huge and strong alliance within these players:

  • Apple (hardware part)
  • Disney (via the Pixar,Steve Jobs can ask some movies to Disney :)
  • Google/YouTube (media and "network computer" part) 
  • Sony: HD Video consumer/DVD standards and so on

Apple software part is true strong, but it will be difficult to hunt competitors if the company is busy building new hardware.

It'd be better to focus only on one thing.
MacOSX is a very innovative product, but its developement had become slower in the last nine months.

Leopard is not so innovative, and it is similar to Vista: a lot of GUI fetures, but little on the surface.
And last, Lepoard is still quite slow and sub-optimized, for being a full MacOSX release.

 

Javascript and Smalltalk

Posted on February 16, 2008 by giovanni - 1 comment
Tags: News , Software

There is a future for SmallTalk? I was a very strong fan of the SmallTalk language, but in the last five years I have seen more and more contraction of its usage in the IT field.

The OLPC project, which uses also Squeak Smalltalk and its done by the core team fo Squeak, is not going very well.

Anyway, Dan Ingalls, one of the father of Smalltalk, is working on a new project called Lively. It is a rewrite of Morphic in Javascript, especially target  for building a Squeak-like interface.

 The interesting part of this work is a paper outlining the limitation of javascript as programming language. I have tried in the past years to look for ajax and or web 2.0 javascript libraries, but I feel very difficult to develop with them.

From the Paper we underline these parts:

Loading multiple JavaScript applications into the same virtual machine is problematic.[...] For instance, if two programs
happen to use the same names for global variables or functions, the overlapping variables or functions of
the first program will be replaced with the corresponding features of the second program, resulting in
unexpected behavior in the subsequent execution of the first program. Since JavaScript will not typically
give any warning messages or errors in such situations, the resulting behavior can sometimes be a total
surprise; in many cases the errors resulting from such situations may not be discovered until much later.

 

Evolutionary development approach is a necessity. Due to the highly permissive, error-tolerant nature of
JavaScript, JavaScript programming requires an incremental, evolutionary software development
approach. Since errors are reported much later than usual, by the time an error is reported it is often
surprisingly difficult to pinpoint the original location of the error. Error detection is made harder by the
dynamic nature of JavaScript, for instance, by the possibility to change some of the system features on
the fly.

 

A lot of room is left in optimizing JavaScript performance. Current JavaScript virtual machines are
unnecessarily slow. Even though JavaScript is a significantly more dynamic language than, for instance,
the Java programming language, there is no fundamental reason for JavaScript VMs to run two orders of
magnitude slower than Java virtual machines.

 

Memory management capabilities of the current JavaScript VMs are poorly suited to large, long-running
applications. Current JavaScript virtual machines have simple, 1970's style garbage collectors

 The reason of these issue are simple:JavaScript was intially a language for web developers, small and easy to use, and very compact.
Absence of errors or warning is a nightmare, if you care of your digitating time.
And Javascript is slow because no one will write  long script with it.

A very compact and clean discussion can be found in http://javascript.crockford.com/javascript.html 

Fixing these problems is hard. Until the current  implementation will not provide a better way of error detection, writing javascript code will be a very long and time-consuming task.

And using a so old garbage collector, give a chance to a c/64 BasicV2 to beat your code:  you are awared, guys :)

Anyway, there is a good set of javascript libraries out of there (prototype and jquery, for instance but not only), so you should be quite happy 

 

 

 

Dynamic languages troubles

Posted on January 31, 2008 by giovanni - 1 comment
Tags: Business , Python , Software

I have read http://www.manageability.org/blog/stuff/chandler-failure and I think it is very danger way of exposing concepts.

In the article pointed out, the quite dead Chandler project is compared to the multi-billion Eclipse project. And then a too easy analysis is done against dynamic languages, where Java is the absolute winner.

I will try to fix some of the things said there, and to add also my two cents here :)

(full article)

pyparsing review

Posted on January 17, 2008 by giovanni - 1 comment
Tags: Python , Software , Books Reviews

Review of "Getting Started with Pyparsing", Copyright © 2008 O'Reilly Media, Inc.
ISBN: 9780596514235
Released: October 4, 2007

 

(full article)

Why Open Source is important?

Posted on January 1, 2008 by giovanni - 1 comment
Tags: Site , Business , Software

Hi readers,
with the beggining of 2008, ObjectsRoot.com will change a bit its face.

!Update on 10th of January!

First of all, all Italian article will be moved to the new "vamp" site, thinked as a news site.

Objectsroot will focus on IT Business and it will host only english content: IT article will remain here, at least for a while.

(full article)

pezzent programming

Posted on December 23, 2007 by giovanni - 1 comment
Tags: Software , Humor

Si fa un gran parlare di Extreme Programming? Ma se non volete fallire, su quali basi la vostra azienda deve veramente reggersi? In questo articolo vediamo un excursus sul Pezzent Programming, usato nella produzione industriale di Dolci

(full article)

Portfolio

Posted on December 14, 2007 by giovanni - 1 comment
Tags: News , Site , Business , Software

ObjectsRoot.com is offering its services to some cusomers right now.

(full article)

Will Zend slash rubyonrails?

Posted on December 9, 2007 by giovanni - 1 comment
Tags: Software , Humor

Let the Zend Framework introduce itself as a Borg would do: 

"Hi dear RubyOnRails. Hi all. I am the Zend Framework, a small work (about  5 tons of code) done by IBM and Zend to destroy you. You think php is not able to build big project?... do you?
So you have dared to develop RubyOnRails or Perl or Python, thinking you can own the web in your way... Dear nerds you are so funny and young!!" in a lamp of light the borg duplicate itselfs in 100 indians programmers, saying together

"Resistence is futile.

Eh eh, we have just emitted a small set of stuff as a demo:

We have cache engine, memory manager, acl, configuration, pdf support, lucene support, all with documentation and examples (!).

Yeah we  are also thinking to integrate php as a WebSphere Frontend, and javalize it. Yeah you now we are already working on it and it is a secret... in a couple of year, you will forced to use our PHP. As Borland destroyed its JBuilder in favour of our small Eclipse Framework you will be absorbed soon.

And yes, http://www.basecamphq.com/ is still closed source!"

PHP is still well supported and a tons of apps are out of there.
PHP is "insecure by design" because of its type juggling system which allow you to inject data in a very easy way. But ruby is not much more secure at the time of writing....and php code library is five times bigger then ruby.

the end of the empire

Posted on October 23, 2007 by giovanni - 1 comment
Tags: Software

In Slashdot today I have seen a Microsoft advertise.
It said: "Windows is more reliable then Linux". [...]

(full article)

iPhone success is hard

Posted on August 30, 2007 by giovanni - 0 comments
Tags: Business , Software

iPhone is a very nice project, well designed and manufactered, but the market addressed is
an hard bet for Apple.
Big players are already on the ground: Nokia, Motorola, Samsung and Sony for instance.

So it is difficult to play in such market, and some analysts said  "the touch screen was not successful for GSM/phone products".

The launch of "iPod touch" addressed this fear in my own opinion, because the design of the iPhone is very cool, and you can try to at least have it survive ipod-izing it.

Last and more important factor, the iPhone is locked by one carrier in U.S., and the same will happen in U.K.

This is a very greedy move; big player like Nokia are trying to unbundle their product form the carrier, selling phones which can use multiple wireless network (wi-fi, skype, gsm/edge/umts).

Google is doing the same, from the software perspective using the Android project.

So Apple is always smart, but in the portable phone market you must be also price-affordable, fast in releasing new models, and open for working with other competitor.

All things Steve Jobs is not very good at the present time.

Update: At April 2008, Telecom Italy will carry on UMTS iPhones in Italy. I will write an article on them, to understand if the product is a bit less locked.

 

better unix life2

Posted on July 31, 2007 by giovanni - 1 comment
Tags: Software

If you need to work on cluster, is nice to have syncronized terminals to send the same commands in parallel.

Is it also doungerous, so do some test before sending a bunch of vi commands!

On Unix, a cheap and fast solution is Kde "konsole" which has such option.

Look under "View/Send input to all Sessions" menu and try it out.  I was happpy with version 1.6.6 of konsole.
I am not a fan of "xterm variants", but konsole looks great.

oracle mass table drop

Posted on July 3, 2007 by giovanni - 0 comments
Tags: Software

Sometimes I need to build a small script to delete a huge set of tables of a schema.

In Oracle is easy to do it, using the meta tables "all_tables", "all_views", and "all_sequences":

select  'drop table ' || table_name || ' cascade constraints;' 
   from all_tables where owner='protoss' and  table_name not like 'BIN%';

select  'drop view ' || view_name || ' ;'
   from all_views where owner='zerg' ;
 
  select  'drop sequence ' || sequence_name || ' ;'
   from all_sequences where sequence_owner='spacemarine' ;

The "BIN%" table are special temp tables of oracle.

On PostgreSQL, try use PG_TABLES meta-table

Happy sqlizing!

better unix life

Posted on June 7, 2007 by giovanni - 1 comment
Tags: Software

Some unix tips and tricks for an easy life

(full article)

Advanced Bash Scripting

Posted on April 17, 2007 by giovanni - 5 comments
Tags: Software

Is it amazing things you can do with a simple Bourne Again Shell  (bash).

I have just discovered you can open socket using a small redirection syntax, and emulate small checks you normally do with curl or wget.

The bash shell manual is always poor about examples, and this is very very sad.

In my own opinion, a good tool without a good set of examples is futile.
Crap software is still alive because is well documented.
Remember it 

(and for bash, look also  at:
http://www.google.com/search?sourceid=gmail&q=using%20bash%20%2Fdev%2Ftcp%2F)

Java Session Fancy Printing

Posted on March 27, 2007 by giovanni - 0 comments
Tags: Software
    public static final String convertToString(HttpServletRequest request) {
        StringBuffer msg = new StringBuffer();
        try {

            msg.append("*RequestURI:" + request.getRequestURI() + "\n");
            msg.append("*ContentType:" + request.getContentType() + "\n");

            msg.append("== Request Header\n");
            Enumeration headers = request.getHeaderNames();
            while (headers.hasMoreElements()) {
                String headerName = "" + headers.nextElement();
                msg.append(headerName + ":" + request.getHeader(headerName) + "\n");
            }
            msg.append("\n");
            
            Enumeration attr = request.getParameterNames();          
            
            ArrayList l = new ArrayList();
            String att;
            while (attr.hasMoreElements()) {
                att = (String) attr.nextElement();
                l.add(att + " -> " + request.getParameter(att));
            }
            
            msg.append("=== Request ( " + l.size() + " ) ===\n");
            Object a[] = l.toArray();
            Arrays.sort(a);
            for (int i = 0; i < a.length; i++) {
                msg.append((String) a[i]);
                msg.append("\n");
            }
            msg.append("===   ===   ===\n");
            
            // Process the Session
            HttpSession session = request.getSession();
            // msg.append("\n");
            
            Enumeration e = session.getAttributeNames();
            
            TreeMap t = new TreeMap();
            String k;
            while (e.hasMoreElements()) {
                k = (String) e.nextElement();
                Object oggetto;
                try {
                    oggetto = session.getAttribute(k);
                } catch (Throwable notSerializableException) {
                    oggetto = "NON DESERIALIZZABILE. Chiave:" + k;
                    
                }
                t.put(k, oggetto);
            }
                        
            Object orderedKeys[] = t.keySet().toArray();
            msg.append("=== Session  ( " + orderedKeys.length + " " + (usertempz != null ? "+ 1UT" : " NO UT!") + " )===\n");
            Object elem;

            for (int i = 0; i < orderedKeys.length; i++) {
                elem = t.get(orderedKeys[i]);
                msg.append(orderedKeys[i]);

                msg.append("\t-> ");
                if (elem != null) {
                    nicePrintSessionObj(msg, elem);
                } else {
                    msg.append("null");
                }
                msg.append("\n");
            }
            return msg.toString();
        } catch (RuntimeException e) {
            return msg + "\nERR: Cannot print session/request!!" + e.getMessage();
        }
    }

Against drm

Posted on March 7, 2007 by giovanni - 1 comment
Tags: Software

humble ajax

Posted on January 20, 2007 by giovanni - 1 comment
Tags: Software
I think ajax is a very new technology, but with too much hype on it. I think we'd try to do simple things with it, avoiding too much bloated interfaces. I have found a good ibm article with shows "In-place editing" avery easy way to get a more responsible site. Finally the same article points to Prototype window, a very easy to use windowing system.
Happy hacking!

Audiocast: linguaggi web

Posted on November 23, 2006 by giovanni - 3 comments
Tags: Software
Sono stato intervistato dal podcast di notizie digitali. In questo mio secondo intervento facciamo alcune rifessioni sui linguaggi di programmazione utilizzati nello sviluppo Web.
In particolare cerchiamo di capire il successo di PHP rispetto ad altri linguaggi, e che cosa possiamo attenderci da RubyOnRails.

Potete leggere anche del mio primo intervento su audiocast riguardante ajax.

Software Trends1

Posted on October 12, 2006 by giovanni - 1 comment
Tags: Business , Software

Software trends is a new set of small article I will write. In this small pices I will sketch out the trends of the Software Industry related to web developmenet. Let's give a look at the October 2006

(full article)

Exupery: byte compiler for Squeak

Posted on October 7, 2006 by giovanni - 1 comment
Tags: News , Software

I have tried Exupery, the Squeak byte compiler written by Bryce Kampjes. Exupery is still in beta but is usable for experimenting. SqueakWeekly is happy to publish a prime-time FAQ!

(full article)

B Wolf Version 1.1

Posted on September 17, 2006 by giovanni - 1 comment
Tags: Python , Software

BWolf version 1.1 has been relased!

I am happy to announce to all the world I have just relased the first stable release of BWolf.

 

You can find it here.
You need to set up a settings_private.py for properly defining a secret cookie key. Happy (book) reading ;)

(full article)

B Wolf Version 1.0

Posted on September 6, 2006 by giovanni - 0 comments
Tags: Python , Software

I am happy to announce Version 1.0 of BWolf. I have just installed it for my first customer. You can grab the 1.0 version from the Subversion repository. This first release spot some basic feature...

(full article)

Celeste

Posted on August 17, 2006 by giovanni - 15 comments
Tags: Site , Software

Celeste

Celeste is a mail reading and organizing program wirtten in Squeak Smalltalk.
This is the up-to-date mantenance page

(full article)

Biblio Wolf first install

Posted on July 12, 2006 by giovanni - 1 comment
Tags: Python , Software

Biblio wolf has been installed in a production environment.

(full article)

BWolf first installation

Posted on July 5, 2006 by giovanni - 1 comment
Tags: Python , Software

Introducing first steps in Biblio Wolf

(full article)

Wrost Shell provider of The net

Posted on January 7, 2006 by giovanni - 1 comment
Tags: Business , Software

Yes this is a negative-advertise (sometimes called flame). I get disappointed by "The Super Dimension Fortres" after about 3 years of use.

 

Let's see why...

(full article)

Audiocast: Ajax

Posted on December 23, 2005 by giovanni - 0 comments
Tags: Italy , Software
Ho collaborato con Valerio, l'autore del podcast Notizie Digiali. Nel numero che esce oggi parliamo delle tecnologie ajax: una panoramica su un trend emegente.
Grazie alla sinergia con SIForge, possiamo presentare altri articoli legati all'argomento, tra cui segnalo: Ringrazio ancora Valerio per il tempo concesso sul suo podcast

Aggiornamento:

A quasi un anno di distanza, il rischio che ajax si trasformi solo una "buzzword" (cioe' in una parola usata per millantare funzionalita' prive di consistenza reale) esiste. Inoltre al momento sviluppare in ajax e' ancora delicato e farraginoso: esistono mille modi di fare la stessa cosa, e nessuno di questi porta a qualcosa di facile da mantenere. Tuttavia e' indubbio che Ajax migliorera' di molto l'ergonomia dei siti web, attraendo anche nuovi utenti per tali applicativi.

Database in depth

Posted on September 15, 2005 by giovanni - 1 comment
Tags: Software , Books Reviews

I was happy to review a very nice book called "Database in Depth".

Database in Depth Relational Theory for Practitioners

By C.J. Date
First Edition  May 2005 
Pages: 230
Series: Theory In Practice
ISBN 10: 0-596-10012-4 | ISBN 13: 9780596100124

I reviewed it in English and Italian for my SIForge.org web site.
Give it a try!
Bye bye

Recent Posts:

Tags:


Featured Readings