Dynamic languages troubles

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 :)


 

First of all, I use Java a lot, but I am also a fan of dynamic languages. Every tool has its place in the world, and I will avoid some holy war here. 

Anyway, it is important to understand major differences between very distant projects.

 

First of all, Eclipse is a very huge project, developed by IBM and based from the beginning with a very strong hype on plugin modularization.

The effort pushed inside Eclipse is very huge and come also from the San Francisco Project. Other IDEs (like JBuilder and Together) stops fighting Eclipse years ago, and eventually failed even to sell their stuff.

 So there are no similar example to Eclipse in Python/Ruby/Perl world. Even in PHP is hard to find a so huge and well designed program. And the languge here is less important: a company big as IBM can also code in PL/I all its stuff, without so much pain :)

Second, PHP is very successful language, even if a bit too insecure, at the present time.

PHP Language has poor support for modules and so on, but project like Drupal, Joomla and other are full of plugins, quite easy to write.

RubyOnRails is falling down because nobody is understanding why PHP should be abandoned for Rails.

Java architectural model is very well written and Sun worked very hard to it. Java Hot Spot VM is derivered from the Self dynamic language,  and has inside technology difficult to develop in an open source project.

Surely Dynamic languages are strong when there is the one-man-band paradigm: sharing works in Smalltalk was  a bit complex in early days.

Put Perl, python and ruby have a strong modularization concepts, and so this issue is often solved.

I have tried Zope and I think it is weak because:

  • Zope is user is non-existent. Zope user is a super-skilled web master which wants a web CMS without writing so much code.
  • Zope product upgrade is a nightmare
  • A stuck Zope Product can destroy your work. So hosting Zope is a problem
  • A lot of Zope basic objects (like cache accelerators and so on) are poorly minded: they works only on RAM, and are not thinked well. Drupal 5 has more strong theory for this issue, and Drupal is poor PHP code.
  • Zope use a proprietary database, when a simple SQL database with a relational mapper can do the same thing…think twice before reinventing the wheel!
  • Every major Zope releases breaks a lot of the API. This is the most stupid thing you can do as open source developer.

Chandler failed because they tried a very difficult business: calendar software is a very difficult area to address. All operating system (including possibly C/64 :-) has now a huge set of Personal Information Manager software (PIM), and LDAP solves sharing issue for big companies

Even Ximian Evolution is near death.

And your bigger competitor is Microsoft Exchange and… yes… old Unix.

Dynamic lanuages has many lacks, and difficult refactoring is a problem but… remember frefactoring tools was INVENTED under SMALLTALK!

IT is a place where you must be careful… isn't it?

 

 

 

 

Will Zend slash rubyonrails?

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.

Java Session Fancy Printing

    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();
        }
    }

Site Update: Happy new editor!

(First published on 2007-01-20)

Hi all, ObjectsRoot now has correct story ordering ontags view!

I am happy to announce I have just installed tinymce on my site.

TinyMCE is a very nice javascript editor, also used in Drupal. What makes tinymce very nice in my humble own opinion, is its easy installation. You do not need complex init procedure: you just tell tiny you want to edit well textareas, and it will do all for you. Because django  (my web framework for the site) has a bit complex way for handling administration pages, this is good news for objectsroot.com.Powered by TinyMCE

TinyMCE is a very professional product, and has all the things I like in a text editor.

I remember,  in the dark ages of the 2002, ajax was not yet born.

So in that dark era, I was stunned with a very poor javascript editor product, with a very big license to pay to use it.
I was complex to configure, and a nitghtmare to use.
So I am happy to have a very easy-to-edit blog now, and I will be able to write more and more throughts in a scattered way.
Keep in touch, babies!

 

The Project Manager

Steve is not a normal solution provider.
Steve is the final destination for Project Management troubles.

Let’s see how Steve can solve problems

The Ten Steve Rules

  1. If you have a customer you can get my attention
  2. If your project is run out of time and you need to finish the product yesterday, you will face a disaster. Call me
  3. Cannabis programming is too light
  4. You cannot offer a Lunch to Steve, unless you have four ticket resturants and at least one more for you
  5. Are you saying you need more time to finishing the use case? These are details. If you cannot get it in the required time, I will fire you (Loading a gun): in the real sense.
  6. Peace and calm are an useless evil.
  7. True Metal Hackerz get the work done in less time then you
  8. Linux has a a cold bird as Logo. This is enought to kick it off the project.
  9. I prefer Illy over Java, sorry
  10. There isn’t a tenth rule