INTED2010
După cum ziceam, am fost la prima mea conferință, INTED2010, la Valencia. Pe numele complet International Technology, Education and Development Conference, conferința este o ocazie de întâlnire pentru profesori, ingineri și alte nații de oamenii interesați, în special, de utilizarea tehnologiei în educație, dar și de educație în tehnologie. Mai are două conferințe soră, la Barcelona și la Madrid, și adună oameni din ceva de genul 80 de țări. Sunt convins că undeva în tot sistemul ăsta intra și ocazia pentru profesori de peste oricare din oceane, dar și de mai de-aproape de a îmbina utilul cu plăcutul și de a avea un pic de vacanță în Spania :)
Anyway, eu n-am mai fost la conferințe de-astea vreodată, așa că am avut megamorcov, și am tot negociat cu mama ce haine să-mi iau și de-astea, ba chiar m-am și ras! :D Am avut de prezentat două articole pe care le-am scris împreună cu profu' (sau mai repede, le-a scris profu' împreună cu mine). Unul s-a intitulat Overusing the Internet - Problems in technical education și discuta probleme legate de superficialitate cu care studenții noștri folosesc Internet-ul pentru a face copy + paste și-atât. Sunt multe de zis aici, multe de dezbătut, și nu vă pot da să citiți articolul că am predat drepturile de autor spaniolilor pentru conferință, așa că vă invit la povești pe tema asta.
Celălalt articol a fost mult mai direct, o prezentare a unui proiect care se întâmplă la noi la facultate. Articolul s-a intitulat Education by research, și prezintă o idee pe care încercăm să o implementăm acum în echipa noastră, prin care să îi încurajăm pe studenți să se implice în proiecte de cercetare, ca remediu la plângerea constantă că nu fac chestii practice în facultate.
Am avut megamorcov la prezentare, la amandouă. Am lucrat și am repetat prezentările de zeci de ori, să încerc să le bag în 12 minute. La prima sesiune am înțeles prost și nu am dus prezentarea la timp (dar s-a rezolvat cu bunăvoința ălora). La a doua a mers mai bine, deja știam cât de cât despre ce e vorba. Am găsit mult mai ușor să stau să îi ascult pe alții după ce am terminat eu de prezentat, și m-am plimbat între cele 5 piste paralele (parallel tracks, oare așa s-o zice în română?) căutând lucruri interesante.
Nu pot să zic ca am găsit ceva cu adevărat valoros, multă lume prezenta situația din diferite locuri, dar mi s-au părut un pic mai aproape de realitate decât ce se întâmpla la noi. Am ascultat oameni care folosesc cu succes Podcasturi în cursuri, oameni care folosesc înregistrări video pentru a ajunge la studenții care nu pot veni la curs, am auzit despre școli care sunt flexibile și se mulează pe nevoile studenților. Evident, sunt convins ca nu e roz situația nici la alții, dar atitudinea generală este cu totul alta ca la noi (și mi-a confirmat mai multe din presupunerile mele legate despre cum se face / cum ar trebui să se facă educația la nivel universitar).
În ultima zi, pe 10 martie, organizatorii ne-au oferit un tur (cu ghid cu tot) al Valenciei. Am văzut niște chestii fenomenale, cum ar fi Piața Centrală (unde mi-am dat seama că cultura mea despre viața marină este exact 0) și Ciutat de les Arts i les Ciències, care este un complex fenomenal de clădiri mega SF făcute de un arhitect de-al lor (unu Calatrava). Am mai dat o tură prin oraș, ne-a arătat ghida una alta, apoi am avut liber. Am fost la concertul de petarde din piața publică (care se întâmpla în fiecare zi în săptămâna dinainte de festivalul lor local, Fallas) și apoi am hotărât să îmi construiesc niște cultură marină și am fost la acvariu (care este cel mai mare din Europa :P), unde am și învățat că cultura se plătește, pentru că am dat aproape 20 de euroi pe bilet :).
Conferința a fost la un hotel de cinci stele, destul de fancy, dar eu am stat la unul de 4 stele, mai jos pe drum, către port, la 5 minute. A fost evident mai ieftin, dar m-am simțit foarte bine, cred că mai bine decât mi-ar fi fost la 5 stele. E un hotel micuț, într-o clădire veche, se numește Kris Consul del Mar și are niște scoruri megaok.
Sunt multe de zis despre Valencia, și e o destinație bună pentru un weekend de fugit de acasă. Am văzut foarte multe piste de biciclete, și mulți bicicliști. Au port la mediterană, care e aproape de centrul orașului. Aveau un râu ce trecea prin oraș și se vărsa în mare, dar după ce a făcut urât răul prin anii '50, l-au mutat mai într-o parte și au tras ditai parcu pe unde trecea râul odata. A, și încă o chestie, când cauți pe Google Maps să vezi pe unde sunt stațiile de metrou, îți zice pentru fiecare stație când vine următorul metrou pentru fiecare direcție. Isn't that just cool?
Mai multe poze, aici.
Visiting UL
Iei am fost în vizită la University of Limerick, unde lucrează mama, să mă întâlnesc cu niște colegi de ai ei, să mă sprijine un pic cu îndrumare pentru proiectul meu de doctorat. Am mai fost în vizită la UL (și am mai spus că e beton), dar acum, după ce am terminat și eu facultatea, m-a lovit ca un loc excelent de a face școală :)
Am fost pe la bibliotecă, care are mai multe etaje, și mese cu prize de laptop, și un sistem automat de împrumutat / returnat cărți. Pentru comparație, biblioteca din EC-uri de la noi de la facultate este o cameră un pic mai mare decât laboratorul nostru, în care spațiul pentru studenți are 2mp, în care e veșnic întuneric și dacă vrei acces trebuie să mergi la Polizu la gară să te "ia în evidență". Oh yeah!
Am fost și am vorbit jumatate de ora cu Mikael Fernstrom, care este șerif pe auditory stuff, și care m-a îndrumat spre mai multe chestii de citit, și de experimentat, și am primit de citit chiar și o teză de doctorat care prezintă un posibil setup pentru realizat experimente pe sunet într-un mediu virtual :D
PS. de obicei iarba este mult mai verde decât este acum, e foarte frig pentru Irlanda, toată iarna a fost așa :P
Doctorat progress
Am tot zis că o să vorbesc un pic aici despre proiectul meu de doctorat și în ce stadiu suntem acum cu el. Here goes.
Tema generală a proiectului este conversia imaginii în sunet, cu aplicații în ghidarea nevăzătorilor. Adică vrem să transmitem unui nevăzător un sunet care să descrie scena pe care o are în față, în sunet. De aici, pornind de la conceptul de brain plasticity, sperăm ca nevăzătorii să poată să își re-antreneze zona din creier responsabilă cu captarea imaginii pentru a prelucra informația sonoră pe care o suprapunem noi sunetelor existente. Există ceva cercetare în domeniul ăsta, și eu sunt în procesul de a descoperi exact câtă și ce rezultate are.
Între timp, ne-am propus să facem niște teste, să ne facem o imagine asupra diferitelor abordări posibile. Continuând munca începută de Alex Iordan la proiectul lui de diplomă, am scris o aplicație care folosește gstreamer (pentru captură), PIL (pentru procesare imagine), glade și pygtk (pentru interfață) și pyaudiere (pentru generare sunet), pe care să o putem folosi în teste. Mi-a luat ceva vreme până am citit toate cele, dar acuma merge destul de ok.
În principiu, preiau imaginea de la un webcam, o trec în grayscale și apoi în imagine binară (alb / negru). Pe imagine definesc macropixeli (pentru a mă ajuta cu viteza de procesare :P) în funcție de care decid dacă imaginea pe care o văd este în interiorul unei ținte, dacă am prins și din țintă și din fundal sau daca văd doar fundal. Evident, testele sunt extrem de simple, cu doar două culori, ținta și fundalul, și doar două dimensiuni.
Obiectivul testelor de acum este de a vedea dacă prin mișcarea capului și limitarea puternică a dimensiunii imaginii poți să îți dai seama care sunt formele pe care le ai în față (curbe, unghiuri drepte, colțuri, dimensiuni ...). Săptămâna trecută, înainte să plec la Alba, am făcut un prim rând de teste, și a mers destul de bine. Evident, sunt și lucruri care nu au mers atât de bine (spre exemplu, sunetul pentru cele trei cazuri posibile este continuu și înnebunitor), dar pentru asta avem versiunea 0.02 :P
Astăzi am făcut partea de binarizare și m-am mai jucat un pic cu pyaudiere pentru generarea de sunet intermitent.
Deși proiectul ăsta este mai puțin despre software decât despre alte chestii, ta-daaa, un screenshot din varianta curentă a aplicației:
IATED2010, Valencia
În ultimele două săptămâni am contribuit, cât am putut, la două lucrări pentru INTED2010 (International Technology, Education and Development Conference). Point is că am cedat drepturile de autor pentru ambele texte, aș vrea totuși să notez pe scurt ideile principale:
Overusing the Internet - problems in technical education descrie problemele pe care departamentul în care sunt doctorand se confruntă când vine vorba de rezolvări ale diferitelor teme și proiecte, multe din ele fiind inspirate puternic din ce se găsește pe Web. În principiu este vorba despre dezamăgirea noastră că toată lumea merge pe calea cea mai ușoară, și că oamenii sunt foarte creativi când vine vorba de orice altceva decât ce și-au ales, cu mâna lor, să învețe.
Education by research - descrie implicarea studenților la diferite nivele ale pregătirii lor (anul 4, masteranzi) în diverse activități de cercetare, în cadrul unui proiect mai mare care se desfășoară în departament.
Anyway, a durat o grămadă de vreme și o grămadă de recitiri până când am ajuns la forme cu care să fim mulțumiți :) Între 8 și 10 martie voi fi la Valencia să susțin lucrările în cadrul conferinței :D
Footprints
Pentru utilizatorii de Linux, există o distribuție opensource de unelte pentru ceea ce se numește Electronic Design Automation, ce se numește gEDA (de la gplEDA). În nici un caz la fel de atrăgătoare ca și GUI și la fel de puternică ca feature-uri ca și CAD-urile profesionale, comerciale, uneltele gEDA au în schimb niște avantaje interesante pentru studenți, inventatori, și alte categorii de persoane care nu folosesc calculatorul DOAR pentru dezvoltare de circuite :). În primul rând, sunt gratis ;). În al doilea rând se bazează pe formate deschise, și aici nu mă refer doar la codul efectiv al aplicațiilor, ci și la cum sunt definite componentele.
Pentru orice componentă pentru care nu există încă modelul lui în biblioteca standard, poți căuta pe gedasymbols.org (sau pe alte siteuri) după dispozitivul tău, sau, dacă nu există, poți să-l scrii (sau să-l desenezi) de mână, după specificațiile producătorului. Formatul, atât pentru modele simbolurile pentru scheme, cât și pentru footprints (care nu știu cum se traduce în română în contextul ăsta), este text și este destul de intuitiv :D
Anyway, unul din proiectele "de weekend" la care lucrez era pe standby din cauză că nu aveam un footprint pentru o mufă RJ-45 mamă cu transformator și cu leduri integrate (asta a mea e făcută de CviLux, există mai șmechere, făcute de MagJack, eu am luat-o de la Comet). Simbolul pentru editorul de scheme electrice l-am făcut repede (acolo nu trebuie să știi decât ce pini are), iar footprint-ul mi-a luat vreo oră și un pic, pentru că e migălos și trebuie să măsori, să calculezi, să mai corectezi dacă ești bleg și greșești sau uiți ... .
So, am luat așa ceva (asta e MagJack, a mea e copia mai ieftină :P)

Asta e un RJ45 mamă cu ceva protecții și leduri, exact cum se găsește în placa de bază la mai toate calculatoarele
Și am facut un simbol pentru gSchem. Simbolul se poate desena foarte ușor, tot în gSchem, în funcție de necesități, poate fi editat și într-un editor de texte pentru a aranja diferite aspecte. Există și mai multe soluții semi-automate pentru generarea de simboluri, care sunt de folos când ai componente cu mulți pini (>20), spre exemplu. În cazul meu, a fost simplu, am luat un simbol de mufă RJ45 mamă simplu și am adăugat pinii pentru leduri.
Și apoi am făcut un footprint, care este reprezentarea fizică a mufei, și care respectă dimensiunile propuse de producător (distanța dintre pini, grosimea găurilor pentru pini). Am avut grijă ca numerotarea pinilor de pe simbol să se potrivească cu pinii de pe footprint. Pentru realizarea circuitelor (plasarea componentelor, trasarea rutelor) există, în același pachet, programul (denumit sugestiv) PCB. La fel, footprintul se poate desena în PCB, se poate scrie de mână, sau se poate desena în PCB și apoi aranja de mână. Există chiar dezvoltatori care au făcut scripturi pentru generarea automată de footprinturi.
Aici sunt și fișierele pentru simbol și pentru footprint, ca în cazul în care mai are cineva nevoie, să nu mai piardă timpul să le facă :D
Rețele Industriale Eterogene și Tolerante la Defecte
Semetrul ăsta, înafară de documentarea și punerea în temă pentru doctorat, am dat o mână de ajutor la o materie numită Rețele Industriale Eterogene și Tolerante la Defecte. Am pus acum ceva vreme niște prezentări aici pe blog, care au fost prezentări pe care le-am făcut la cursurile de RIETD cand au venit mai mulți studenți decât profesori (s-a întâmplat de vreo trei ori).
Înafară de cursuri, a fost o serie de teme de laborator, în care s-au implicat 8 studenți din cei aproximativ 20 de la modulul lor de master, și 6 au predat temele la sfârșitul semestrului. Când le-am propus, lui Alex și mie ni s-au părut temele mișto, dar se pare că lor nu :). Temele se ocupau cu roboței Mindstorms NXT, cu comunicație Bluetooth, cu comunicație ZigBee și cu alte trăznăi în aceeași gamă (lista completă cu temele și cu descrierea lor este aici).
Până la urmă, am avut niște rezultate interesante, spre exemplu toate cele 3 echipe au implementat comunicația Bluetooth între doi roboți, într-o formă sau alta. Una din echipe s-a evidențiat în mod deosebit, prin implementarea unui task condus prin Bluetooth între mai mulți roboți, dar și un sistem de pasare a mesajelor printr-un nod central și o interfața de conducere a robotului prin intermediul unui GUI cu un volan, de pe PC.
Băieților din echipa asta din urmă le-am propus să își mai rafineze proiectul și să încerce să scrie un articol pentru conferința Eurobot.
Înafară de studenții de mai sus, au mai fost trei studenți la doctorat care au ales materia asta ca una din cele 4 materii care trebuie făcute în pregătirea doctorală, care în principiu toți trei s-au ocupat de ZigBee.
Cu acordul lor, voi pune codul în SVN-ul de la robot, așa că dacă sunt pasionați Mindstorms NXT out there, să poată să refolosească ce au făcut ei :)
Testul final pentru materie a fost grilă și l-am pregătit eu. Am încercat să pun întrebări de bun simț, cu răspunsuri nu neapărat evidente dar deductibile și ușor de identificat chiar dacă dădeai numai un ochi pe prezentări, nu și pe documentația relativ serioasă pe care am pus-o pe site. Totuși, din 19 întrebări, doar 2 din cei 8 studenți a făcut mai mult de jumătate, ceea ce m-a cam întristat. Adică măcar pe prezentările care erau pe site puteau să dea un ochi...
New toy :D
Am tot zis că o să scriu despre ce fac pentru doctorat, dar tot n-am apucat. Dar o să scriu. Ideea e că astăzi a venit în sfărșit noul webcam (că webcamul vechi eram cam pușcat), un Canyon CNR-WCAM813 cu 50 de lei de la eMag, Acuma, ideea a fost să construim un dispozitiv experimental (adică cu care să putem face experimente) în care webcam-ul să vadă ce văd eu, inclusiv când îmi mișc capul. Ne-am gândit la un sistem stil frontală (pentru ne-munțomani, frontala îi lanterna aia ce ți-o pui pe cap :P), care probabil va fi și soluția finală, dar pentru prima tură de experimente am folosit o șapcă, primită sponsorizare de la cei cinci care au rămas patru (mulțumeeesc).
Un pic de bormașina, niște prinzătoare de plastic, și, taaa-daaaa:
La primele teste, inclusiv unghiul camerei este bun, as in centrul imaginii este drept în fața mea :) One more picture:
Grafice rapide pe Linux
Deși nu ne-am calificat la FRC2010, am învățat mai multe lucruri utile și pentru multe alte feluri de proiecte. Spre exemplu, primeam date de la accelerometrul ala, și le salvam pe un card în microSD. Pentru mine, pe Linux, a fost destul de nasol să fac graficul acceleratie(x) în OOo Calc, pentru că erau foarte multe puncte, și efectiv nu se descurca, și graficul rezultat era greu de aranjat.
Așa că am început să folosim Octave, care este un soft de genul Matlab (evident, opensource și mai puțin dezvoltat ca Matlab), și interfața grafică QtOctave. Am luat datele de la accelerometru, dar și punctele unde am înregistrat noi curbele, și valorile de prag pe care le calculam la fiecare tură. Ce mi-a s-a părut foarte tare a fost că în 20 de minute am făcut un script python cu niște expresii regulate, care spărgea fișierul provenit de la mașină în mai multe seturi de date, și o funcție Octave care să tragă niște grafice după care să ne estimăm noi algoritmul. Practic, din trei clickuri, era gata tot, și și foarte repede.
Octave-ul e doar este o soluție la îndemână pentru învârtit datele, pentru aranjat în matrici. De acolo, de fapt octave-ul folosește gnuplot, care se poate folosi și standalone, și care și el este o super sculă :D
Anyway, toate sculele astea sunt gratis, și, even better, opensource.
EpicFail, cu picături de pozitivitate
Luni a fost preselecția pentru faza pe facultate a Freescale Race Challenge 2010, despre care am mai scris mai demult. Foarte pe scurt, echipele de pe la noi din departament s-au calificat și au trecut mai departe, toate mai puțin a mea :). Ce m-a lovit cel mai tare nu a fost că nu ne-am calificat, ci că nici nu am apucat să arătăm ce știm. Cu programul nostru mașinuța a "murit" în tura de învățare, înainte să facă orice deștept, la o viteză cu care alte echipe au mers destul de bine. Nu știu, cauciucurile, uzura mecanică a motorului, nu știu ce s-a întâmplat. Cert este că nici nu am apucat să concurăm.
Aaaaaanyway :) Am lucrat cu Adi un weekend încheiat la program (30 și ceva de ore cu pauză de budă și de ciorbă de burtă), și alte câteva ore împrăștiate prin decembrie. Am dezvoltat un algoritm destul de deștept de învățare, care parcurgea traseul, îl reducea la un set de curbe, și apoi îl scria pe card într-o formă redus (fișierele de învățare aveau până într-o sută de bytes).
După aia aveam un algoritm de rulare care prima data citea într-un array curbele astea, și verifica daca nu cumva s-a trecut la urmatoarea curbă în funcție de ce facea accelerometrul ala care masura accelerația laterală. Am mai făcut noi un fel de filtru acolo, să se sincronizeze bine pe circuit, și i-am mai zis să accelereze pe o bucată (gen 40 - 50%) din liniile drepte. Am încercat să mai implementăm și o accelerare pe ieșirile din curbă în cazul în care după curbă urma linie dreaptă, dar am renunțat la asta, pentru că era prea târziu.
Duminică după masa devenise aproape imposibil să putem testa extensiv algoritmul, l-am testat cât o fost, și i-am dat send. Ghinion cu tura de învățare.
În cazul în care v-ați întrebat vreodată cum merg mașinuțele astea, uite, o tură de test a lui Matei:
Django
Am scris de mai multe ori aici că mă jucam de-a dezvoltatul unui framework pentru aplicații web, scris în PHP. Aveam o grămadă de idei (le mai am și acum) și am petrecut destul de multă vreme gândind (și scriind cod) pentru asta. Totuși, cu cât m-am gândit mai mult, cu atât am dat de mai multe probleme (interesante, ce-i drept, de rezolvat). Zilele astea, pentru că am fost mai liber, am început să mă uit puțin la framework-uri opensource disponibile.
Am dat un ochi la Symphony, dar nu m-a prea atras. E drept, puteam să sap mai adânc, dar am ales să mă joc puțin cu Django, în schimb. Django este un framework (foarte) cul scris în python, care implementează toate ideile mele pentru yPHP and more, și le implementează exact așa cum mi-am dorit eu (și n-am reușit încă) pentru yPHP. În plus, python e un limbaj în care e absolut fenomenal să scrii cod (bine, aici Dan ar strâmba din nas și ar zice ca e total ne-eficient blah blah blah :P).
N-am reușit să merg foarte departe, m-am jucat un pic doar cu o parte din componentele framework-ului, dar pare super-interesant. Și, deși comunitatea developerilor pe django / python pentru web este minusculă pe lângă comunitatea PHP, calitatea documentației este admirabilă.
Două chestii pe care vreau să încerc să le implementez sunt o interfață web pentru un gateway sms (Peticel pentru prieteni) și un mic proiect care să aibă de-a face cu google / yahoo maps. Revin cu detalii ;)



















