in MY LIFE

UltimoMemo in tutti i linguaggi del mondo

E così arrivò l’ennesimo momento di saluti, abbracci e invio dell’ultimo memo. Forse qualcuno non lo sa, ma in Accenture ed in molte altre aziende, esiste l’usanza dell’UltimoMemo. Praticamente l’ultimo memo non è altro che una email, generalmente inviata l’ultimo giorno di lavoro a tutto il personale dell’azienda (all personal) o ad un gruppo di colleghi, contenente un messaggio di saluto, di ringraziamento, contenente inoltre i nuovi contatti e spesso una valanga di lamentale e randellate varie sparate a tutti. L’ultimo memo, secondo me è molto importante sia da un punto di vista di educazione (banalmente si saluta tutti) e sia perchè si ha pubblicamente la possibilità di dire quello che si pensa (più o meno…) e che non si è mai riusciti a dire.

Ieri per me è stato l’ultimo giorno di lavoro in archebit e, anche se qui non c’è mai stata questa usanza, io ho scritto una mail di ultimomemo, non troppo polemica e diversa dal solito messaggio che vi riporto qui di seguito. L’oggetto era “Ultimo memo 2.0“:

<%
*******************************************************************************
‘ * Author:           Fabio Lalli
‘ * Versione:        2.0
‘ * Data:              31/03/2010
‘ * Titolo:             Ultimo Memo
‘ * Linguaggio:    vbscript / asp 3.0 – amarcord
‘ * Descrizione:   Contiene lo script per la generazione dell’ultimo memo e
la disintallazione delle librerie installate

‘ * ATTENZIONE: bisogna avere la libreria Archebit installata 😉

********************************************************************************

‘ * Creo l’oggetto per l’ultimo memo
set UltimoMemo = CreateObject(“Archebit.UltimoMemo”)

‘ * Apro la comunicazione
UltimoMemo.Open()

‘ * Definisco il messaggio
UltimoMemo.Message(“

Ciao a tutti.

Come più o meno tutti già sapete oggi è il mio ultimo giorno di lavoro in azienda e per la seconda volta, a distanza di 5 anni, mi trovo a scrivere di nuovo qualche riga di saluti in Archebit.

Questi due anni di lavoro sono stati molto importanti per la mia crescita professionale: il confronto, la discussione e le incompresioni, gli scazzi e le delusioni, la condivisione di idee, le riflessioni e i momenti “brainsharing” durante i pranzi romani sono stati belli, affascintati, coinvolgenti e formativi.

Approfitto di questo ultimomemo per chiudere questa mia seconda parentesi con un grazie enorme rivolto a tutti, sia alle persone con le quali ho lavorato a stretto contatto sia agli altri, con i quali ho condiviso anche solo qualche momento al telefono o al caffè. Grazie a tutti perchè da tutti penso di aver imparato qualcosa, negativa o positiva che sia. Veramente.

Dal momento che come sapete vivo di web, i miei riferimenti non li troverete in questa email. Li troverete tutti (cellulare, mail, skype, msn…) in rete, su Facebook sopratutto, e su tutti gli altri social network. Se non siete assidui frequentatori di questi ambienti potete sempre cercare su Gooooogle (Fabio Lalli). Se vi interessa sapere quello che farò nella vita professionale potete cercarmi su Linkedin.

A presto, tanto … questo mondo è piccolino. In bocca al lupo a tutti.

Fabio Lalli

PS: ho messo il commento al codice di programmazione per i non addicted. Per i tecnici invece, vi avviso che il codice è stato debuggato ed è funzionante e questa email ne è la dimostrazione. Non lo eseguite nel debugger 🙂

“)

‘ * Invio il messaggio
UltimoMemo.Send()

‘ * Rimuovo tutte le librerie installate ma non le reference di sistema
UltimoMemo.Remove()

‘ * Chiudo la comunicazione
UltimoMemo.Close()

‘ * Distruggo l’oggetto affinchè non possa esser riutilizzato
set UltimoMemo = nothing
%>

A seguito dell’invio, ho ricevuto alcune email e messaggi di risposta, da quelli di auguri ed in bocca al lupo fino a quelli che mi hanno emozionato per la grande dimostrazione di stima ed amicizia. Grazie a tutti, ma soprattutto Giuliano, Stefano, David e Sonia. Tra i messaggi che ho ricevuto però ce ne è stato uno che mi ha fatto veramente ridere e che non posso non pubblicare e ringraziare pubblicamente. E’ il messaggio di Matteo aka Code , che si è superato con una mail di risposta “a tono” dall’oggetto “Goodbye FLalli Collection” e che vi riporto qui di seguito:

… e io ti saluto con la “Goodbye FLalli Collection” Some “Goodbye FLalli” programs in many more-or-less well known programming languages


ActionScript 3.0

var t:TextField=new TextField();

t.text=”Goodbye FLalli!”;

addChild(t);


Ada

— Goodbye FLalli in Ada

with Text_IO;

procedure Goodbye_FLalli is

begin

Text_IO.Put_Line(“Goodbye FLalli!”);

end Goodbye_FLalli;


Algol-68

( # Goodbye FLalli in Algol 68

# print((“Goodbye FLalli!”,newline))

)


Amiga-E

-> Goodbye FLalli in Amiga-E

PROC main() IS WriteF(‘Goodbye FLalli\n’)






AppleScript

— “Goodbye FLalli” in AppleScript:

display dialog “Goodbye FLalli”


ASP-C#

<!– Goodbye FLalli for ASP.NET using C# –>

<% @ Page %>

<%= “Goodbye FLalli!” %>


ASP-VBS

Goodbye FLalli for Microsoft ASP (in VBScript)

<%@ language=”vbscript” %>

<html><body>

<%

Response.write “Goodbye FLalli!”

%>

</body></html>


ASP.NET

<!– Goodbye FLalli in ASP.NET –>

<%= “Goodbye FLalli!” %>


Assembler-Intel

; Goodbye FLalli for Intel Assembler (MSDOS)

mov ax,cs

mov ds,ax

mov ah,9

mov dx, offset GOODBYE

int 21h

xor ax,ax

int 21h

GOODBYE:

db “Goodbye FLalli!”,13,10,”$”


Assembler-Linux

;; Goodbye FLalli for the nasm Assembler (Linux)

SECTION .data

msg     db      “Goodbye FLalli”,0xa ;

len     equ     $ – msg

SECTION .text

global main

main:

mov     eax,4          ; write system call

mov     ebx,1           ; file (stdou)

mov     ecx,msg         ; string

mov     edx,len         ; strlen

int     0x80           ; call kernel

mov     eax,1          ; exit system call

mov     ebx,0

int     0x80           ; call kernel


Assembler-PDP11

;       Goodbye FLalli in Assembler for the DEC PDP-11 with the

;       RSX-11M-PLUS operating system

;

.title Goodbye

.ident /V0001A/

.mcall qiow$s, exit$s

.psect $code,ro,i

start:  qiow$s #5,#5,,,,<#str, #len, #40>

exit$s

.psect $data,ro,d

str:    .ascii / Goodbye FLalli!/

len=.-str

.end start


Assembler-Win32

; Goodbye FLalli in Assembler for the Win32 architecture

TITLE Goodbye FLalli in win32. Tasm

VERSION T310

Model use32 Flat,StdCall

start_code segment byte public ‘code’ use32

begin:

Call MessageBox, 0, offset sHallo, offset caption, 0

Call ExitProcess, 0

start_code Ends

start_data segment byte public ‘data’ use32

sHallo  db ‘Goodbye FLalli’,0

caption db “Hi”,0

start_data Ends

End begin


BASIC

10 REM Goodbye FLalli in BASIC

20 PRINT “Goodbye FLalli!”


C#

// Goodbye FLalli in Microsoft C# (“C-Sharp”).

using System;

class GoodbyeFLalli

{

public static int Main(String[] args)

{

Console.WriteLine(“Goodbye FLalli”);

return 0;

}

}


C++

// Goodbye FLalli in C++ (pre-ISO)

#include <iostream.h>

main()

{

cout << “Goodbye FLalli!” << endl;

return 0;

}


C-ANSI

/* Goodbye FLalli in C, Ansi-style */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

puts(“Goodbye FLalli!”);

return EXIT_SUCCESS;

}


Clipper

// Goodbye FLalli in Clipper

? “Goodbye FLalli”


CLP

/* Goodbye FLalli in CLP for the IBM AS/400 */

PGM

SNDPGMMSG  MSG(‘Goodbye FLalli !’) MSGTYPE(*COMP)

ENDPGM


ColdFusion

<!—Goodbye FLalli in ColdFusion—>

<cfset message = “Goodbye FLalli”>

<cfoutput> #message#</cfoutput>


CommandScript

#Goodbye FLalli in Command Script 3.1

#Meta.Name: “Goodbye FLalli”

#Block(Main).Start

echo “Goodbye FLalli!”

#Block(Main).End


CSS

/* Goodbye FLalli in CSS */

body:before {

content: “Goodbye FLalli”;

}


dBase

* Goodbye FLalli in dBase IV

? “Goodbye FLalli!”


Delphi

// Goodbye FLalli in Delphi

Program Goodbye_FLalli;

{$APPTYPE CONSOLE}

Begin

WriteLn(‘Goodbye FLalli’);

End.


Fortran

C     Goodbye FLalli in Fortran

PROGRAM GOODBYE

WRITE (*,100)

STOP

100 FORMAT (‘ Goodbye FLalli! ‘ /)

END


GoogleGadgets

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<!– Goodbye FLalli as a Google gadget –>

<Module>

<ModulePrefs title=”Goodbye FLalli example” />

<Content type=”html”>

<![CDATA[

Goodbye FLalli

]]>

</Content>

</Module>


HP-48

<<

@ Goodbye FLalli for the HP-48

@ << and >> are one char each

“GOODBYE FLALLI”

>>


HTML

<HTML>

<!– Goodbye FLalli in HTML –>

<HEAD>

<TITLE>Goodbye FLalli!</TITLE>

</HEAD>

<BODY>

Goodbye FLalli!

</BODY>

</HTML>


HyperTalk

— Goodbye FLalli in HyperTalk

answer “Goodbye FLalli”


Informix-4GL

# Goodbye FLalli in Informix 4GL

MAIN

DISPLAY “Goodbye FLalli”

END MAIN


Java

// Goodbye FLalli in Java

class GoodbyeFLalli {

static public void main( String args[] ) {

System.out.println( “Goodbye FLalli!” );

}

}


Java-Server-Pages

<!– Goodbye FLalli for Java Server Pages –>

<%@ page language=’java’ %>

<%=”Goodbye FLalli!” %>


Java-Servlet

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

//

// Goodbye FLalli Java Servlet

//

public class GoodbyeFLalli extends HttpServlet {

public void service(HttpServletRequest request,

HttpServletResponse response)

throws IOException {

response.setContentType(“text/html”);

PrintWriter out = response.getWriter();

out.println(“<html><body>”);

out.println(“Goodbye FLalli!”);

out.println(“</body></html>”);

}

}


JavaScript

<html>

<body>

<script language=”JavaScript”>

// Goodbye FLalli in JavaScript

document.write(‘Goodbye FLalli’);

</script>

</body>

</html>


Kix

; Goodbye FLalli in Kix

Run( “Notepad.exe” )

Sleep 1

SetFocus( “Untitled – Notepad” )

$ReturnCode = SendKeys(“Goodbye FLalli”)

Sleep( 2 )

$ReturnCode = SendKeys(“~{F4}Y”)


LaTeX

% Goodbye FLalli! in LaTeX

\documentclass{article}

\begin{document}

Goodbye FLalli!

\end{document}


Lingo

Goodbye FLalli in Lingo (Macromedia Director)

on startmovie

alert “Goodbye FLalli”

end


Lisp

;;; Goodbye FLalli in Common Lisp

(defun GoodbyeFLalli ()

(print “Goodbye FLalli!”)

)


Logo

; Goodbye FLalli in Logo

DRUCKEZEILE [Goodbye FLalli!]


MATLAB

% Goodbye FLalli in MATLAB.

disp(‘Goodbye FLalli’);


Modula-2

(* Goodbye FLalli in Modula-2 *)

MODULE GoodbyeFLalli;

FROM InOut IMPORT WriteString,WriteLn;

BEGIN

WriteString(“Goodbye FLalli!”);

WriteLn;

END GoodbyeFLalli.


MSDOS

@ECHO OFF

REM Goodbye FLalli for DOS batch

ECHO Goodbye FLalli!


Pascal

{Goodbye FLalli in Pascal}

program GoodbyeFLalli(output);

begin

WriteLn(‘Goodbye FLalli!’);

end.


Perl

# Goodbye FLalli in perl

print “Goodbye FLalli!\n”;


PHP

<?php

// Goodbye FLalli in PHP

echo ‘Goodbye FLalli!’;

?>


PL-SQL

— Goodbye FLalli in Oracle PL/SQL (sqlplus)

set serveroutput on

begin

dbms_output.enable(10000);

dbms_output.put_line(‘Goodbye FLalli’);

end;

/


Postscript

% Goodbye FLalli in Postscript

%!PS

/Palatino-Roman findfont

100 scalefont

setfont

100 100 moveto

(Goodbye FLalli!) show

showpage


Prolog

% Goodbye FLalli in Prolog

goodbye :- display(‘Goodbye FLalli!’) , nl .


Python

# Goodbye FLalli in Python

print “Goodbye FLalli”


QuickBASIC

REM Goodbye FLalli in QuickBASIC

PRINT “Goodbye FLalli!”

END


Rational Rose

‘ Goodbye FLalli in Rational Rose scripting language

Sub Main

RoseApp.WriteErrorLog “Goodbye FLalli”

End Sub


Rexx.simple

/* Goodbye FLalli in Rexx, simple version (writes to standard output) */

say ‘Goodbye FLalli!’

exit


Smalltalk.simple

“Goodbye FLalli in Smalltalk (simple version)”

Transcript show: ‘Goodbye FLalli!’.


SQL

# Goodbye FLalli in SQL

SELECT ‘Goodbye FLalli’;


T-SQL

— Goodbye FLalli in T-SQL

PRINT ‘Goodbye FLalli’


TeX

% Goodbye FLalli in plain \TeX

\immediate\write16{Goodbye FLalli!}

\end


Turing

% Goodbye FLalli in Turing

put “Goodbye FLalli!”


Unix-Shell

# Goodbye FLalli for the Unix shells (sh, ksh, csh, bash, …)

echo ‘Goodbye FLalli!’


VBScript

‘ Goodbye FLalli in VBScript (Windows Scripting Host)

msgbox “Goodbye FLalli”


Visual-FoxPro

*Goodbye FLalli in Microsoft Visual FoxPro 5-9

? “Goodbye FLalli!”


VisualBasic.NET

‘Goodbye FLalli in Visual Basic .NET (VB.NET)

Imports System.Console

Class GoodbyeFLalli

Public Shared Sub Main()

WriteLine(“Goodbye FLalli”)

End Sub

End Class


VisualBasic6

‘ Goodbye FLalli in Visual Basic 6

Private Sub Form_Load()

Print “Goodbye FLalli”

End Sub


VVVV

Goodbye FLalli in VVVV


wml

# Goodbye FLalli in Wesnoth Markup Language (wml)

#define GOODBYEFLALLI

[message]

speaker=”narrator”

message=_”Goodbye FLalli”

[/message]

#enddef


XHTML

<?xml version=”1.0″?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

<!– Goodbye FLalli in XHTML –>

<html

xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<title>

Goodbye FLalli!

</title>

</head>

<body>

<p>

Goodbye FLalli!

</p>

</body>

</html>


XQuery

(: Goodbye FLalli with XQuery 🙂

let $i := “Goodbye FLalli”

return $i


XSLT

<?xml version=”1.0″ encoding=”UTF-8″?>

<!– Goodbye FLalli in XSLT –>

<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

<xsl:template match=”/”>

<xsl:text>Goodbye FLalli!</xsl:text>

</xsl:template>

</xsl:stylesheet>

Grandissimo Code. Un forte abbraccio a tutti e in bocca al lupo per tutto.