PostgreSQL tutorial: Efficient color similarity search
pod kategorijami: colors postgres

I've previously blogged about colors and PostgreSQL here. In this post I will cover some insight into custom GiST index, which enables efficiently looking up similar colors.


Color distance measures

There are several revisions of Delta E color distance measure, each more accurate and more complicated. The first revision is called CIE 1976. After further research in (human) color perception it became clear the CIE 1976 has deficiencies and revised versions CIE 1994 and later CIE 2000 were released.

Numerically, CIE 1976 is just euclidean, straight line distance between points in L*a*b color space, as this color space was defined such to have this property. The CIE 2000 Delta E is far more complex and non uniform and lacks this property, so we can't use CIE 2000 with vanilla PostgreSQL 9.6.

So let's see how you can implement CIE 1976 color similarity search with PostgreSQL 9.6.

PostgreSQL cube extension

Cube contrib extension is a custom PostgreSQL data type, with which you can represent N-dimensional vectors. It also supports indexes, so you can efficiently look up values based on column of this data type.

Let's load the extension:

colorsdb=# create extension cube;
CREATE EXTENSION

Okay, quick overview how cube works! We can create a sample point and check it is a point:

 colorsdb=# select '(1,2,3)'::cube;
    cube
-----------
  (1, 2, 3)
 (1 row)

 colorsdb=# select cube_is_point('(1,2,3)'::cube);
  cube_is_point
---------------
  t
 (1 row)

Or we can create a 3x3x3 cube and check its size:

 colorsdb=# select '(1,2,3),(4,5,6)'::cube;
         cube
---------------------
  (1, 2, 3),(4, 5, 6)
 (1 row)

 colorsdb=# select cube_is_point('(1,2,3),(4,5,6)'::cube);
  cube_is_point
---------------
  f
 (1 row)

 colorsdb=# select cube_size('(1,2,3),(4,5,6)'::cube);
  cube_size
-----------
         27
 (1 row)

Cube data type is perfectly suited for color space representation. You can store the colors as 3-dimensional points in space, where point is a special case of cube - it has zero volume and has both upper right and lower left points equal.

You can get euclidean distance with cube_distance:

 colorsdb=# select cube_distance('(1,2,3)'::cube, '(1,2,6)'::cube);
  cube_distance
---------------
              3
 (1 row)

In upcoming PostgreSQL 9.6 version, this extension will also support distance operators. Here, <-> is an euclidean distance operator:

 colorsdb=# select '(1,2,3)'::cube <-> '(1,2,6)'::cube;
  ?column?
----------
         3
 (1 row)

Let's create an test table with 500.000 records:

create table colors (color cube);

with random_colors as (
    select
        random() * 100 as l,
        random() * 255 - 128 as a,
        random() * 255 - 128 as b
    from generate_series(1, 500000) x)
insert into colors select cube(array[l,a,b]) from random_colors;

And we can now select 5 closest colors to (1,2,3):

colorsdb=# select '(1,2,3)'::cube <-> color, color from colors order by 1 asc limit 5;
     ?column?     |                            color
------------------+-----------------------------------------------------------
 1.61559798496189 | (1.89253129065037, 1.71048436127603, 1.68480973271653)
 2.55645225973282 | (3.37235750630498, 1.64988295687363, 3.88588152406737)
 2.55950246687413 | (2.91422470472753, 1.19065871741623, 4.493908747565)
 2.85963596867927 | (1.00834178738296, 4.51141274580732, 4.3675724142231)
 3.11127226552722 | (1.72140300273895, 3.04948928579688, 0.161309270653874)
(5 rows)

What is the cost for this:

 colorsdb=# explain analyze select '(1,2,3)'::cube <-> color, color from colors order by 1 asc limit 10;
                                                         QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
  Limit  (cost=20734.28..20734.30 rows=10 width=40) (actual time=151.844..151.846 rows=10 loops=1)
    ->  Sort  (cost=20734.28..21984.46 rows=500072 width=40) (actual time=151.843..151.845 rows=10 loops=1)
          Sort Key: (('(1, 2, 3)'::cube <-> color))
          Sort Method: top-N heapsort  Memory: 25kB
          ->  Seq Scan on colors  (cost=0.00..9927.90 rows=500072 width=40) (actual time=0.014..88.199 rows=500000 loops=1)
  Planning time: 0.054 ms
  Execution time: 151.864 ms
 (7 rows)

You can see PostgreSQL is doing a sequential scan and it takes 151 ms to get 5 nearest colors. Without index, that is. Since 9.1, PostgreSQL supports returning nearest items with use of GiST index. Let's try indexing colors (building index takes a while):

colorsdb=# create index colors_color_idx on colors using gist (color);
CREATE INDEX

And check the query now:

 colorsdb=# explain analyze select '(1,2,3)'::cube <-> color, color from colors order by 1 asc limit 10;
                                                                 QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------
  Limit  (cost=0.29..1.20 rows=10 width=40) (actual time=0.236..0.565 rows=10 loops=1)
    ->  Index Scan using colors_color_idx on colors  (cost=0.29..45996.29 rows=500000 width=40) (actual time=0.235..0.562 rows=10 loops=1)
          Order By: (color <-> '(1, 2, 3)'::cube)
  Planning time: 0.051 ms
  Execution time: 0.585 ms
 (5 rows)

Yay, 0.6 ms, which is about 250-times faster for a table with 0,5 million records.

Benchmarking Python in PostgreSQL
pod kategorijami: postgres python colors

I've been learning a lot about PostgreSQL recently. A trigger for this was a Stack overflow question I came about some time ago, featuring a fairly complex equation for calculating color similarity. I've been obsessing over it ever since and I've used it as a test case for a number of things. Hopefully, this will be one of several articles about how I used it and what I learned along.


This article is a benchmark of different implementations of same function in PostgreSQL. The function in question is difference between colors, and the implementations are in SQL, C, and several variants of Python: pure, numpy, numba and Cython.

Delta E color difference is a measure of color difference. The L*a*b color space was designed with intention to represent colors in a perceptually uniform way, meaning some change in value should result in equal or very similar change in perception. Since the color space was designed with this intention, the original CIE 1976 Delta E was just cartesian distance between two point in color space. Along with more research it became clear the CIE 1976 had some deficiencies and was followed by improved version CIE 1994 Delta E. The latest revision is CIE 2000 Delta E and is far from being a simple equation. For the reader to understand the rest of the post, it is enough to know this equations is math intensive, accepts two 3-dimensional vectors, and returns a single scalar value.

So, with the CIE 2000 Delta E standard no longer being a simple calculation, implementing it in SQL became cumbersome. Jaza, author of the SO question, managed to implement it in SQL (kudos!), but even with CTEs the code is still incomprehensible. And the code is slow, too. SQL just wasn't made for this.

In an effort to speed this up, I tested several approaches. I tested Jaza's SQL implementation, plpgsql implementation and my custom PostgreSQL C extension (more about this in another post). PostgreSQL officially supports Python as a server side procedural language, so this is also something to evaluate. Python is diverse and offers several options for implementation, depending on your needs for performance: pure Python, numpy, numba, cython.

For testing I used several configurations: pure SQL function (as written by Jaza), plpgsql function, my PostgreSQL C extension, pure Python function, Python function using NumPy, then I used Python module as a container for functions, and additionally tried to see if I can make numba JIT work on the server side.

The results are interesting, but first the setup.

Implementations

SQL, plpgsql and C implementations are just functions and there's not much wiggle room.

There are several Python implementations:

  • inline pure
  • inline pure jitted
  • inline numpy
  • inline numpy jitted
  • module pure
  • module pure jitted
  • module numpy
  • module numpy jitted
  • cython module

"Inline" or "module" defines if the function body is defined inline in CREATE FUNCTION statement or in a separate Python module, which is imported at execution.

"Numpy" or "pure" signifies the functions uses colormath code (which in turn uses numpy) or a pure Python implementation.

"Jitted" signifies the use of numba jitting capabilities.

Setup

I created the test database:

dropdb colors
createdb colors
psql colors -c 'create table color (rgb_r double precision, rgb_g double precision, rgb_b double precision, lab_l double precision, lab_a double precision, lab_b double precision);'

I then generated random test dataset and used the colormath module to convert the RGB colors to Lab colorspace in order for the values to represent a valid RGB value.

Benchmark

For benchmark I created a table with 20.000 random RGB colors, converted them to Lab color space and stored in database. Test case consists of running the distance function on whole table, comparing with a fixed value, in my case it was L=42.041, a=-9.105, b=-13.873. Each implementation was called 10 times on an idle laptop.

Reusing connections

First run was with connection reuse:

Implementation Minimum Average Maximum Speedup
SQL 11.3849 11.8725 12.5735 1.0
plpgsql 0.8482 0.8786 0.9386 13.5
C extension 0.0550 0.0593 0.0715 200.3
Py inline pure 0.5735 0.6166 0.6651 19.3
Py inline pure JIT 0.8567 1.2102 3.8561 9.8
Py inline pure JIT cached 0.8730 0.9800 1.2758 12.1
Py inline numpy 6.2782 6.5544 6.8891 1.8
Py module pure 0.6055 0.6445 0.6936 18.4
Py module pure JIT 0.2837 0.4468 1.7373 26.6
Py module pure JIT cached 0.2878 0.4241 1.4920 28.0
Py module pure cython 0.4944 0.5123 0.5600 23.2
Py module numpy 6.0890 6.4830 7.7312 1.8
Py module numpy JIT 6.0668 6.5032 7.5097 1.8
Py module numpy JIT cached 6.0912 6.5865 7.3711 1.8

SQL is slowest with 11 seconds for 20k rows. C extension is fastest, with 55 to 72 miliseconds and offers a speedup of 200x.

In between there's Python. All numpy implementations are a bit less than 2x faster than SQL. Using numpy in plpython is slow, since the data needs to be copied to numpy array before it is processed. This is a costly operation and it shows. Inline numpy with numba JIT took far longer that SQL against which I am comparing so I didn't test it at all.

Pure Python implementations do better and are about 19x faster than SQL. By defining function inline instead of in module it was 4% faster, but that can make logic harder to maintain. However, when using numba JIT, defining function inline slows down execution to 12x faster, and defining function in module speeds it up to 28x faster. Apparently defining function inline makes JIT less effective. All numba decorated functions also have an initialization penalty, where the first run is significantly slower, most obvious with pure jit module.

Caching with numba does not seem to help. It does have one extra requirement, since the server process needs write permissions on directory next to python module in order to write cached data to disk.

I also tested a Cython implementation, at 23x it was faster than pure Python, but slower than numba.

New connections

Second run was with new connection for every execution:

Implementation Minimum Average Maximum Speedup
SQL 11.5494 12.0963 12.7010 1.0
plpgsql 0.9093 1.0696 1.2528 11.3
C extension 0.0977 0.1129 0.1325 107.2
Py inline pure 0.6567 0.7199 0.8560 16.8
Py inline pure JIT 1.2135 1.3678 1.6060 8.8
Py inline pure JIT cached 1.1845 1.2449 1.3095 9.7
Py inline numpy 6.0845 6.4325 6.7866 1.9
Py module pure 0.6414 0.6754 0.7062 17.9
Py module pure JIT 1.4029 1.4491 1.5507 8.3
Py module pure JIT cached 1.4275 1.5280 1.6158 7.9
Py module pure cython 0.5374 0.5874 0.6513 20.6
Py module numpy 7.1427 7.3657 7.5970 1.6
Py module numpy JIT 7.2352 7.4535 7.7606 1.6
Py module numpy JIT cached 7.3986 7.5940 7.9226 1.6

When including connection overhead there are significant reductions in performance. It is important to understand how PostgreSQL implements plpython and server processes in general. After connecting, PostgreSQL forks a process for client. If you run any plpython functions, this process then loads Python interpreter, also adding some overhead.

SQL implementation stays almost the same, numpy is slightly slower with 1.6-1.9x speedup.

All implementations with numba are significantly slower. Where numba was previously 28x faster, it is now always hitting initialization on first request, and the speedup drops to 7.9x. Best numba enabled implementation is 9.7x faster, down from 12.1x. Both are slower than pure Python.

A couple of implementations stand out here: pure Python, both inline and as module, and also Cython, have approximately the same speedup as before, meaning they are a stable implementation and do not incur significant initialization overhead.

Lessons learned

Compared by performance we get three clusters of implementations:

  • SQL and numpy are in the same order of magnitude (slow),
  • plpgsql and pure Python implementations are an order of magnitude faster and
  • C function is two orders of magnitude faster.

In plpython, you don't want to use numpy, which is slow because each row is processed individually. You might want to use numba if you're reusing connections, but care should be taken, since it can have unpredictable performance. Cython is okay, though it probably won't help much over pure Python. Functions, written in C, are fast.

Zablode postsocializma?
pod kategorijami: slovenija slovencologija

Zablode postsocializma je še razmeroma sveža (lanskoletna) knjiga Vesne Vuk Godina, ki želi govoriti o tem kje je Slovenija (in tudi druge postsocialistične države) zašla na poti v klub razvitih družb zahodnega tipa. Vesna Vuk Godina je antropologinja, predava na mariborski Filozofski fakulteti in ljubljanski Fakulteti za družbene vede in ne dvomim o njeni strokovnosti ali usposobljenosti. Tematika, ki jo knjiga obravnava, je zanimiva, žal pa sem bil nad izvedbo nekoliko razočaran in se mi zdi, da je knjiga šla morda malo prehitro v tisk.

Knjiga obsega približno 330 strani, ki so razdeljena v 4 poglavja, dolga po odokativno 50, 120, 150 in 5 strani. Kateri bedak šteje strani poglavij, se vprašate? Število poglavij res nima nekega vpliva na vsebino, pa vendar velja, da človek z napačnim orodjem zelo težko doseže določene cilje - tako se z vilico zelo težko poje juho.

Obsežna poglavja so kot velik petkilski kos govejega mesa, ki ga je kuhar v enem kosu dal v pečico: hrana bo navzven izgledala pripravljena, medtem ko bo v sredini še surova. Podobno je s to knjigo: poglavja so predolga, napisana v zelo enakomernem ritmu, zelo številni citati pa ta ritem še poudarijo do te mere, da poglavja spominjajo na daljšo seminarsko nalogo, kjer želi študent profesorja preobremeniti z obsegom pisanja, da se ubogi revež ne bi pretirano ukvarjal z vsebino. Zaradi dolžine poglavij je zato težko slediti rdeči niti, citati pa avtoričino misel še dodatno razbijajo in redčijo, namesto, da bi služili kot argumenti za zaključno misel posameznega (krajšega) poglavja.

Ob branju tega sem se spraševal katero ciljno publiko je možno nagovoriti s tako obliko, zaradi katere je knjiga težje prebavljiva, kot bi morala biti. Zaradi notranje nerazdelanosti daje občutek, da ni namenjena širši publiki in ne kot gradivo za študente, obojim bi namreč bila bolj razdelana struktura v veliko pomoč.

No, ne gre pa razumeti, da je vse katastrofalno. Sam smatram kulturo, podobno kot tudi avtorica, kot eno izmed ključnih pogojev oz. okoliščin, pomembnih za delovanje skupnosti. Vsebina zato nudi v razmislek precej zanimivih idej, ki niso radikalno nove, so pa nanizane v zametek nečesa smiselnega.

Osebno mi je kot arhetip slovenskega gospodarskega organiziranja všeč ideja domačije, ki pa ni mišljena slabšalno (ne v smislu "po domače"), ampak kot jasno začrtano skupnost, ki ne obsega zgolj družine, ampak tudi druge ne-sorodstveno povezane posameznike, ki prebivajo na domačiji. Avtorica tudi dobro predstavi motivacijo in vrednote, ki so v tovrstni skupnosti pomembne za tisto, kar najbolj šteje - preživetje.

Verjamem, da se bo knjiga v Sloveniji zelo dobro prodajala, na tujino pa lahko pozabimo, to ni Gladwell. Vsebina in ideja je pomembna, a knjiga je, morda nekoliko ironično, dober primer slovenskega domačijskega načina razmišljanja, ki ne vidi dlje od domačije, torej od avtorja in založbe oz. spremljevalnih akterjev. Ne vidi in ne upošteva bralca, zato knjiga ni material za mednarodni bestseller in bi, preden lahko začne razmišljati, da bi to postala, morala biti v pretežnem delu še nekajkrat prestrukturirana in prepisana.


Nekatere druge recenzije:

Knjiga, ki bi jo moral prebrati vsak Slovenec (Boštjan M. Zupančič)

Zablode Vesne Vuk Godina (Peter Rak)

Iz kje izvira konflikt med mladimi in starimi
pod kategorijami: slovenija mladi

"Kako smo prišli do debate o tem, da ljudje po celem življenju garanja niso več upravičeni do dostojanstvene starosti ali pa mladi do socialne varnosti?"

Tako se Miha Blažič - N'toko sprašuje v Mladini s 14. novembra, kjer se je razpisal o konfliktu med mladimi in starejšimi v slovenski družbi. Starejše poimenuje za "zaščitene medvede", saj so zaradi redne zaposlitve nedotakljivi. Ugotavlja, da imamo mladi frustracije in odpor do starejših, da imamo "tisoč in en razlog", da jih sovražimo. Do tega po Blažičevem mnenju prihaja, ker država spodbuja konkurenčnost in ne varnosti. Na koncu pride do zaključka, da je smiselna rešitev krajšanje delovnega časa.

Menim, da se Miha Blažič moti.

Stara mama je upokojena skoraj tako dolgo, kot sem sam na svetu. Privoščim ji, morda sem ob tem tudi nekoliko zavisten, saj se zavedam, da česa takega ne bom doživel. A ko v pogovoru navrže, da je nam mladim lahko, saj imamo še celo življenje pred seboj, me prežame jeza. Od kje upokojencu, ki že več desetletij uživa pokojnino, predrznost, da mi zavida še mojo mladost? Upokojenih, ki so se po vseh standardih upokojili mladi, stari tam okoli pedeset let, v Sloveniji ni malo in takega človeka ne morem šteti kot izgaranega. Nek drug tak prejemnik pokojnine kot hobi vodi dejavnost, pri kateri nekega drugega mladega človeka mimo vseh davčnih postopkov plačuje z gotovino, v popoldanskem času pa prenavlja drugo stanovanje, ki ga namerava oddajati. Ne dvomim, da se bojo vselili mladi.

Z družbenim statusom ni nič narobe, kadar so uživalci do njega utemeljeno upravičeni, takrat ima status legitimnost. Večina teh primerov pa legitimnosti nima. Dopuščanje zgodnjega upokojevanja je bila neodgovorna poteza pri vodenju državne politike, saj dela zmožen človek ne bi smel posedati v brezdelju. Dobrodošlo je, da upokojenec pri močeh vodi dejavnost, a naj vendar ne bo tako brez časti, da z izogibanjem plačevanja davka mladega ropa njegovih pravic - zavarovanja in delovne dobe. Tako dejanje je za mlade žalitev. Neprimerno je tudi, da upokojena oseba pozabi, da uživa nekaj tako neverjetnega, kot je več deset let prejemanja državne pokojnine. Moja generacija tega ne bo izkusila.

Hud vir konfliktov je tudi lastništvo nepremičnin. Starejši so si lahko po zaslugi Jazbinškovega zakona od države pridobili stanovanja z ugodnim odkupom, bistveno pod tržno ceno, mnogi tudi več njih. Ti sedaj uživajo pravice zaposlenih in upokojenih. Na drugem polu si mora mlad človek v Sloveniji iz meseca v mesec iskati delo - do zaposlitve ponavadi ne pride -, da lahko plačuje previsoko najemnino najemodajalcu, ki je stanovanje pridobil z oškodovanjem državnega premoženja, torej spet nelegitimno. V službi starejšega človeka tipično srečuje kot redno zaposlenega in nadrejenega, za katerega opravi svoje in često še dobršen del njegovega dela, saj redno zaposleni v svojem udobju ne sledi več razvoju. Takega nadrejenega mlad človek zopet ne more vzeti za vzor, ampak ga utemeljeno prezira.

Študentsko delo je ena najbolj neodgovornih stvari, ki se je pripetila slovenski družbi na sploh. Uvedeno je bilo leta 1994, s časom pa se je izrodilo v sistematično zlorabo mladih. Mladim je odvzelo možnost redne zaposlitve znotraj organizacij, stabilno gradnjo kariere ter delovno dobo. Delodajalcem je nudilo polkvalificirano delovno silo za ceno bureka in za obljube delovnih izkušenj, kar pa ni prišlo brez stranskih učinkov. Študentski delavci so se naučili biti potrošna roba in popolnoma vseeno je bilo, ko se niso zglasili na delu. Pač niso dobili plačano, na delo pa je stopil naslednji. S takim odnosom se eni študentski delavci niso mogli priučiti odgovornosti in zanesljivosti, drugi pa so ugotovili, da jim tovrstno samostojno delo pravzaprav bolj ustreza in se odpravili na pot samostojnega podjetništva. Izigravanje in izrinjanje mladih se danes nadaljuje z neplačanimi pripravništvi in z Zakonom o uravnoteženju javnih financ, ki prepoveduje zaposlovanje v javnem sektorju.

Mladi ne rabimo socialne varnosti, ampak priložnost, da se izkažemo. Vse to toleriramo in tudi požremo, ker vidimo priložnosti in želimo marsikaj doseči. A največji pljunek v obraz je odrekanje priznavanja dosežkov. Ko mladim uspe kaj neverjetnega, so deležni kake lepe besede, pri tem pa se že konča. S strani starejših in nadrejenih ne dobijo priznanja z dejanji.

To so glavni viri slovenskega trenja med mladimi in starimi: starejši so si pridobili nadvlado nad mladimi, ki je mlajši ne moremo smatrati za legitimno, saj večina njihovih pridobitev ni bila ustvarjena z delom in sposobnostjo. Mlade sistematično in sistemsko izigravajo in ropajo z oblikami dela, ki ne nudijo predvidljive varnosti in so brez pravic, hkrati pa jim še pol tega, kar zaslužijo, poberejo z davčno utajevanimi najemninami. Ob vsem tem pa veselo ignorirajo dosežke mladih. Ljudi, ki imajo do tebe tak odnos, je res težko ne sovražiti!

Skrajševanje delovnega časa ne reši poglavitnega, saj vsi vzroki nastalih zamer ostajajo. Največji del konflikta bi razrešili, če bi začeli priznavati dosežke mladih z dejanji, ne zgolj z besedami. Torej, da bi jih ob prizadevnosti in doseganju kakovostnih rezultatov nagradili s finančno stabilnostjo in ne tako, kot se je nekdanji glavni urednik Večera spraševal o Jaši Lorenčiču: “Zakaj te damo Jaši 100 evrov za koncert? Daj mu 20, saj bo itak šel, saj vidiš, kako je zagnan.” Zakaj vrtnine pridno in izdatno zalivamo, ko spomladi ženejo, mlade in perspektivne delavce pa izsušujemo?

Finančna varnost in stabilnost je osnova za kvalitetno delo, izjemni dosežki se ustvarjajo le, ko nudimo sposobnemu človeku varnost, da dan za dnem niza majhne korake naprej. Vsa velika podjetja in podvigi so zrastli iz majhnih. Tako je npr. Dnevnikova ekipa, ki ustvarja vizualizacije v rubriki Objektivno, v treh letih prišla do mednarodnega priznanja, do katerega so se priborili v boju z medijskimi velikani, ki so nekaj velikostnih razredov večji od Dnevnika. Menite, da bodo vodje prepoznali ta dosežek kot nekaj, kar si zasluži finančno stabilnost in nadaljnje vlaganje?

Koliko je takšnih med redno zaposlenimi, ki so sposobni toliko empatije in vodstvenega uvida, da si aktivno prizadevajo, da bi honorarne sodelavce, ki so v organizaciji pravzaprav ustvarili pomembna znanja, obdržali ne z izsiljevanjem, npr. z izjavami, "da je drugje enako ali še slabše" ter da "naj bodo veseli, da imajo delo", ampak raje s priznanjem, da delajo dobro?

Izjemni dosežki zahtevajo nekaj sreče, a niso naključja. Ker taki posamezniki dokazujejo, da delajo dobro, jim je potrebno pripustiti, da sodelujejo pri odločitvah o svojem delu in tudi širše znotraj organizacije. Sprva kot opazovalce in posvetovalce, da lahko v intimi pogovora na štiri oči pretehtajo hipotetične odločitve in vrednotijo boljše in slabše.

Sčasoma taki posamezniki razvijejo nov, bistveno boljši pristop k reševanju dane težave. Takrat jim moramo dovoliti, da svoje ideje udejanijo. Zelo pomembno je, da idejo udejani avtor, saj je to nova priložnost za njegovo rast in nadaljno zvestobo mentorju ter organizaciji.

Miha Blažič žal ne razume, da mladi, ki so jezni zaradi privilegijev starejših, vendarle niso najboljša stvar, ki se je gospodarstvu kadarkoli zgodila. Nobena gospodarska družba ne potrebuje internega razslojevanja na bolj in manj priviligirano kasto zaposlenih, ker je to resna ovira na poti k temu, da bi vsi stremeli k istemu cilju. Slovensko gospodarstvo nujno potrebuje kvalitetno vodenje, ki bo pripoznavalo dosežke in jim dajalo veljavo ne samo z besedami, ampak tudi z dejanji, hkrati pa bo od vseh zaposlenih zahtevalo, da ostajajo na svojem področju na tekočem, saj bodo le na ta način konkurenčna podjetja in tudi zaposleni.

E-knjigarne v Sloveniji
pod kategorijami: slovenija software eknjige

Samo Rugelj se je nedavno razpisal o Amazonu, v svojem prispevku pa je omenil tudi dve slovenski eštacuni z eknjigami, Biblos in e-emko. Med ogledom emke sem našel knjigo, ki me je pritegnila - emka omogoča spletni ogled prvih nekaj strani knjige. Gre za Čeferinovo Moje odvetniško življenje, ki se začne z zanimivo prigodo s prvim obiskom sodišča v odvetniški vlogi. Kasneje sem na Biblosu našel slovenski prevod Cicerovega O dolžnostih (De Officiis). Ta je sicer v angleščini na voljo brezplačno na openlibrary.org, saj je knjiga že "precej" stara, tako da se najdejo tudi stari prevodi, katerim so avtorske pravice že potekle, ni pa mi ravno bilo za brati angleški prevod.

No, tako sem imel dve eknjigi, od katerih je bila vsaka na voljo na eni spletni trgovini. Priročno za hitri test. Test je osredotočen na delovanje spletnih trgovin, predvsem z vidika uporabniške prijaznosti in varnosti s končnim ciljem preverit, če je možno knjige brati tudi na Kindlu.

Biblos

Biblos je spletna knjigarna z e-knjigami, ki v sodelovanju s knjižnicami omogoča tudi izposojo e-knjig. Če prav razumem, si uporabnik v knjižnici izposodi napravo, na kateri so izbrane e-knjige. Upravlja jo Beletrina, so pa menda na voljo tudi knjige drugih založb.

Za izposojo ali nakup je potrebna prijava, ki zahteva kar dosti podatkov - ok, naslov in email, ampak zakaj telefon? Praznega človeku seveda ni dovoljeno pustiti ... S tega vidika moram pohvaliti spletno trgovino založbe Primus, kjer za nakup (celulozne) knjige nisem potreboval ustvariti računa. Pri vpisu e-poštnega naslova in izbiri gesla sem opazil, da sistem brez problema sprejme epoštni naslov, ki vsebuje "+" (koristno za označevanje v GMailu), z veseljem sprejme vsaj 20 znakovna gesla, uporabniškega imena pa ni oziroma je uporabniški identifikator kar e-poštni naslov.

Aja, po e-pošti sem prejel pozdravno pismo (samo v HTML obliki), ki ga je GMail uvrstil med neželeno pošto, v njem pa so mi poslali prvo in zadnjo črko gesla, vmesni znaki pa so bili zatemnjeni z zvezdico. Dobro, pri 20 znakih to morda niti ni tako velik problem. Znana dolžina gesla sicer poenostavi problem iskanja za 50%. Napisali so tudi, da so gesla v sistemu shranjena v šifrirani obliki.

Prijava - zmedena. Za prijavo je potrebno izbrati knjižnico, vpisati e-pošto ter geslo. Brez izbire knjižnice prijava ne uspe, a kaj naj s knjižnico, če knjigo kupujem? (Naknadno sem opazil, da omogoča tudi prijavo samo z e-poštnim naslovom in geslom, ta način prijave pa je pri neprijavljenem uporabniku skrit za dodatnim klikom.) No, po prijavi si sistem tudi ni zapomnil katero knjigo sem si ogledoval. Presenetil me je vmesnik za prijavo (za izposojo), ki se prikazuje pri vrhu strani, in to tudi kadar sem že prijavljen. Popolnoma nepotrebna zmeda.

Nakup knjige je relativno enostaven. Knjigo dodamo v košarico, gremo na blagajno, tam pa me je pričakala dobra in slaba novica. Slaba: v nešifrirano spletno stran je vstavljen IFRAME, ki se povezuje na šifrirano spletno stran, v katero naj bi vpisal podatke o kreditni kartici. Ta rešitev dopušča napad, kjer lahko zlobnež vstavi kodo, ki pravi vmesnik zamenja z zlobnim, ki lahko pokrade podatke. Izvajalec plačilnih storitev ima ob pisanju tega srednje varno šifrirano povezavo. Dobra novica je, da je na voljo tudi PayPal.

Po uspelem nakupu sem imel na voljo prenos e-knjige v epub. Hja, no, v ACSM formatu, ki ga pozna Adobe Digital Editions. Knjiga se je uspešno uvozila v Adobeov program, ki dela tudi na Linuxu prek Wine, z nekaj akrobacije pa je možno knjigo brati tudi na Kindlu.

Ocena spletne knjigarne: 3,5 od 5.

  • knjigarna je uporabna,
  • ne potrebujem uporabniškega imena,
  • sistem podpira vsaj 20 znakov za geslo,
  • sistem sprejme epoštni naslov v obliki email+značka@gmail.com,
  • uporablja standardne rešitve: PayPal, Adobe Digital Editions, epub;
  • uporabniški vmesnik je zmeden, sploh prijava,
  • ne uporablja HTTPS,
  • z nekoliko akrobacije omogoča tudi branje na Kindlu.

Če Beletrina doda še HTTPS ter nekoliko popravijo uporabniški vmesnik, bo to že dostojna spletna knjigarna. Mimogrede, iščejo tudi avtorje, ki bi svoje knjige želeli objaviti prek knjigarne Biblos.

e-emka

E-emka je, kot že ime namiguje, spletna knjigarna Mladinske knjige. Želeno knjigo sem neprijavljen dodal v košaro, za nakup pa je sistem zahteval prijavo oz. ustvarjanje novega računa. Uf. Prvo presenečenje: potrebujem uporabniško ime. Šele tu sem se zavedel, da ga pri Biblosu sploh nisem potreboval. Dalje: gesla so lahko dolga največ 15 znakov in ... ne smejo vsebovati presledkov ter enojnih narekovajev. Slabo znamenje, kar se varnosti tiče, saj to namiguje, da nekdo ne zna pravilno uporabljati podatkovne baze. Prav tako mi sistem ni sprejel e-pošte, ki je vsebovala znak +, kar spet namiguje, da nekdo ne ve kaj vse je lahko veljaven e-poštni naslov.

Slabe varnostne prakse se nadaljujejo: po registraciji sem po epošti prejel geslo v čitljivi obliki. Brez komentarja. E-pošta je bila tudi tokrat le v HTML obliki.

Po prijavi sem - če prav razumem je bilo to namenjeno izdaji računa - moral še enkrat navesti ime in priimek ter epoštni naslov, ki sem ju že navedel. Poleg tega pa seveda še druge podatke - naslov, telefon ter občino in kraj. Občino, WTF? Ja, in seveda ni na voljo letos ustanovljene občine Ankaran, niti ni občine Mirna, ki je bila ustanovljena že leta 2011. Kot bi izpolnjeval obrazec za nek državni urad.

Za plačilo sem moral vpisati številke Vise. K sreči je bila povezava tokrat šifrirana v celoti, a kaj ti to pomaga, če spletni strežnik (vsaj v času pisanja tega) podpira tudi zastarel in nevaren šifrirni protokol SSL2. Plačilo s PayPalom ni podprto, čeprav je bilo iz grafičnega vmesnika sklepati, da plačilo gre prek PayPala. Tečno še enkrat pretipkovat vse tiste cifre, še malo bolj tečno, da mi je brskalnik ponudil, da si te številke zapomni.

Po nakupu je knjiga na voljo za ogled preko spleta, no, ne preko spleta, ampak preko Flash aplikacije, kar je nekoliko nerodno, saj ne uporabljam Flasha. Alternativa je iOS ali Android aplikacija, kjer so me komentarji resno prestrašili. Čitalnica knjig, ki potrebuje root dostop do telefona? Veliko negativnih ocen.

No, zaenkrat kaže, da bom nakup storniral ter raje vzel fizično kopijo.

Ocena spletne knjigarne: 1 od 5.

  • knjigarna je zelo štorasta,
  • iz sistema kričijo slabe varnostne prakse: geslo prek e-pošte v čitljivi obliki, največ 15 znakov z omejitvami;
  • izvajalec plačilnih storitev ima neustrezen nivo šifriranja,
  • dvojno vnašanje že istih podatkov,
  • čemu so potrebni podatki o občini?!,
  • ni PayPala (ali pa ga nisem našel),
  • nestandardne rešitve,
  • aplikacija, ki se je ne upam namestit,
  • Kindle? Ne.
Lotus Notes
pod kategorijami: slovenija drzava software lotus ibm

Če ste se kdaj pogovarjali o programski opremi s kom, ki je zaposlen v državni upravi, zna biti, da je jamral nad Lotus Notes. Lotus Notes, ki se danes pravzaprav imenuje IBM Notes, je v prvi vrsti ogrodje za izdelavo aplikacij, pride pa z že narejeno aplikacijo, z e-poštnim odjemalcem.

Treba je priznat, ta e-poštni odjemalec ima svoje hibe. Uporabniški vmesnik je štorast in od uporabnika zahteva veliko preveč zamudnega klikanja po ikonah in menijih, da bi ga lahko sprejel za svojega. To niti ne bi bilo tako problematično, če bi si lahko nastavil bližnjice za dostop do operacij, npr. do arhiviranja, ki je zakopan tri nivoje globoko v meniju.

Hibam navkljub je Notes zanimiva platforma. Znotraj posamezne Notes baze so podatkovna baza, programska koda aplikacije in varnostni model. Podatkovna baza je dokumentna, brez sheme, podobno kot MongoDB ali še bolje CouchDB, ker Notes tako kot CouchDB podpira tudi replikacijo, konflikti med različnimi verzijami dokumentov pa se enako rešujejo z logiko znotraj aplikacije. Poleg podatkov je v posamezni kopiji, tudi replicirani, še aplikacija (logika) ter kontrola dostopov. Vse to je zapakirano v .nsf datoteko.

Ena večjih težav pri Notes je, da nima mehanizma, s katerim bi bila aplikacija obveščena o spremembi dokumenta oz. o prejeti novi različici dokumenta, ki je bila spremenjena v drugi kopiji podatkov. To se rešuje z agenti, programi, ki se lahko poganjajo periodično ali na ročno zahtevo. Ker se poganjajo periodično, to pomeni, da je uporabniška izkušnja aplikacije neprijetna, ker se nekatere spremembe opazijo šele po naslednjem zagonu agenta. Ker se agent poganja periodično in ker se lahko zapelje čez celotno bazo, to ob večji bazi lahko traja kar nekaj časa, odvisno pa je seveda tudi od opravila, ki ga agent izvaja.

Ker je Notes ogrodje oz. framework, namenjen poslovni rabi, je za rabo na voljo kar nekaj različnih načinov za uporabo ogrodja: od posebnega formula jezika, C in C++ APIja, Windows COM vmesnika do XPages v Javi in JavaScriptu. Sam sem bil zainteresiran branje podatkov iz Notes, da bi jih lahko potem obdeloval zunaj Notesovega okolja, z drugimi orodji.

Za kratek ilustrativen primer bom pokazal, kako programsko prešteti e-pošto v mapi Prejeto. Za to bom uporabil Python, ki se z Notes pogovarja preko COM vmesnika.

Da lahko Python dostopa do COM vmesnika je potrebna namestitev 32 bitnega Pythona in razširitve za Python za Windows, pywin32.

Tako izgleda skripta prestej_posto.py, ki izpiše število sporočil, ki jih ima uporabnik v mapi Prejeto. Da deluje, je potrebno nastaviti geslo in pot do baze, v kateri Notes hrani e-pošto.

# coding: utf-8
from win32com.client import Dispatch

GESLO = 'geslo'
BAZA = r'C:\Program Files (x86)\IBM\Lotus\Notes\Data\mail\email_database.nsf'

# odpri Notes okolje
session = Dispatch('Lotus.NotesSession')
session.Initialize(GESLO)

# odpri bazo
db = session.GetDatabase("", BAZA)
view = db.GetView('$Inbox')

# prestej dokumente
count = 0
doc = view.GetFirstDocument()
while doc is not None:
    count += 1
    doc = view.GetNextDocument(doc)

print u'Število sporočil v Prejeto:', count

Število vseh sporočil v mapi, ne zgolj neprebranih, je ena od stvari, ki jih v Notes pogrešam. Pravilno delovanje skripte pa lahko preverite tako, da odpreste mapo Prejeto, označite vsa sporočila s Ctrl-A, ob tem pa bo Notes ob dnu izpisal število označenih dokumentov, ki se mora ujemati z izpisom skripte.

To je le ena zelo preprosta skripta. Za kake kompleksnejše operacije je potrebno prebrati nekaj dokumentacije. Za dokumentacijo je koristen OLE/COM Viewer (oleview.exe), ki pride poleg Visual Studia, in pa "C API reference", ki je dostopen na IBMovi strani, seveda - kot nsf datoteka. Posebej uporabna je funkcija za iskanje po vsebini, FTSearch.

S tem se da prebirati polja iz dokumentov, shranjevati priponke, pošiljati pošto, ipd. Možno je seveda tudi pisati v Lotus Notes bazo, če imate ustrezne pravice, ampak temu se sam izogibam, ker nisem najbolje seznanjen z delovanjem aplikacij, tako da ne bi želel, da pride do situacije, kjer bi v bazi nastal dokument, ki ga aplikacija ne bi znala pravilno upoštevati. Ker je Notes ogrodje, namenjeno izgradnji aplikacij po naročilu, ima zelo obsežen in detajln programski vmesnik. Zato je zelo lahko pridobiti informacije iz Notes brez večjega tveganja, da bi pri tem kaj polomil.

~~

Še dva kratka članka v angleščini, namenjena uvodu v delo z Lotus Notes in Pythonom

Ponovna raba informacij javnega značaja po Evropi
pod kategorijami: slovenija internet opendata drzava

Konec junija oz. začetek julija sem se kot predstavnik KPK v okviru sodelovanja z Ministrstvom za notranje zadeve udeležil konference na temo ponovne rabe informacij javnega značaja. Share PSI 2.0 je partnerska mreža znotraj 25 držav, tokratna konferenca pa je potekala v Grčiji, na otoku Samos, in obravnavala ponovno rabo informacij znotraj javnega sektorja. S predstavnico MNZ sva predstavljala Supervizor.

Predavanje o Supervizorju je bilo lepo sprejeto in Supervizor je požel kar nekaj zanimanja, tudi izvedbeno tehničnega - eno konkretno vprašanje se je npr. nanašalo na to, če se podatki v Supervizorju posodabljajo. (Se, dnevno.)

No, čeprav ima javni nastop vedno svoj čar, so še bolj zanimive predstavitve projektov, na katerih so delali drugi. Če bi predstavitve razdelil v tri kategorije, bi bila prva vse okrog RDF. RDF je zbirka zelo kompleksnih standardov, ki zahtevajo precej teoretičnega predznanja, da koncepte posameznik sploh zaobjame. EU očitno namenja znatne zneske za raziskave na tem področju.

Druga kategorija predstavlja bolj teoretično naravnane projekte, npr. modeliranje procesov in preizkušanje ukrepov na modelih. To je nekaj, kar si zelo težko predstavljam, da bi v Sloveniji dobro delovalo v praksi. Modeliranje ukrepov je koristno orodje, s katerim lahko že pred uvedbo napovemo posledice. To brez dvoma počne npr. UMAR, v splošnem pa se mi zdi, da v Sloveniji podcenjujemo pomen takih orodij ter preveč poveličujemo politične odločitve.

Tretja kategorija mi je najbolj zanimiva in obsega praktične rešitve, ki že lahko nekaj pokažejo. Spodaj sledi nekaj teh primerov, ki so se mi zdeli zanimivi in morda koristni tudi za prenos ideje v Slovenijo.

Javni potniški promet

Taka je npr. ponovna raba informacij o mestnem prometu v Španskem mestu Gijon (Pozor: navigacija po predstavitvi deluje s tipko desno in včasih tudi navzdol). Predstavitev je bila zanimiva, ker so imeli v Gijonu sila podobno situacijo kot je v Ljubljani še vedno, le da so španci aktivno pristopili k ponovni rabi. Ko so španski odprtopodatkovni navdušenci in mestne oblasti sedli skupaj, so uvideli, da ni omejitev, da ne bi podatkov naredili dostopnih javno. Posledično so aplikacije razvile tudi tretje osebe, npr. posamezni razvijalci in pa podjetja. Zanimivo je, da v predstavitvi kot primer izpostavlja tudi aplikacijo, ki teče na tabličnem računalniku, ki je pritrjen na steno lokala, kjer lahko gosti vidijo čase prihoda avtobusov - podobno (potencialno) rabo sem namreč že sam izpostavil že septembra 2011 v predstavitvi na temo odprtih podatkov.

A ponovna raba se ne ustavi tu, večje LCD zaslone z informacijami o voznih redih so španci namestili tudi v bolnišnice in na fakultete, tako da pacientom in študentom ni potrebno stati na soncu in dežju - če tega seveda ne želijo.

V Ljubljani se je situacija razvila tako, da sem šel aprila 2012 na obisk na LPP k gospodu Joštu Šmajdku, ki je pojasnil, da LPP vozne rede smatra kot poslovno skrivnost. Zaradi performančno zanič rešitve ter želje, da nadzorujejo pretok informacij, pa programskega vmesnika ne objavljajo javno. Kljub temu so na voljo aplikacije za mobilne telefone za LPP, na primer Trola, LPP Info in LPPBus.

Ko je znanec pred kakšnim letom od LPP zahteval informacije o postajališčih, jih je dobil šele po pritožbi na urad Informacijskega pooblaščenca, ter še takrat natisnjene, v papirnati obliki. Če bi bil sam direktor LPP, bi mi vsekakor bilo v interesu, da imajo potencialni potniki na voljo čim boljše informacije o prihodih avtobusov, zato se mi zdi skrivanje informacij o postajališčih in voznih redih nerazumno, ker LPP s tem zavira in omejuje ponovno rabo.

Odprti podatki pri Amsterdamskih gasilcih

Bart van Leeuwen (@semanticfire) je profesionalni gasilec in razvijalec. Gasilci se za razliko od večine zelo dobro zavedajo pomembnosti upoštevanja tveganj, Bart pa to poskuša peljati še korak dlje.

Imel je zelo privlačno predstavitev, v kateri je predstavil kako so z uporabo odprtih podatkov znižali stroške in zmanjšali tveganja. Zgolj za licenčne zemljevide Amsterdama so letno namenjali 600 tisoč evrov. Z informatizacijo in avtomatizacijo povezovanja zemljevida, podatkov o lokaciji, o tipu zgradbe, o rabi zgradbe in o požarni ogroženosti okolice lahko gasilci bolje precenijo situacijo ter gredo v akcijo bolje pripravljeni, z manj neznankami in manj tveganja.

Njegov pristop mi je všeč, ker je proaktiven in preventiven. Gasilci bojo vedno potrebni, odločitve, ki jih sprejemajo, pa nosijo zelo velika tveganja. Ker so tveganja velika, na intervenciji ni dosti prostora za površnost, zato je predhodna pripravljenost ekipe toliko bolj pomemben faktor. K temu pa seveda sodijo tudi kvalitetno ovrednotene informacije, ki so podlaga za odločanje.

Informacijska podpora slovenskim gasilcem

Poleg Supervizorja se je na Share-PSI predstavljal še en slovenski projekt, in sicer projekt Laboratorija za telekomunikacije Fakultete za elektrotehniko 6inAction. Gre za sistem, ki omogoča boljšo komunikacijo reševalnih enot na terenu, bodisi z nadzornim centrom bodisi med sabo, za to pa uporablja vse kar lahko, od namenskega omrežja za reševalne službe tetra, ki ima majhno prepustnost, do komercialnega mobilnega omrežja, ki omogoča tudi prenos videa.

Morda bi kdo oporekal rabi mobilnega omrežja za namene reševalnih služb, a se izkaže, da so v več kot 99% primerov komercialno dostopna mobilna omrežja enako ali bolje preizkušena, imajo enako ali boljšo pokritost in se hitreje razvijajo od specialnih omrežij, kakršno je npr. tetra. Ob ustrezni nastavitvi na nivoju operaterja mobilna omrežja omogočajo tudi zagotavljanje kvalitete storitev, tako da imajo podatki reševalne službe prioriteto pred ostalimi, s tem pa odpade tudi pomislek o zasičenju omrežja.

Prvič so slovenski gasilci sistem menda uporabili letos na mednarodni intervenciji ob poplavah v BiH in v Srbiji, kjer naj bi se sistem dobro obnesel.

Italjansko črpanje Evropskih sredstev

Črpanja sredstev iz kohezijskih skladov EU, ki zaradi nepravilnosti v Sloveniji predstavljajo pereč problem (ravno danes prihaja nova serija klofut iz EU), so se v Italiji lotili z odprtostjo. OpenCoesione je portal (v italjanščini), na katerem lahko vsakdo pregleda stanje posameznega projekta, ki prejema sredstva iz kohezijskega sklada EU. Na voljo so informacije o temi projekta, o regiji, kjer se projekt izvaja, o ciljih projekta ter o višini dodeljenih in že izplačanih sredstev.

Po navedbah predavatelja projekt bdi nad 75 miljardami investicij, s pomočjo projekta pa so uspeli razkriti tudi "zombi" projekte, ki so na papirju videti super, v realnosti pa se projekt ne izvaja. Ne dvomim, da se taki projekti najdejo tudi v Sloveniji.

Podoben ukrep bi sam predlagal tudi slovenskim ministrstvom, a me je hkrati strah, ker bi zelo verjetno projekt dali v izvedbo večjemu IT podjetju, ki bi ga predimenzioniral ter si vzel celo leto za izvedbo. Na izvedbenem nivoju smo v Sloveniji zelo šibki, o tem več nekoč drugič.

Kvalitetna storitev javne uprave po Norveško

Predstavnika Norveške agencije za javno upravo in eupravo sta natresla nekaj zanimivih statistik. Z anketo so izvedeli, da se kar 72% javnih organov zaveda, da imajo drugi organi podatke, ki bi jim pri delu koristili, ter da se jih kar 55% zaveda, da držijo podatke, ki bi koristili drugim organom.

To so veliki deleži, problem, ki pri tem nastopi, pa je deljenje podatkov. Poleg tehničnih detajlov - v kakšnem zapisu se bodo podatki izmenjevali - so tu še pravna vprašanja - katere podatke se sme deliti ter s kom.

V ta namen so za označevanje politike deljenja podatkovnih zbirk dorekli sistem semaforja, kjer so z rdečo označene tiste podatkovne zbirke, ki se delijo zgolj z uporabnikom, ki se ga podatki tičejo, z rumeno tiste, ki se delijo omejeno, z zeleno pa tiste podatkovne zbirke, ki so široko dostopne. S takim poenostavljenim sistemom potencialni uporabnik hitro dobi osnovno informacijo o dostopnosti podatkov.

En bolj znanih norveških uspehov na področju odprtih podatkov je vremenski portal yr.no, kjer so z odpiranjem odkrili zelo stare napake v računskih modelih, ki se uporabljajo za napovedovanje vremena.

Naslednji zelo všečen koncept, ki ga uvajajo norvežani, je enoten centralni prijavni sistem ter register za kontaktne informacije državljanov. Enoten prijavni sistem menda omogoča prihranke in večjo učinkovitost javne uprave.

Ideja o enotnem registru kontaktov mi je všeč, ker pričakujem, da bomo v naslednjih nekaj letih v Sloveniji kvaliteto javne uprave dvignili na nivo, da bi javni uslužbenec poklical državljana, ko bi naletel na situacijo, da bi potreboval dodatno informacijo in ne obratno, da mora državljan preverjati kaj se z njegovo zadevo dogaja.

~~

Skupen strokovni izkupiček konference je bil presenetljivo dober. Čeprav je večina zadev predstavljala take in drugačne EU ter državne projekte, so med njimi tudi nekateri res dobro izvedeni, od katerih se je bilo vredno in možno marsičesa naučiti.

Nesposobna mestna občina in Koalicija za trajnostno prometno politiko
pod kategorijami: slovenija kolesarstvo ljubljana

Projekt ureditve Dunajske ceste se prestavlja na naslednje leto. Tako se bomo kolesarji še eno sezono metali pod kolesa na Dunajsko.

V knjižnici Bežigrad je bil v torek javni posvet na temo projekta ureditve Dunajske ceste. Nisem ujel celega posveta, a ambient je bil grozen in pozornemu opazovalcu je razgalil tipično komunikacijsko situacijo v Sloveniji, ko se dve ali več strani pogovarjajo in govorijo drug mimo drugega.

Projekt širitve Dunajske je bil medijsko zanimiv, ker naj bi predstavljal odstopanje od sprejete prometne politike mestne občine, ki je v sprejete načrte zapisala, da si želi zvišati delež kolesarjev in uporabnikov potniškega prometa. Sam pravim "naj bi", ker nikjer ni najti predloga okoljskega podrobnega prostorskega načrta (OPPN) za ureditev Dunajske. Glede na trenutno ureditev se situacija za kolesarje skoraj ne more poslabšati, tako da bi bil sam zelo vesel ureditve.

Mediji so tako ustvarili potrebo po dodatnih informacijah, občina pa tej potrebi ne sledi. Kaj se zgodi? Na posvetu so gospodje z mestne uprave skušali na suho pojasnjevati in odgovarjati, da bo nova ureditev boljša. A brez konkretnih predlogov, npr. variant izvedbe A, B in C je celoten posvet izpadel kot prepiranje o vsebini črnega žaklja. Seveda potem ni nobeno presenečenje, da se neobveščeni, informacijsko shirani občani množično uprejo.

Organizator posveta, Koalicija za trajnostno prometno politiko, pa je tudi izbral idealen čas v dnevu - ob 12. uri, ko so vsi, ki bi jih posvet zanimal, v službi. Očitek za izbiro te ure pa je letel na občino, na katero so stanovalci že bili jezni, ker jih ni sposobna ustrezno obveščati.

Če bi na MOL res želeli, da se Dunajska uredi, bi morali javno objaviti bistveno več informacij:

  1. Ta moment sploh ni mogoč pregled OPPN prek lokacije, npr. klika na zemljevid ali prek filtriranja po ulicah ali vsaj po četrtnih skupnostih.
  2. OPPN gre v javno objavo šele ko pride v fazo javne razgrnitve, takrat pa (predvidevam) se vidi le rezultat. Verjetno ni dobrega razloga, da ne bi javno objavili celotnega postopka. No, razen če si župan gradi tajen podzemni tunel za pobeg ...
  3. Javni posveti, kakršen je bil v knjižnici Bežigrad, morajo biti opremljeni z grafičnimi prikazi. Tloris in, če je možno, 3D, minimalno vsaj za trenutno stanje. Precej lažje bi se razvila vsebinska debata. Za to bi lahko poskrbel tudi organizator, namesto tega pa so se dialogi vrteli ob tem, da so sogovorniki zgolj z besedami prišli na isto lokacijo. Najbolje pa bi seveda bilo, če bi tovrsten prikaz nudila že občina kar na spletu, kjer bi lahko občani videli tudi že vložene pripombe.

Zato ni nič čudnega, da se na MOLu kujajo, da jih občani ne razumejo, občani pa obratno, da jim MOL ne prisluhne. Pričakovano, če pa so tako nespretni v kvalitetni komunikaciji. Tako organizator, kot mestna občina.

Obstaja posnetek posveta in če bi organizator in MOL ne bila nesposobna, bi ga preučila ter se učila na lastnih napakah.

Morilci na Ljubljanski mestni upravi
pod kategorijami: slovenija kolesarstvo ljubljana

Ta vikend je kolesarski festival. Mestna občina se rada podpiše pod marsikaj, da izgleda, da se trudi za kolesarje. Ker ni tako, sem dolžan objaviti spodnji dopis, ki ga je Oddelek za gospodarske dejavnosti in promet MU MOL prejel septembra 2013. Po preteklega tričetrt leta se še vedno nič ni spremenilo, niti ni na dopis ni bilo odgovora. Ker sem prepričan, da občina ne bi smela žrtvovati življenj, preden se prometna ureditev zgledneje uredi, kakor se je to zgodilo na Slovenčevi, si preberite kako neodzivna je mestna uprava za utemeljene predloge izboljšanja kolesarskih stez.


Spoštovani,

Kolesarske površine v Ljubljani niso optimalne, a kljub temu omogočajo, da je možno razmeroma udobno priti v katerikoli predel mesta. Občasno pa izkušnjo zmotijo posamezne kritične točke. Ena od takih kritičnih točk se nahaja na kolesarski stezi poleg prehoda za pešce čez Dunajsko cesto pri križišču s Kržičevo.

Situacija

Kolesarska steza je tu vodena vzporedno z Dunajsko in najprej prečka Kržičevo, tam pa je zarisana po površini za pešce, kjer zavije levo in spremeni smer pravokotno na Dunajsko. Dalje je izvedena s spustom na nivo vozišča poleg prehoda za pešce, pod pravim kotom na Dunajsko,tu pa zavije ostro desno in je spet vzporedna z Dunajsko. Naprej prečka uvoz do kompleksa Bežigrajski dvor in se dvigne nazaj na pločnik.

Slika prikazuje pot kolesarja ob Dunajski cesti v smeri od centra, stanje danes (zaslonski posnetek Servisa pobude meščanov z ročno označeno potjo)

Utemeljitev neustreznosti trenutne ureditve

Trenutna ureditev kolesarske steze je neustrezna zaradi več faktorjev:

  1. Gostota kolesarskega prometa. Kolesarska steza ob Dunajski je ena ključnih kolesarskih stez v Ljubljani, kjer se s kolesom letno opravi od 500 do 575 tisoč poti (v povprečju od 1300 do 1500 poti na dan) [1].
  2. Gostota motoriziranega prometa na Dunajski cesti. Dunajska cesta je imela leta 2005 povprečno letno dnevno obremenitev 53000 vozil [2], od takrat pa je promet verjetno še dodatno narasel. Pri trenutni izvedbi pride kolesar v neposredno bližino vozišča motoriziranega prometa.
  3. Vpadni kot in polmer krožnega loka ovinka. Kolesarji po kolesarski stezi pripeljejo pravokotno na Dunajsko cesto, polmer krožnega loka ovinka pa je bistveno manjši od minimalnega krožnega loka kolesarskih stez, ki znaša R=5,0m. Polmeri, manjši od 5,0m, predstavljajo tveganje za kolesarje, saj je potrebno hitrost zmanjšati pod 12 km/h, s tem pa se tudi bistveno zmanjša stabilnost kolesarja [3].
  4. Kolesarska steza je vodena ob robu voznega pasu za motoriziran promet, kjer se pogosto nabira pesek in drug drobir, kar predstavlja še dodatno nevarnost za zdrs kolesarja.
  5. Kolesarska steza je vodena neposredno poleg prehoda za pešce, zaradi česar se ob in na kolesarski površini pogosto nahajajo pešci in mirujoči kolesarji, ki čakajo na prečkanje Dunajske ceste, ter tako zapirajo kolesarjem pot.

Predlog spremembe

Predlagam, da se kolesarsko stezo spelje bolj direktno preko uvoza na dvorišče kompleksa Bežigrajski dvor. Različica A je izvedba z dvigom uvoza na nivo pločnika, različica B pa s spustom kolesarske steze na nivo uvoza in z dvigom nazaj. V obeh primerih to predstavlja bistveno izboljšanje varnosti od sedanje izvedbe.

Slika prikazuje pot kolesarja ob Dunajski cesti v smeri od centra, predlog spremembe je označen z zeleno(zaslonski posnetek Servisa pobude meščanov z ročno označeno potjo)

Za predlagano rešitev ni ovir:

  • Dostop na dvorišče prek uvoza je omejen in zahteva odklep. Uvoz zato ni v redni rabi in gost kolesarski promet ne bo predstavljal dodatnega tveganja.
  • Zemljišče je klasificirano kot cesta.
  • Zemljišče je v upravljanju Mestne občine Ljubljana.
  • Za različico A bi potrebovali mehanizacijo za polaganje asfalta in večjo količino asfalta (groba ocena 1m3).
  • Za različico B bi zadostovalo ročno polaganje spustne in dvižne klančine, prav tako bi bilo potrebno bistveno manj materiala.

Upam, da se zavedate neprimernosti trenutne izvedbe in da boste v najkrajšem času odpravili nevarno točko ter odprave ne boste odložili v projekt ureditve rumenih pasov. Odlašanje z odpravo vsakodnevno ogroža prek tisoč kolesarjev in ob dani gostoti kolesarjev me preseneča, da se še ni pripetilo kaj hujšega.

Če oziroma ko - ob taki izvedbi in gostoti prometa gre namreč le za vprašanje časa - se bo pripetilo kaj hujšega, pa bo ta dopis služil kot dokazno gradivo, da ste bili o nevarnosti točke pred tem že obveščeni in da kljub enostavnosti odprave tega niste storili.

S spoštovanjem.


Viri:

Prikritega oglaševanja brez možnosti prekinitve naročnine res ne bomo pogrešali
pod kategorijami: slovenija mediji internet

Styria Media Group AG, lastnik Žurnala, se je odločil, da brezplačnik zaradi izgub ukine. Društvo novinarjev Slovenije je mnenja, da je to katastrofa za celoten javni prostor. Pravijo:

Zaprtje vsakega medija, ki je prispeval k novinarsko profesionalnemu in verodostojnemu obveščanju javnosti in je pomenil dodatno ponudbo na trgu, je zelo slaba novica za medijski prostor in novinarstvo.

Trditev, da je bil Žurnal novinarsko profesionalen in verodostojen medij, ne bi mogla biti dlje od resnice. Ob tem ne mislim novinarjev, ki so medij ustvarjali, ampak medij kot celoto, še posebej to velja za tiskano izdajo ob vikendih.

Poglejmo zakaj Žurnala, ki je bil pravzaprav svitek pisanih oglasov, prikritih oglasov in nekaj besedila, ne moremo primerjati z Dnevnikom ali Delom. Na spodaj prikazani strani je oglas. Ga vidite? Če ga ne, lahko na sliko kliknete, da se prikaže namig.

Opa, kar dva oglasa sta! To je 25. stran Žurnala, izdanega na soboto, 9. marca 2013. Na njej so tri besedila, ki oblikovno ustrezajo člankom, dva od teh pa sta oglasa. Poskusimo še enkrat, tokrat z 31. stranjo iste izdaje Žurnala. Prepoznate oglas? Klik, če ne.

To žal nista osamljena primera v tej isti izdaji Žurnala, celotna "oglasna priloga" je nabor oglasov in vsakemu oglasu pripadajočega članka, tega pa si sam ne znam razlagati drugače, kot da gre za prikrito oglaševanje.

Posebej škodljivo je, da gre pogosto za z "zdravim" življenjem povezane oglase, pri čemer niti znanost ne ve kaj točno pomeni "živeti zdravo", saj je v času življenja posameznika enostavno preveč dejavnikov, da bi jih lahko dobro razumeli. Sobotni Žurnal so na območju večjih mest dostavljali tudi v nabiralnike, temu pa se tudi ni bilo moč izogniti, saj je Žurnal veljal za medij in ne za reklamni letak. Gre za izkoriščanje enake pravne luknje, kot so jo izkoriščali zloglasni predvolilni brezplačniki.

Posledica tega je bila, da so stare gospe veselo in nekritično prebirale Žurnal, na avtobusu pa si lahko slišal kaj vse bi morale kupiti, da bi bolj zdravo živele.

Prikrito oglaševanje je tudi zakonsko prepovedano po 47. členu Zakona o medijih. Za prikrito oglaševanje velja tudi domneva, da je narejeno z namenom, torej, da ni možno, da bi urednik naključno odobril članek, ki omenja Nodol, seveda poleg oglasa za Nodol.

Za nadzor nad mediji oziroma nad prikritim oglaševanjem je pristojen Inšpektorat RS za kulturo in medije. Škoda je videti, da je to zgolj še eno področje, na katerem se nadzor ne izvaja. Z zavajanjem s strani medijev se namreč dela škoda celotni družbi, pri Žurnalu pa pri sobotnih izdajah ni bilo niti privolitve k ogledu oglasov, kakšrno uporabnik naredi npr. pri obisku spletne strani, saj je Žurnal prispel v nabiralnik, želeli ali ne. Ravno zaradi te nezmožnosti odpovedi "naročnine" je predstavljal še toliko večji poseg v delovanje družbe.

Da Žurnal ne bo več strašil in zavajal po nabiralnikih, je nekaj, kar kar me zares veseli. Društvo novinarjev Slovenije se bo moralo zamisliti, če z označevanjem Žurnala kot kredibilnega medija ne škodijo svoji kredibilnosti. Novinarjem, ki so ostali brez dela, pa želim, da bi iz vsega potegnili čim več lekcij, da bi se iz njih naučili, česa v bodoče ne smejo ponoviti, ter predvsem da ne bi obupali.

Sam pa si bom danes še zadnjič postregel z Žurnalom tako, kot ga imam najraje. Na žaru.