Katowice, miasto otwarte — kilka słów o warsztatach wizualizacji informacji, w których brałem udział

Jak pewnie niektórzy z was wiedzą, od września do grudnia brałem udział w warsztatach wizualizacji informacji „Katowice, miasto otwarte”. Jest to projekt mający na celu propagowanie idei transparentnego miasta oraz otwartego dostępu do informacji, a w dalszej perspektywie (jak domniemam) dążący do stworzenia miejskiego API. W tym celu, postawiono na upowszechnianie kompetencji związanych z analizą, interpretacją i wizualizacją dużych zbiorów danych, budując w ten sposób zainteresowanie, ale również przyszłe zapotrzebowanie na tego typu rozwiązania. Organizatorem warsztatów był katowicki Medialab Katowice, a prowadzącym Krzysztof Trzewiczek. Co więcej, gościem specjalnym warsztatów, z którym mieliśmy wielką przyjemność konsultować nasze projekty, był prof. Krzysztof Lenk. Warto tu wspomnieć i polecić wykład, który profesor wygłosił w Rondzie Sztuki pt. „Wątpliwości projektanta informacji wizualnej”.

Udział w warsztatach był nieodpłatny, a do uczestnictwa mógł aplikować każdy. Niemniej, wymagane było zobowiązanie się m.in. do 100% obecności, w sumie w 6 zjazdach po 3 dni (piątek, sobota, niedziela średnio co dwa tygodnie). Ostatecznie, spośród nadesłanych zgłoszeń organizatorzy wybrali 14-to osobową multidyscyplinarną grupę, w skład której wchodziły osoby związane m.in. z projektowaniem graficznym, architekturą, planowaniem przestrzeni, analizą transportu, kulturą.

miastootwarte__www_sebastiansikora_pl_14

Pierwsza część warsztatów (6 dni) zakładała intensywną naukę metod pozyskiwania i przetwarzania danych — w tym posługiwanie się wyrażeniami regularnymi, programowanie w języku Python, korzystanie z webowych API, a także web scraping. Trzeba zaznaczyć, że uczestnicy, którzy mieli wcześniej kontakt z programowaniem, byli w zdecydowanej mniejszości, stąd konieczne było narzucenie ostrego rygoru pracy (nie do końca przystającego do pracowni ilustracji ASP, w której odbywały się warsztaty) oraz pilne odrabianie zadań domowych.

Kolejnym etapem było zidentyfikowanie zagadnień/problemów, które następnie miały być przedmiotem opracowania i wizualizacji — krótko mówiąc research. Na tym etapie, wyłoniły się cztery kilkuosobowe grupy projektowe:

  1. Larmo o zabytki: członkowie projektu zajęli się analizą rejestru zabytków Katowic, a także tego, w jaki sposób obiekty są wpisywane na tę listę larmoozabytki.pl
  2. Miejski Kuklok: trochę na wzór Sejmometru podjął próbę opracowania serwisu internetowego, monitorującego pracę katowickich radnych miejskikuklok.pl
  3. Jak działa miasto: w przystępny sposób wyjaśnia w jaki sposób przeciętny mieszkaniec miasta może zostać radnym rysiunaradnego.pl
  4. Dzieje się w Kato: zajmuje się analizą oferty kulturalnej Katowic, podejmując walkę ze stereotypem Katowic jako miasta, w którym nic się nie dzieje (członkiem tej grupy oprócz Bartoszo Chuderskiego, Pauliny Urbańskiej, Bartłomieja Witańskiego byłem również ja) dziejesiewkatowicach.pl

Pracę w mniejszych zespołach rozpoczęliśmy od doprecyzowania problemów, a także zbudowania dookoła nich historii, wraz z określeniem ich adresatów. W przypadku mojej grupy, kwestia była o tyle trudna, że nie dysponowaliśmy jeszcze danymi, a jedynie ich strukturą, to też trzeba było mieć na uwadze nie jeden, a kilka prawdopodobnych scenariuszy jakie mogą wyniknąć z późniejszej analizy. Międzyczasie trwały prace nad pozyskaniem danych z internetowych informatorów imprezowo-kulturalnych — w tym celu powstało kilka scraperów, w pisaniu których wspomagał nas Krzysztof. Niestety, część wyscrapowanych zestawów danych okazała się być niskiej jakości, z tego też powodu nasz projekt oparliśmy tylko o jedno źródło — oczywiście z nadzieją przyszłego powiększenia próbki o kolejne.
Niemniej w trakcie analizy doszliśmy do ciekawego spostrzeżenia. Na przestrzeni ostatnich lat katowicka oferta kulturalno-imprezowa, w okresach wakacyjnych znacznie się poprawiła i pod względem ilości wydarzeń dorównała okresowi roku szkolno-akademickiego. Może to oznaczać, że Katowice nie odpowiadają już tylko w sposób zachowawczy na wzmożone zapotrzebowanie na wydarzenia, podczas gdy uczniowie i studenci są związani nauką do przebywania w mieście, ale również są w stanie, zainteresować mieszkańców swoją ofertą kulturalną także w wakacje. Podsumowanie można zobaczyć pod wyżej wspomnianym już adresem www.dziejesiewkatowicach.pl.

Efekty naszych prac w formie wydruków można było zobaczyć podczas festiwalu Art+bits w Rondzie Sztuki. Obecnie są one przenoszone na strony internetowe do powszechnego wglądu.

art+bits
art+bits

Oczywiście projekty mogą wymagać jeszcze dopracowania, niemniej wraz ze swoim zapleczem metodologicznym oraz narzędziowym stanowią bardzo dobry punkt wyjścia do dalszych, bardziej zaawansowanych lub po prostu szerzej zakrojonych prac. Jeśli chodzi o aspekt edukacyjny warsztatów, oceniam go bardzo wysoko, a udział w podobnym wydarzeniu poleciłbym każdemu. Nie można nie docenić możliwości rozwinięcia całego szeregu umiejętności, począwszy od tych czysto programistycznych, jak programowanie w Python, czy też wykorzystanie RegEx (z których już nieraz miałem okazję skorzystać w pracy), po przez zmierzenie się z problemami pozyskiwania danych, ich przetwarzania, projektowania metodologii badań, personalizacji rozwiązań, prototypowania, projektowania architektury informacji, wizualizacji informacji, aż po pracę w grupie oraz zamawianie pizzy w wersji dla wegan. ;)
Co więcej myślę, że były to najlepsze warsztaty, w jakich brałem udział.
Ogromnym plusem był fakt, że nie było to jednodniowe spotkanie, jedynie zapoznające z uczestników z danym tematem, a kilkumiesięczne, zobowiązujące przedsięwzięcie, które obranym tematem potrafiło wręcz zmęczyć. Skoro już tak chwalę, nie sposób nie wspomnieć o niestrudzonym prowadzącym, który świetnie spełnił się w swojej roli, a także o możliwości poznania profesora Lenka oraz współuczestników.

Jeśli kogoś zainteresowałem, polecam śledzić poczynania katowickiego Medialabu, bo nie jest tajemnicą, że tego typu inicjatyw będzie więcej, z czego najbliższe to Open Data Day (22 lutego 2013).

Zobacz również:

Medialab Katowice: Interaktywny syntezator dźwięku

W trakcie czerwcowego długiego weekendu postanowiłem nie obijać się i wziąć udział w trzydniowych warsztatach Medialab Katowice pt. „Interaktywny syntezator dźwięku”. Formuła warsztatów zakładała działalność w ramach jednej z dwóch grup uczestników; pierwsza grupa budowała od zera syntezatory analogowe, druga grupa (której członkiem byłem i ja) budowała/programowała wymyślone przez siebie interfejsy/sterowniki do w/w syntezatorów, wykorzystując przy tym Arduino. Ostatniego dnia miała odbyć się prezentacja działających projektów. Niestety nie wszystko zadziałało — ze względu na problemy z syntezatorami, ostatnie prace nad projektami zostały przełożone na dodatkowy dzień warsztatów — niestety, w związku z brakiem wymaganej frekwencji, nie udało się go zorganizować.

Niemniej, w skutek trzydniowej zabawy z Arduino wpadło mi do głowy kilka fajnych pomysłów (z czego jeden właśnie realizuję — to tajny projekt więc nie będę się nad nim rozwodził), a i na przyrost obycia się z tym ustrojstwem (oraz wieloma rodzajami czujników) nie mogę narzekać. :)

Zobacz więcej:

Processing + Arduino + Eclipse (+ Proclipsing) — tutorial

W związku z tym, że ostatnio w ramach Medialab majstrowałem co nieco — postanowiłem opublikować mały tutorial wyjaśniający jak zacząć korzystać z Processing komunikującego się z Arduino a wszystko nie w processingowym edytorku, ale w Eclipse.

Dlaczego warto korzystać z Eclipse?
IDE (o ile w ogóle można o tym edytorku tak powiedzieć) dostarczane wraz z Processing, sprawdza się w przypadku malutkich programików. Jednak w momencie, kiedy nasza aplikacja zaczyna obrastać klasami, jej debugowanie (wyszukiwanie i naprawianie błędów) staje się praktycznie niemożliwe. Nawet w przypadku poszukiwania nie wiadomo gdzie, postawionej nieświadomie kropki, processingowy edytorek lubi się zgubić, a wręcz wprowadzić nas w błąd. Wtedy pozostaje tylko wertowanie całego kodu (wszystkich klas) linijka po linijce — w Eclipse (oraz innych poważnych IDE) takiego problemu nie ma. Błędy w składni są lokalizowane w locie, a do tego mamy do dyspozycji zestaw narzędzi umożliwiających prześledzenie co dzieje się z programem w trakcie jego działania oraz wspomagających zarządzenie kodem oraz całym projektem. Dodatkowo do Eclipse możemy zainstalować plugin Proclipsing ułatwiający pracę z Processing.

A teraz konkrety, czyli jak zacząć korzystać z Processing + Arduino w Eclipse (+ Proclipsing):

  1. Instalujemy Arduinoszczegóły na temat instalacji Arduino na stronie Arduino.
  2. Instalujemy Processingszczegóły na temat instalacji Processing na stronie projektu Processing.
  3. Konfigurujemy Processing oraz Arduino tak aby się ze sobą komunikowały za pomocą podstawowej metody wykorzystującej Firmata (wgrywamy Firmata do Arduino, instalujemy biblioteki Arduino oraz Serial dla Processing, testujemy za pomocą przykładowego kodu, nie zapominając o ustawieniu poprawnego portu COM w ów kodzie) — wszystko krok po kroku jest opisane w instrukcji na Android Playground.
  4. Jeśli wszystko poszło dobrze, przykładowy kod (sekcja Example) wklejony do Processing IDE, powinien się uruchomić i sterować stanem pinu 13 podłączonego Arduino (działanie powinno być również obserwowalne dzięki wbudowanej LED na płytce w pobliżu pinu 13, choć nie wszystkie wersje Arduino takową posiadają).
    Jeśli jednak stan pinu 13 pozostaje bez zmian, Processing nie zwraca żadnego błędu, a diody TX, RX na Arduino nie mrugają, prawdopodobnie podałeś niewłaściwy port COM via który ma się komunikować z Arduino. Metoda println(Arduino.list()); wylistuje wszystkie dostępne porty COM w konsoli, a wchodząc do Arduino IDE następnie menu Tool → Serial Port sprawdzamy pod którym z nich jest podpięte Arduino. W linijce ‚arduino = new Arduino(this, Arduino.list()[XXX], 57600);zaXXX` należy wpisać numer portu COM na którym komunikuje się Arduino z komputerem (w przykładzie domyślnie jest 0, czyli pierwszy na liście).
  5. Instalujemy Eclipse IDE for Java Developers: http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/indigosr2
  6. Instalujemy Plugin Proclipsing: szczegółowy opis instalacji na stronie Proclipsing.
  7. W Eclipse tworzymy nowy projekt File → New Project → Processing → Processing Project → Next → Podajemy nazwę projektu „Project Name” proponuję ArduinoTest, lokalizację processingu tj. folder w którym znajduje się plik processing.exe „Processing Path” oraz folder z processingowymi projektami „Processing Sketch Path” (łatwo go zlokalizować w Processing IDE: Ctrl+K)
  8. Jeśli wskazaliśmy prawidłowe foldery, w okienkach „Select Libraries” to Import powinny pojawić się checkboxy umożliwiające łatwy import bibliotek do naszego projektu już na starcie — zaznaczamy w górnym serial, w dolnym arduino → klikamy Finish.
  9. W okienku Package Explorer lub Project Explorer rozwijamy nasz projekt ArduinoTest → src → arduinotest → (podwójny klik) ArduinoTest.java
  10. Usuwamy wszystko i wklejamy program testowy:
package arduinotest;

import processing.core.PApplet;
import cc.arduino.*;
import processing.serial.*;

public class ArduinoTest extends PApplet
{

 Arduino arduino;
 int ledPin = 13;

 public void setup()
 {
  println(Arduino.list());
  arduino = new Arduino(this, Arduino.list()[0], 57600);

  //nie zapomnij podać poprawny numer portu COM
  arduino.pinMode(ledPin, Arduino.OUTPUT);
 }

 public void draw()
 {
  arduino.digitalWrite(ledPin, Arduino.HIGH);
  delay(1000);
  arduino.digitalWrite(ledPin, Arduino.LOW);
  delay(1000);
 }
}

Jeśli wszystko pójdzie dobrze, po uruchomieniu (CTRL+F11), program będzie sterował pinem 13, dokładnie tak, jak to miało miejsce w punkcie 4. kiedy uruchamialiśmy przykładowy program z poziomu Processing IDE.

Jeśli macie pytania, uwagi, coś nie działa, etc. — piszcie, chętnie pomogę :)

Problemy

Jeśli używacie JDK x64/Windows x64 możecie spotkać się z czymś takim:

java.lang.UnsatisfiedLinkError:
D:Eclipse workspaceArduinoTestlibbaseserialrxtxSerial.dll:
Can't load IA 32-bit .dll on a AMD 64-bit platform thrown
while loading gnu.io.RXTXCommDriver java.lang.UnsatisfiedLinkError:
D:Eclipse workspaceArduinoTestlibbaseserialrxtxSerial.dll:
Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:123)
at processing.serial.Serial.list(Unknown Source)
at cc.arduino.Arduino.list(Arduino.java:139)
at arduinotest.ArduinoTest.setup(ArduinoTest.java:14)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Animation Thread" java.lang.RuntimeException:
Error inside Serial.ports()
at processing.serial.Serial.errorMessage(Unknown Source)
at processing.serial.Serial.list(Unknown Source)
at cc.arduino.Arduino.list(Arduino.java:139)
at arduinotest.ArduinoTest.setup(ArduinoTest.java:14)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Wynika to z faktu, że plugin Proclipsing, domyślnie ładuje do naszego projektu 32 bitową wersję pliku rxtxSerial.dll obsługującego komunikację z portem szeregowym (COM) — musimy go teraz zastąpić wersją 64 bitową:

  1. W Project Explorer rozwijamy ArduinoTest → lib → base → (prawy przycisk myszy) serial → Import → General → File System → Next
  2. Następnie przy polu From Directory klikamy Browse, wyszukujemy folder z Processingiem (w którym znajduje się plik processing.exe), dalej rozwijamy i wskazujemy modes\java\libraries\serial\library → windows64 → OK
  3. Po prawej stronie zaznaczmy checkbox rxtxSerial.dll → Finish, powinien pojawić się komunikat „Overwrite ‚rxtxSerial.dll’ in folder ‚ArduinoTest\libs\base\serial’?” → Yes.
  4. Po uruchomieniu programu powinno wszystko działać.

Zobacz więcej

Programowanie i elektronika na ASP — kilka słów o warsztatach Processing i Arduino

Jakiś czas temu, a dokładnie od 30.03 do 04.04 na katowickiej ASP można było wziąć udział w warsztatach pt. „Wykorzytanie platformy [Arduino][arduino] do Tworzenia interaktywnych obiektów i instalacji” (prowadzonych przez Pan Generator) oraz warsztatów pt. „Interakcja, projektowanie, programowanie w środowisku Processing” (prowadzonych przez Piotra Ceglarka). Wyzwanie dla prowadzących warsztaty było tym większe, że dla większości osób (głównie studentów ASP) biorących udział w warsztatach, był to pierwszy kontakt z programowaniem oraz projektowaniem układów elektronicznych.
To co mnie bardzo pozytywnie zaskoczyło, to entuzjazm i chęć zrozumienia jakimi wszyscy pawali i pomimo tego, że materiał (jak na pierwszy raz) nie był łatwy to, realizacja kolejnych etapów projektów szła naprawdę sprawnie.

Oba wydarzenia uważam za bardzo istotne, jeśli chodzi o edukację projektantów. Chcąc nie chcąc zaawansowane technologie to nasza codzienność i potężne narzędzie. Co więcej nawet na ASP, a może w szczególności tam, nie można od nich uciekać — oczywiście nie chcę zamęczać programowaniem ilustratorów (choć i oni mogą zdobyć w tej materii cenne doświadczenie), ale nie wyobrażam sobie, aby projektanci z zakresu wzornictwa/form przemysłowych, interakcji czy informacji, nie mieli kontaktu z podstawami programowania/wykonywania wstępnych prototypów. Nie twierdzę, że powinni oni biegle programować, ale posiadać wiedzę ogólną w tym zakresie (w szczególności na temat możliwości oraz ograniczeń technologicznych), umożliwiającą wykonanie prostych prac oraz sprawną komunikację z inżynierami/programistami. W Polsce takie podejście do Studentów Akademii Sztuk Pięknych może budzić lekkie zdziwienie, jednak słuchając Jana Kubasiewicza, Agnieszki Szóstek czy Jorge Meza Aguilar, zauważyłem, że studenci w innych krajach w dużej mierze samodzielnie realizują działające instalacje oraz prototypy, często właśnie w oparciu o [Arduino][arduino] i Processing. Mając na uwadze to, oraz zacięcie uczestników w/w warsztatów chyba nie ma wątpliwości, że należy zadbać chociażby podstawową edukację w tym zakresie.

A swoją drogą, ciekaw jestem czy warsztaty te wypłynęły na fali tego co zostało powiedziane na 3. Międzynarodowej Konferencji Projektowej AGRAFA (o której niedawno pisałem)?

Jeśli kogoś temat zainteresował, w najbliższym czasie bo 7–10. czerwca 2012 na katowickiej ASP odbędą się kolejne warsztaty z majsterkowania, a dokładniej Medialab pt. „Interaktywny modularny syntezator dźwięku dla początkujących” (prowadzenie: Ronnie Deelen i Piotrek Ceglarek).

###Zobacz więcej:

Distorter — czyli jak łatwo połączyć programowanie z grafiką warsztatową

Distorter to mały projekcik, który powstał trochę z przypadku. Ot tak zacząłem eksperymentować z wektorami, następnie korzystając z Processing/Java napisałem aplikację, a dokładniej edytor dystorsji, którego pomocą wykonałem projekty grafik, które to zostały wydrukowane metodą sitodruku (na czarnym bristolu oraz przeźroczystej pleksi). Sitodruki zostały uzupełnione przez generowaną w czasie rzeczywistym animację siatek, zniekształcanych przez wiele poruszających się źródeł dystorsji (podgląd podrzucę przy najbliższej okazji).

To co w projekcie było dla mnie w szczególności satysfakcjonujące, to możliwość (prawie) samodzielnego wykonania wszystkich etapów projektu tj. począwszy od pomysłu, poprzez zaprogramowanie sobie narzędzia, aż po wydruk. Raczej nie sądzę aby można było tu mówić o majstersztyku tak w materii programowania jak i grafiki, niemniej lubię (robić) rzeczy ze specyficznym autorskim podejściem, a myślę, że do takiego można zaliczyć bezpośrednie połączenie programowania oraz grafiki warsztatowej.

Przy produkcji poniższego dokumentu bardzo pomogli mi Michał Sikora (operator kamery) oraz Piotr Madej „Patrick the Pan” (któremu zawdzięczamy podkład muzyczny).
Za pomoc dziękuję również Marcie Pogorzelec, Dorocie Nowak, Dariuszowi Gajewskiemu, Janowi Nardelli, Magdalenie Konik oraz Kompany.

Sceny z filmu:

Zobacz więcej:

Marcin Ignac: Evolving Tools

Wszystkich zainteresowanych sztuką generatywną, wizualizacją informacji oraz ciekawymi zastosowaniami programowania, zachęcam do oglądnięcia nagrania prezentacji Marcina Ignaca (prezentacja w ramach FITC 2012 w Amsterdamie). Zachęcam z tym większą przyjemnością, że Marcin jest moim dobrym (choć niestety rzadko widywanym) przyjacielem, którego twórczością inspiruję się już od dłuższego czasu. I choć — nie ma się co oszukiwać — w programowaniu nigdy go nie dogonię, to właśnie jego działania miały dominujący wpływ na moje moje zainteresowanie szeroko pojętą interakcją, interfejsami oraz łączniem programowania z sztukami wizualnymi.
Polecam.

###Zobacz więcej

Code {poems}

Bardzo ciekawa inicjatywa. W skrócie chodzi o to, aby napisać poemat, używając gramatyki dowolnego języka programowania. Najlepsze nadesłane dzieła zostaną opublikowane w książce.

To trochę takie wyjście z programowaniem do „zwykłych ludzi” i pokazanie, że języki programowania to nie jakieś magiczne i wysoce abstrakcyjne ciągi znaczków, że podobnie jak „tradycyjnie” języki służą komunikacji, posiadają swoją gramatykę/składnię i nimi również można się nimi (dobrze) bawić.

Szczegóły na stronie projektu: www.code-poems.com.