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.