PumpGraph

pumpgraphE’ un oggetto JavaScript che permette la generazione dei grafici interattivi di funzionamento di una pompa, con possibilità di scegliere punti di lavoro e verificare successivamente i vari parametri nelle condizioni prescelte.

Ho seguito l’estensione di questo progetto quando era un applet Java (aggiungendo interpolazione e rendering del testo con attributi html), e ne ho recentemente fatto il porting completo in JavaScript, per avere la compatibilità con tutti i dispositivi compresi quelli mobili.

 

SyncPlayer

Questo l’ho scritto come proof of concept per verificarne la fattibilità: si tratta di un media player per piattaforma Android con l’aggiunta di una componente  di rete che permette la sincronizzazione della riproduzione video tra dispositivi.

L’idea originale è quella di utilizzare gli oramai diffusissimi micro sistemi Android (il cui capostipite è stato il MK802) per proiettare su un certo numero di schermi separati di una installazione multimediale. Soluzione a bassisimo costo che prevede, per ciascuna postazione, oltre al monitor/proiettore con ingresso HDMI un MK802 (0 equivalente) e una microSD con il materiale da riprodurre.

Uno dei sistemi viene configurato come coordinatore, e su questo viene caricata una lista con i palinsesti. Quando tutti gli altri sistemi partono e si collegano alla WiFi, il coordinatore avvia le sequenze e comanda tutti gli altri.

(Niente screenshot, dato che SyncPlayer non ha nessuna interfaccia utente)

MODBUSDevManager

Modbus1Pacchetto composto da una libreria di comunicazione e dalla relativa GUI per la gestione dei profili di una serie di dispositivi di misura e conteggio multicanale, entrambi scritti in C#.

Il programma prevede la possibilità di caricare, salvare e clonare da un dispositivo ad un altro i profili di configurazione dei contatori una volta che questi sono stati personalizzati per gli utilizzatori su cui sono stati montati (di solito barche).

Come valore aggiunto, l’editor permette la modifica e il controllo di coerenza di ciascuno dei parametri presenti nel profilo, e la lettura in tempo reale dei valori misurati.

LightPlayer

2014-01-08 20.27.14Un sequencer luci a 16 canali con trigger audio fatto per una installazione fatta da Marc Vincent Kalinka presso la Pinacoteca Brera.

Il sequencer è composto da due parti. La prima è il firmware per il CANXTRA. Il CANXTRA è (era) una scheda di sviluppo della GHI Electronics, basata sull’Embedded Master Module. L’Embedded Master Module è una scheda integrata che implementa il DotNet Micro Framework (NETMF) di Microsoft e permette quindi di eseguire direttamente compilati .NET. Il vantaggio di schede del genere è quello di avere una gestione di periferiche ad alto livello estremamente semplificata (USB host, USB client, SDHC con file system, TCP/IP, display TFT e OLED con grafica) controbilanciata però da una velocità di esecuzione non molto elevata, problema che nel caso in questione non era rilevante, permettendo comunque una sincronizzazione temporale delle sequenze precisa al centesimo di secondo.

La seconda parte è l’elettronica di contorno, composta da una sezione di alimentazione per alimentare il CANXTRA, da due banchi da 8 canali a TRIAC per pilotare le lampade, e da un buffer necessario per il trigger audio.

Approfittando delle caratteristiche del NETMF, la configurazione avviene tramite un banalissimo documento di testo in cui ci sono i timecode e le operazioni da fare sui canali. Basta salvare il file su una pendrive USB, infilarla nella porta del CANXTRA, attendere che il sistema riconosca la chiave e legga il file,  togliere la chiavetta, e il gioco è fatto.

TNGClient

2014-01-07 09.25.15 2014-01-07 09.25.30Mi serviva un progetto come “scusa” per iniziare a sviluppare sotto Android (ambiente mai approcciato prima) e il collega rompiscatole che mi ha sfidato sul discorso PortaleTNG me ne ha fornita una perfetta.

Mentre lui ha riempito la giornata di “Adesso lo faccio, vedrai!” io quatto quatto mi sono scaricato Eclipse, l’ADK, ho installato il tutto, e in poco meno di 8 ore ho scritto TNGClient (e il relativo web service) :)

Il suo uso è evidente dalle due schermate, l’applicazione è molto pratica da usare senza praticamente dover configurare nulla se non le credenziali del proprio account aziendale. Come primo progetto assoluto per Android, devo dire che non è uscito niente male.

BetHarvester

BetHarvesterBetHarvester è un web scraper multithreading scritto in C#.

Il suo scopo è quello di interfacciarsi in http/https con un gran numero di bookmakers interpretando dinamicamente le pagine web per cercare le quote migliori accoppiando gli eventi e le tipologie di scommesse e raggruppandone le quote indipendentemente dalla gerarchia che i vari bookmaker usano per la visualizzazione.

Il programma costruisce un grosso database con tutti i dati recuperati e poi, tramite un insieme di regole modificabili in ogni momento, associa i dati tra i diversi bookmaker ed estrae le quote più vantaggiose 0 quelle errate a favore dell’utente.

Ho scritto il programma come “proof of concept” ma non l’ho mai usato, anche perchè non mi piace scommettere (e poi mi dicono dalla regia che sarebbe alquanto illegale). In compenso è stata un’ottima occasione per divertirsi un po’ con il multithreading e con le “peculiarità” che la sua gestione in C# comporta, compreso l’accesso thread safe ai componenti della GUI.

BTW: Nonostante io non scommetta mai, in questo particolare caso ho scommesso con una persona che sarei riuscito a realizzare questo software, considerato abbastanza “impossibile” e…

ho vinto io. :)

 

CQC

CQCQuesto è un piccolo programmino scritto in C# per riutilizzare vecchi portatili come display numerici per punti vendita (“serviamo il numero…”)

In realtà è nato più o meno come uno scherzo: mi è stato infatti chiesto da un caro amico come gadget da mettere in ufficio per “gestire” le richieste dei colleghi… CQC infatti sta per “Colleagues Queue Counter“, ma poi qualcun altro l’ha usato seriamente :)

Tornando al gadget, è possibile personalizzare colori, suono per l’avanzamento del contatore, immagine di sfondo e stile delle cifre. Non ho mai avuto occasione di creare un installer, ma tecnicamente questo l’ho rilasciato come freeware, quindi se vi serve, basta chiedere.

MAGE – Medical Agenda

mage

Una web application (VB.NET/ASPX e db MySql) per la gestione dei turni delle sale di uno studio medico associato, composta da un calendario con vista mese per la gestione delle prenotazioni da parte della segreteria, e la possibilità di stampare le schede giornaliere degli appuntamenti da dare ai singoli medici, e il prospetto sala per sala.

Mage2In seguito ho aggiunto anche una parte per stampare fatture e ricevute per le prestazioni fornite.

L’azienda me l’ha chiesta, ma non è mai stata usata, che io sappia.

Chatrooms

Questa è una piccola chat multistanza che avevo scritto come esperimento e che poi abbiamo anche usato in produzione per un certo periodo. Ha la possibilità di gestire un numero arbitrario di stanze, protette o meno da password, con un numero arbitrario di utenti, e gestisce un sottoinsieme dei comandi IRC.

La particolarità di questa web application è che è il traffico è tutto http “base”… il suo traffico passa indenne, infatti, attraverso qualunque proxy io abbia testato che permetta il traffico web nelle configurazioni più ristrette possibili.

E’ nato come applicazione a sè stante (una volta richiesto l’accesso viene inviato un token via mail che funziona solo per quella sessione) ma poi avevo fatto in modo che il sistema recuperasse i token di autenticazione anche da uno o più webservice esterni, e l’ho accoppiato sia a PortaleTNG che a Prospera.

IrishStones

IrishStones (www.irishstones.org) è un sito dedicato interamente ai siti megalitici e medioevali irlandesi gestito da una sola persona. E con “gestito” intendo dire che tutte le foto nel sito (quasi 5000, ad oggi) e tutte le informazioni relative sono state prese da lui, sul luogo, nell’arco di numerosi viaggi in Irlanda.

Ho scritto per lui un CMS dedicato, per permettergli di poter catalogare ed archiviare tutte le informazioni legate ai siti e alla loro localizzazione geografica, e per permettere la consultazione in maniera agevole, con funzioni di raggruppamento geografico (monumenti nelle vicinanze, segnalazioni su google maps, ecc…) e riferimenti alle OS maps, molto utili per pianificare i propri viaggi.