giovedì 22 ottobre 2009

Una discussione interessante su OpenVPN, processi e variabili d’ambiente

http://groups.google.com/group/it.comp.os.linux.sys/browse_thread/thread/cb0aa626f970f277 .

domenica 6 settembre 2009

Debian Lenny su HP/Compaq 615 (Product No. NX556EA) con driver open source per la scheda wi-fi

A quanto sembra non c’è ancora un report di compatibilità per questo portatile su TuxMobil, sempre che non si possano considerare in qualche modo simili i modelli Compaq NX615 e Compaq 610 (ma non ne ho idea).

Il notebook è fornito con sistema operativo FreeDos, che è come dire: macchina nuda; e tutto faceva pensare che gli utenti Linux fossero nel target di questo prodotto. In verità ho avuto dei problemi con una prima installazione di Ubuntu 9.04, che ho risolto cambiando distribuzione e compilando a mano un po’ di driver.

Jaunty Jackalope fornisce i driver propietarî di Broadcom per la scheda wireless. Driver che, dalla mia esperienza, funzionano a singhiozzo: ogni 5-10 minuti bisogna rifare la connessione (WPA, DHCP e tutto) perché quasi certamente si è bloccata... Sotto Ubuntu 9.04 ho riscontrato inoltre un problema audio: il volume è bassissimo e, anche regolando tutto al massimo, si sente qualcosa solo dalle cuffie ma al limite dell’udibilità.

Cerco informazioni in rete e scopro addirittura una partnership Novell/HP per supportare pienamente questo portatile con Suse Enterprise Desktop Edition.

Wow!

Poiché non ho intenzione di sottoscrivere un contratto con Novell solo per ascoltare due mp3, né di installare un sistema operativo “a scadenza”, ho pensato che avrei potuto ottenere buoni risultati con la equivalente distribuzione “Community”, cioè OpenSuSE. Purtroppo l’installazione si interrompe al momento di avviare il server grafico, e si rimane a tu per tu con una shell, ancorché dentro un simpatico framebuffer...

Bah. A questo punto provo a ritornare da mamma Debian, ma con poca fede, sinceramente. E invece scopro con gioia che la scheda audio funziona perfettamente e il volume è giusto, sia da cuffia che da speaker interno.

Ottimo! Però qui il driver per la scheda wireless manca. Mamma Debian non distribuisce la stessa robaccia di Ubuntu. Dal canto suo, il driver open source (b43) non supporta la particolare variante della Broadcom BCM4312 presente nel portatile. Seguendo le indicazioni alla stessa pagina, do il comando:

lspci -vnn | grep 14e4
che restituisce:
14e4:4315
e dalla stessa tabella vedo che il supporto è “in progress”: niente driver stabili, bisogna compilarseli dagli ultimi sorgenti in sviluppo, confidando che fra qualche settimana o al massimo qualche mese questo post non servirà più (ma comunque dovrete compilarvi almeno un kernel stabile recente, perché se aspettate il pacchetto Debian fate prima a usare un bel cavo Ethernet!).

Quasi dimenticavo che avrete anche bisogno del pacchetto Debian b43-fwcutter contenente tutti i firmware, binarî e proprietarî, di cui non si può proprio fare a meno.

Se al riavvio il caricamento del modulo dovesse fallire con un conflitto di simboli, o qualcosa del genere, tornate nella directory coi sorgenti di Linux Wireless e ridate:
make install
make unload
modprobe b43
O, al limite, ricostruite l’initrd...

giovedì 9 luglio 2009

Sempre più ReSTful


Tempo fa mi dannai l’animo. Poi ho cambiato linguaggio. E ho scoperto che, più o meno, abbiamo pensato tutti la stessa cosa.

Cfr. Introduzione a Sinatra.

mercoledì 11 febbraio 2009

Da grande non voglio fare il fisico computazionale

File:IEEE 754 Double Floating Point Format.svg

Questo commento qui non fa una piega ed è, guarda caso, quello che mi sta accadendo.

Volevo portare su Windows la libreria scientifica GNU, senza emulazioni Unix o POSIX, quindi senza usare Cygwin ma preferendovi MSYS/MinGW.

La GSL è scritta in puro ANSI C, quindi deve essere portabile come software nativo, in altre parole: niente DLL aggiuntive.

Purtroppo, al momento del make check il test dell’integrazione Monte Carlo fallisce, perdipiù con un errore di ~10-3, che è enorme se paragonato alla “doppia precisione” in uso nei calcoli.

Il problema è vecchio, ma ci si accorge subito che scompare se si compila senza ottimizzazione.

Ohibò.

Ho dato uno sguardo alla documentazione del compilatore per capire a quali singole opzioni corrispondesse il flag -O2. Le ho messe lì, tutte, ad una a una, per vedere quale generasse il problema, ma con mia sorpresa scopro che espandendo -O2 nella lunga lista di opzioni il problema non c’era più.

Ohibò.

Così scrivo alla lista della GSL; ma nessuno mi cagca.

Allora scrivo alla mailing list del compilatore. Con un po’ d’aiuto riesco a trarne un bug report appena decente. Vengo rimpallato dal tracker di un progetto al tracker dell’altro, e solo alla fine di una lunga discussione riesco a convincere Brian Gough a risolvere la cosa dal lato della libreria GSL.

domenica 8 febbraio 2009

Stato vegetativo permanente

Fra le righe di queste citazioni sul morire di fame e di sete sembra quasi di leggere che l’eutanasia vera e propria sarebbe stata un gesto di maggiore pietas che sospendere l’alimentazione artificiale.

Chi cita i testi sacri volendo apparire stringato e brillante finisce per fare un cattivo servizio persino alla propria causa: più sotto, augura la morte a un certo numero di persone, in coda ad un post che tratta perlopiù di calcio e di televisione.

A tutti coloro che vogliono trasformare l’esistenza di una persona in un’agonia senza fine vorrei invece augurare di vivere a lungo e in ottima salute, almeno per i prossimi centocinquanta anni: da qui ad allora inventeranno sicuramente una macchina in grado di far battere il loro cuore e persino di far fare loro la cacca per l’intera rimanente eternità.

domenica 4 gennaio 2009

Da grande voglio fare il fisico computazionale

[scheda perforata]Perdonate la battuta infame, ma dopo aver fatto una tesi con Maxima ora vado a caccia di minimi.

Succede che devi fare un fit. Non lineare nei parametri, magari pesato e - mi voglio rovinare - vuoi pure determinare l’errore statistico dei parametri, uno dei quali, per la cronaca, è la gap nello spettro di un superconduttore.

Sounds cool, eh? E vabbeh, diranno i miei venticinque milioni di lettori che attendevano con ansia che il blog tornasse online. C’è un miliardo di programmi in giro! Il problema è che il modello teorico da adattare ai dati sperimentali non è dato da una funzione espressa analiticamente ma da un integrale che puoi calcolare solo per via numerica. Provate a chiedere a Mathematica di fare FindFit su un modello del genere: vi riderà in faccia.

Se c’è una cosa che invidio ai fisici delle alte energie è la possibilità di intitolare un post Hot photos of PAMELA. Da quelle parti gli esperimenti hanno un nome proprio, mentre i fisici della materia condensata... ognuno ha il suo laboratorietto. Non ditelo troppo in giro, ma c’è persino chi è riuscito a costruirsi un microscopio a effetto tunnel nel garage di casa. Insomma, il vantaggio è che puoi sentirti ancora un ragazzo di Via Panisperna e non il dipendente di una multinazionale. Il rovescio della medaglia è che nell’analisi dei dati i particellari sono imbattibili. Ho provato ad attingere alla loro fonte, ma leggendo il manuale di MINUIT non mi è parso di trovare nulla che facesse al caso mio. Però mi sono commosso, e ho pensato che in qualche momento nella Storia dev’essere sicuramente esistita un’implementazione per schede perforate.

Per venire a cose più moderne, ho dato un’occhiata a ROOT ma è troppo complicato (come il linguaggio in cui è scritto, del resto)! Ed è a questo punto che una vocina che risuonava nella mia testa da mesi si è fatta molto più insistente.

Quella vocina sussurrava: «GNU Scientific Library... GNU Scientific Library... GNU Scientific Library!». Credo di essere stato l’unico utente di YouTube ad averla mai usata come tag. La bozza di programmino è qui, niente Autoconfversioning per ora, perché siamo gente grezza.

Il punto è che sto avendo dei ripensamenti. Scrivere in C mi sembrava la cosa più naturale, avevo escluso linguaggi di più alto livello perché volevo performance e la complessità computazionale era alta, e poi perché è il linguaggio in cui è scritta la libreria stessa; a detta degli autori, ottenere dei binding per Python, Perl etc. dovrebbe essere relativamente facile; sta di fatto che, da quanto ho visto, allo stato quasi nessuno di questi binding è completo al cento per cento.

Il punto è che questo post è stato scritto prima di Natale, e lo sto completando solo ora. Più o meno come il programmino. Succede che, ad un certo punto, cominciano a servirti troppe variabili globali o - in alternativa, ma è lo stesso - le tue funzioni devono rimpallarsi sempre gli stessi parametri (o il puntatore a una struttura, fate voi), e questi parametri (globali de facto, se non di diritto) aumentano in numero man mano che il tuo programmino diventa un programmone flessibile e configurabile.

Insomma, ti accorgi che il paradigma a oggetti è quello che più si avvicina al problema che vuoi risolvere. C’è scritto vorrei ma non posso ovunque, tra le righe del tuo codice. Cominci a pensare che il C++, forse, a qualcosa serve, specie se il tuo punto di partenza è un programma o una libreria in C e tu sei poco più che un dilettante. Eh, sì, perché «Può sembrare paradossale, ma credo che per programmare bene con il modello procedurale, bisogna essere veramente bravi».