02. 09. 2010.

Razgovori o slobodnom softveru #6 : NoSQL - kome još treba 3NF? / Dobrica Pavlinušić ; gost Ivan Voras

Ovaj puta Dobrica Pavlinušić i Ivan Voras razgovaraju o raznim NoSQL bazama i lamentiraju o tome da li je došao kraj relacijskim bazama.
download mp3

Muzička podloga: Aquarius by SaReGaMa

Ovaj puta Dobrica Pavlinušić i Ivan Voras razgovaraju o raznim NoSQL bazama i lamentiraju o tome da li je došao kraj relacijskim bazama. download mp3 0:32-0:35 D: Dobrica Pavlinušić 0:48-0:49 I: Ivan Voras 0:50-1:07 D: kako je NoSQL različit...

29. 08. 2010.

Budget Surfer 0.0.1

Jučer sam htio istražiti koliko je našeg zajedničkog novca utrošeno na softverske licence za MS Windowse, Office i ostale proizvode više ili manje lako zamjenjive sa FOSS ekvivalentima. Jedine informacije koje sam zasad uspio dobiti su u dokumentu "Poseban dio Državnog proračuna Repulike Hrvatske za 2010. godinu i projekcije za 2011. i 2012." koji se nalazi ovdje http://mfin.hr/hr/drzavni-proracun-2010 .

Predpostavljam da je i Vizualizacija proračuna od projekta vjetrenjača napravljena iz istog podatkovnog izvora.

Kako bih produktivno gubio vrijeme odlučio sam napraviti mali program koji će importirati ovaj Excel u SQL bazu i omogućiti lakše "surfanje", filtriranje itd.

Ako se predpostavi da je softver u stavkama "INFORMATIZACIJA*", u podstavkama "Rashodi za nabavu neproizvedene imovine", onda ukupni iznos iznosi oko 24.5 milijuna kuna.

Informatizacija, Rashodi za nabavu neproizvedene imovine



No zanimljivo, misteriozne podstavke s naslovom "Rashodi za nabavu neproizvedene imovine" (koje nemaju nikad detaljnije podstavke) ne pojavljuju se samo u stavkama "INFORMATIZACIJA*", nego i npr. "RAČUNALNO KOMUNIKACIJSKA INFRASTRUKTURA U VISOKIM UČILIŠTIMA I JAVNIM INSTITUTIMA" od 14 milijuna kn i mnoge druge kategorije što nas dovodi do ukupnih oko 105 milijuna kuna.

Rashodi za nabavu neproizvedene imovine


Ono za što je predpostaviti da ima neku vrijednost u nabavkama softvera u Informatizaciji su stavke
"Nematerijalna proizvedena imovina" za koje je predpostaviti da se radi o softveru rađenom po narudžbi, tj koji se proizvodi za potrebe rada države. Ukupni iznos ovoga je oko 74 milijuna kuna.

Softver po narudžbi

25. 08. 2010.

Razgovori o slobodnom softveru #4: SSL i CA certifikati - nužno zlo? / Dobrica Pavlinušić i Ivan Voras ; gosti Tonimir Kišasondi i Vlatko Košturjak

U četvrtoj epizodi razgovora o slobodnom softveru Dobrica Pavlinušić, Ivan Voras, Tonimir Kišasondi i Vlatko Košturjak razgovaraju o SSL-u, CA certifikata, DNSsec-a i srodnim temama.
download mp3

muzička podloga: Hope by Kendra Springer

U četvrtoj epizodi razgovora o slobodnom softveru Dobrica Pavlinušić, Ivan Voras, Tonimir Kišasondi i Vlatko Košturjak razgovaraju o SSL-u, CA certifikata, DNSsec-a i srodnim temama. download mp3 0:59-1:53 I: Tema dana je SSL i CA (Certificate Authority) 1:54-2:17 V:...

24. 08. 2010.

Moj kupus, ŠBBKBB iliti TODO lista

Ako niste voljni čitati nadobudne i vjerovatno pretenciozne osobne rantove i brain dumpove slobodno preskočite ovaj post.


Pošto izgleda da je danas dan kada dajem otkaz još jednoj u nizu closed source (i closed mind dodao bih) firmi, možda je najbolje da se opustim uz nekoliko naivnih i praktičnih ideja za koje znam kako ih izvesti. Vjerovatno ću šarati od ideja za pojednostavljenje državne birokracije preko ideja za Android aplikacije, do bojnog plana za osvajanje javnog sektora od Linux desktopa u Hrvata.

No prvo o tome što mi je činiti u sljedećem razdoblju: Trebam naći poslodavca koji će shvaćati i prihvaćati da su mi briga za obitelj, prijatelje, zajednicu i moje sebične interese (fakultet recimo) na prvom mjestu. Vjerujem da takav već postoji, a ako netko ima ideju ili prijedlog slobodno se javite.

Ajmo polako s idejama:

Down to earth:

1. Proširiti postojeću Kostovu inicijativu za Android Market account tako da razvijemo i održavamo nekakav HULK-ov sistem donacija za domaće Free Software Android / Whatever aplikacije.

2. Android aplikacija koja skenira barcodove prehrambenih proizvoda i ima offline bazu sa crnom listom Ebrojeva u proizvodu. Samo uzmete proizvod u dućanu u ruke, skenirate mu barcod i dobijete crveno ili zeleno ovisno o tome ima li proizvod štetnih E dodataka (naravno postoji opcija za pregled detalja E brojeva a ako smo online i drugih detalja vezanih uz proizvode). Dodatno bi se ta radnja mogla iskoristiti da se proizvod zabilježi kao kupljen, te tako možemo imati i neki pregled / povijest potrošnje, a i jednostavniji način izbora namirnice kod brojanje kalorija ili neko drugo sofisticiranije praćenje prehrane. Naravno za organski proizvedene proizvode bez bar koda treba smisliti nešto drugo za jednostavno identificiranje (brzi izbor voće, povrće, boja, oblik, last recently used etc)


Blue sky:

Ideje u domeni odnosa države i građana:

I. Zdravstvena knjižica:

Kako relativno često mijenjam poslove, primjetio sam jednu glupu ostavštinu prošlih vremena: Posebnu zdravstvenu knjižicu koju iz nekog čudnog razloga treba mijenjati svaki put kada se promjeni radni status, a valjda i svaki put kada završite osnovnu, srednju ili fakultet. Ta zdravstvena knjižica ionako sadrži datum isteka koji ne znači baš ništa (jer osiguranje formalno može "isteći" i prije - o tome kako se uopće u socijalnoj državi može dogoditi da nemate osnovno zdravstveno osiguranje malo poslje). Dakle jedino što bi na njoj trebalo biti bitno je broj zdravstvenog osiguranja, odnosno OIB odnosno JMBG odnosno broj osobne izkaznice odnosno broj putovnice. Sve su to u biti ključevi za identifikaciju građana RH, i u teoriji bi bilo dovoljno imati recimo samo osobnu ili putovnicu (sa barcodom ili npr. qr codeom za strojno čitanje tog malog ključa). Status zdravtvenog osiguranja bi se transparentno u pozadini promjenio kada bi dobili prvi posao, dali otkaz, završili fakultet itd itd. Ionako ga uvijek zapravo imamo (neki imaju i bonus dopunsko ako su bez posla ili slično) i jedino što je bitno je da se to na nekog "knjiži" radi poreznih razloga, ali to stvarno ne znači da svaki put moramo mijenjati tu plastiku. Predpostavljam da fino zarađuje na toj plastici, a ako nije u pitanju neka korupcija, opet me fascinira glupost u javnom sektoru (nadam se da je samo glupost, jer tada je valjda lakše popraviti ovo).

A drugi problem/pizdarija oko zdravstvenog osiguranja je to što se može dogoditi da ostanete neosigurani jer ste recimo mislili da datum isteka koji piše na zdravstvenoj kartici zapravo znači datum isteka zdravstvenog osiguranja. Ne, to znači jedino i samo to koliko vrijedi taj komad plastike. U idealnom slučaju status zdravstvenog osiguranja bi se računalno provjerio prilikom svakog korištenja neke zdravstvene usluge, i gdje bi se korisnik samo upozorio da njegov status nije jasan (recimo zbog završetka studentskih prava gdje je uobičajeno da zdravstveno osiguranje sa roditelja/fakulteta "prelazi" na zavod za zapošljavanje ili budućeg poslodavca).

II. Još malo o zdravstvu:

Bilo bi lijepo kada bi laboratoriji za pretrage odnosno specijalisti automatizmom digitalno slali informacije o nalazima liječniku opće prakse, odnosno nadležnom specijalistu. Vjerujte, ovo bi uštedjelo kilometre i kilometre koji ljudi sami prelaze kako bi raznosili nalaze okolo liječnicima. U tom slučaju bi i liječnici mogli nazvati pacijente čim nalazi stignu, a ne da pacijenti moraju raditi upite svako malo. Dakle u računalnom žargonu, "digital event based a ne analog poll bazed event handling". Bilo bi lijepo i da pacijenti građani) imaju token za pristup centralnoj birokraciji gdje mogu sami pogledati svoj zdravstveni karton, rezultate pretraga, plan liječenja, dijetu, prisjetiti se ocjena u školi ili za one za nekom vrstom alzeihmerove bolesti, vidjeti koliko nekretnina imaju, tko su im roditelji, gdje su rođeni, itd itd :) I tako, ima tu puno etičkih i drugih pitanja koje treba razmotriti prije deploymenta. No predpostavljam da ne želimo da ovako nešto jednom za nas radi neki closed source sistem ili nedaj bože Facebook :)

U varijanti gdje JMBG ili OIB ili broj osobne ili broj putovnice stvarno postaju ono što jesu, a to su ključevi s kojim se identificira građanin-pojedinac, nije nam više potrebna niti radna knjižica niti pokaz niti Xica, a u idealnom slučaju (kada bi imali taj "token").

Od domaćih sustava, možda je upravo sustav iza Xice (ili studomata) baza za ovakvo nešto.


III. Stavimo Linux na desktope javnog i državnog sektora.

Stvarno, želimo li i danas, uz solidan i uoptrebljiv desktop na linuxu plaćati svake godine milijune za MS licence? Možda možemo otvoriti malu firmu koja bi se bavila supportom i specifičnim potrebama korisnika u državnom sektoru za novce utrošene na MS licence i time bar malo spriječiti odlijev novca odnosno nepovoljan omjer uvoza i izvoza?

IV. Pomognimo Marku Rakaru da http://proracun.pollitika.com/2010/korisnici.html ima više informacija, real time informacija, podataka o aktivnim natječajima u javnoj nabavi i slično ili nagovorimo državu/vladu/sabor da ovakave projekte kvalitetno odrađuju Narodne novine tj da ih financira sama država.

V. Pripremimo sve ove projekte tako da lako postanu dio nečeg većeg kada uđemo u EU ili se ujedinimo sa USA (kiberkomunist approved). Koristimo postojeća (Free software) riješenja gdje god možemo. Nemojmo se bojati ulagati u globalnu zajedničku infrastrukturu.

VI. Podržimo Zajedničko i zadružno stanovanje http://bit.ly/bEbcwK, Reciklirano imanje - Vukomerić http://bit.ly/arRK0U i slične projekte.

VII. Nacionalizirajmo ponovo Hrvatske Telekomunikacije ili barem:

Definirajmo jasnije javno pravo na DTK. Prisilimo HT na članstvo u CIX-u. Dajmo im dozvolu da postavljaju optiku, stavimo cijenu za najam niti na 100 kn po mjesecu po korisniku kako bi se brže vraćala investicija, ali svakako omogućimo da infrastrukturu od prvog dana mogu koristiti i alternativci. Regulirajmo maksimalne i minimalne cijene. Postavimo u zakon da svaka telefonska parica / veza može prenijeti neki normalni broadband a ne trenutnih 128K kako bi prisilili monopolistu da izgradi lokalnu infrastrukturu (ili stvorimo budžet za ovo dodatnim oporezivanjem operatera sa veliki tržišnim udjelom). Borimo se za simetrični broadband (sa korisnim upload brzinama). Borimo se za low latency broadband. Borimo se za 100megabitne, i gigabitne internet veze. Zadnje tri stavke omogućavaju i vrlo dobar peer to peer cloud - što nam treba za nekakav Diaspora-like social networking). Iskoristimo stvarno podatkovne kapacitete javnih poduzeća. Kad planiramo novu infrastrukturu za nova ili postojeća naselja, predvidimo i prostor sve bitno (da i optički internet pristup), kako nebi nepotrebno prekopavali kvart/naselje svako malo.

VIII. Dolazimo na razmjene vještina.

IX. Stvorimo računala koja možemo uzgajati kao što uzgajamo biljke i koja si stvaraju energiju sama kao što ih stvaraju biljke i koja imaju mrežu korjenja za povezivanje slično kao što i biljke imaju korijenje (prvi korak, pogledajte http://bbf.openwetware.org/).

X. Razno.

Diskusija o ovom blog postu nalazi se i na Friendfeed-u




23. 08. 2010.

Razgovori o slobodnom softveru #5 : Android development / Dobrica Pavlinušić ; gosti Nikola Kapraljević, Vedran Rodić i Vlatko Košturjak

Mislili ste da smo u zadnjem podcastu o Androidu zaboravili spomenuti razvoj? Nismo, ovaj put Dobrica Pavlinušić, Nikola Kapraljevic, Vedran Rodić i Vlatko Košturjak razgovaraju samo o tome!
I ne samo to! Ako vam je 25 USD problem za objavu Vaše Android aplikacije pod OSI licencom na marketu, pošaljite je na android@linux.hr i HULK će je objaviti!

download mp3

muzička podloga: Island of Dreams by Dreamweaver

Mislili ste da smo u zadnjem podcastu o Androidu zaboravili spomenuti razvoj? Nismo, ovaj put Dobrica Pavlinušić, Nikola Kapraljevic, Vedran Rodić i Vlatko Košturjak razgovaraju samo o tome! I ne samo to! Ako vam je 25 USD problem za...

18. 08. 2010.

Does every web application have API?

Of course it does, it's get and post requests which your browser does to server. And if you need to modify in bulk records in your web application (Koha in our example) you might wonder about writing a script which does job for you.

It's not really hard. WWW::Mechanize provides us with web browser scriptable in perl and following scripts logs in into Koha's interanet and edit items specified in file:

#!/usr/bin/perl

use warnings;
use strict;

use WWW::Mechanize;
use Data::Dump qw(dump);

# we will use %d and %s to insert values from file
my $url_template = 'https://localhost:8443/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=%d';

our ( $user, $passwd );
require 'config.pl'; # edit $user and $password in config.pl file

my $login_url = 'https://localhost:8443'; # Koha intranet

my $mech = WWW::Mechanize->new( autocheck => 1 );


warn "# login $login_url\n";
$mech->get( $login_url );

$mech->submit_form(
	fields => {
		userid => $user,
		password => $passwd,
	},
);

sub modify_field; # declare later

while( 
 ) {
	chomp;
	my @v = split(/\s+/,$_);
	warn " ",dump(@v),$/;

	my $url = sprintf $url_template, @v;
	warn "# url $url\n";
	$mech->get( $url );

	my $form = $mech->form_number( 1 ); # XXX 1st form

	# XXX edit fields

	modify_field $form => 'tag_008_subfield_00' => sub { s/^(.{24}).(.+)/$1d$2/ };

	$mech->submit;
}

exit;

# magic to find field name by partial match from beginning
sub modify_field {
	my ( $form, $field, $coderef ) = @_;

	my @inputs = $form->inputs;
	my ( $name, $value ) = map { $_->name, $_->value } grep { defined $_->name && $_->name =~ /^\Q$field\E/ } $form->inputs;
	die "can't find $field in ", $mech->dump_forms unless $name && $value;

	$_ = $value; $coderef->($value);
	my $new = $_;

	if ( $value eq $new ) {
		warn "WARNING: $name not changed [$value]\n" if $value eq $new;
		return;
	}

	warn "$name\n\tOLD: $value\n\tNEW: $new\n";

	$mech->field( $name, $new );
}
Interesting part is modify_field which tries to find field with specified prefix, since Koha adds unique numbers to all field names in edit form.

This script proved to be very useful for us, and hopefully it might be useful for other users of Koha also.

17. 08. 2010.

EVOLIS Dualys pixel exact printing without cups

Dualys3.jpg As you know by now, I'm working pure free software implementation of RFID support for our library. This time, I decided to tackle problem of printing RFID cards using EVOLIS Dualys printer.

This is experimental support for EVOLIS Dualys 3 printer with black ribbon (K) to provide pixel-exact driver with support for two-side printing.

Existing cups driver is available at

http://www.evolis.com/eng/Drivers-Support/Product-support/Dualys-3

but I haven't been able to make it print on both sides of cards, partly because using dumplex option in cups seems to segfault GhostScript and/or rastertoevolis cups filter depending on combination of duplex options.

I also needed pixel perfect transfer to printer, and cups bitmap format is always in color, leaving final pixel modifications down to cups filter which always produced differences between file sent to printer and perfect black and white rendition of it.

SCRIPTS

Current toolset consists of following scripts:

EXAMPLE

Following is simple walk-through from svg image in Inkscape to evolis command stream which can be executed in top-level directory of this distribution:

  ./scripts/inkscape-render.pl card/ffzg-2010.svg 201008159999 Ime Prezime
  ./scripts/evolis-driver.pl out/201008159999.front.pbm out/201008159999.back.pbm > evolis
  ./scripts/evolis-simulator.pl evolis
  qiv evolis*.pbm

15. 08. 2010.

Panorama pod linuxom

Za to koristim program Hugin. Ovo je napravljeno od 5-6 zasebnih slika. Puna veličina (1.6MB).

09. 08. 2010.

Razgovori o slobodnom softveru #3 : Android / Dobrica Pavlinušić ; gosti Dinko Korunić, Tonimir Kišasondi

U ovoj epizodi Razgovora o slobodnom softveru Dinko Korunić i Tonimir Kišasondi pokušavaju uvjeriti Dobricu Pavlinušića da je Android odličan odabir za svakog geek-a.
download mp3 Muzička podloga: Point of no return by Roger Subirana Mata U ovoj epizodi Razgovora o slobodnom softveru Dinko Korunić i Tonimir Kišasondi pokušavaju uvjeriti Dobricu Pavlinušića da je Android odličan odabir za svakog geek-a. download mp3 Da li iz prespektive potpuno slobodnog OpenMoko-a ima smisla razmatrati Android? 2:55 Forumi za...

Razgovori o slobodnom softveru #2 : sigurnost - tko se boji vuka još... / Dobrica Pavlinušić ; gosti Tonimir Kišasondi, Ivan Voras

S nama je danas Tonimir Kišasondi znanstveni novak na Fakultetu Organizacije i Informatike u Varaždinu kojem je primarno područje interesa sigurnost.
download mp3

ssh

VPN

Muzička podloga: Chercher la lumière by Philippe Mangold S nama je danas Tonimir Kišasondi znanstveni novak na Fakultetu Organizacije i Informatike u Varaždinu kojem je primarno područje interesa sigurnost. download mp3 5:00 zaštita e-mail komunikacije: GPG APG EnigMail GnuPG Shell 7:00 enkripcija podataka na disku TrueCrypt dm-crypt: a...

Razgovori o slobodnom softveru #1 : gdje zapravo spremiti podatke? / Dobrica Pavlinušić ; gost Ivan Voras

U prvoj epizodi razgovora o slobodnom softeru gdje zapravo spremiti podatke? razgovaramo o:
download mp3

Pohrana podataka na serverima

ZFS-u

Što napraviti sa restoranim backup-om?
Muzička podloga: Stolen Thief by The Postmen U prvoj epizodi razgovora o slobodnom softeru gdje zapravo spremiti podatke? razgovaramo o: download mp3 Pohrana podataka na serverima FreeNAS za pohranu podataka prema preporuci Slobodnom Festivalu 4 Adaptec ASC-1405 Unified Serial HBA rant FreeBSD stack za file servere baziran...

Vijesti o slobodnom softveru #0 : stemming u hrvatskom jeziku i PostgreSQL / Dobrica Pavlinušić ; gost Ivan Voras

Dobrica Pavlinušić razgovara sa Ivanom Vorasom o stemmingu u hrvatskom jeziku i implementaciji za PostgreSQL tsearch2 pretraživač teksta.

download mp3

U ovom podcastu spominjemo PostgreSQL tsearch2 modul za hrvatski jezik i članak Retrieving Information in Croatian: building a simple and effcient rule-based stemmer.

Muzička podloga: Painted Dream by The Dada Weatherman

Dobrica Pavlinušić razgovara sa Ivanom Vorasom o stemmingu u hrvatskom jeziku i implementaciji za PostgreSQL tsearch2 pretraživač teksta. download mp3 U ovom podcastu spominjemo PostgreSQL tsearch2 modul za hrvatski jezik i članak Retrieving Information in Croatian: building a simple...

08. 08. 2010.

JavaScript demo scena i natjecanja

Bez obzira na pokušaje nametanja drugih ‘naprednih’ tehnologija, klasični HTML uz pomoć JavaScripta pretvara preglednike u glavnu aplikacijsku platformu. JavaScript tako postaje sveprisutan i uskoro neće biti developera koji razvija aplikacije namijenjene krajnjim korisicima, a da neće barem dio koda pisati u tom jeziku. Kao i kod svake promjene tehnologije tako i ova platforma pati od dječjih bolesti, a developere oduševljavaju stvari koje su na drugim platformama već odavno prerasli.

Dobar primjer za to je JavaScript demo scena. Pogledajte “Or so they say…” demo (preporučeno je korištenje Chrome ili Chromium preglednika). To je impresivno za JavaScript, ali kod nekih drugih platformaša bi moglo izazvati podsmijeh. Naravno samo kod onih koji su zaboravili kako su prvi koraci izledali na njihovoj platformi. (Autor uratka je Mr.doob, a kod njega ima i još zanimljivih stvari. Npr. Water Type, Water, Rotozoomer… )

U tijeku je natjecanje JS1k za fancy pancy JavaScript demo do veličine 1024 bajtova izvornog koda. Neki od bolji su tunel, fire cube, Luminous, 3d function ploter

Steven Wittens je jedan od sudionika spomenutog natjecanja, a zanimljiv je zbog toga što je opisao nastajanje svojeg demo uratka.

10K Apart omogućava 10 puta veću slobodu od JS1k projekta pa su uratci sadržajniji. Ima onih koji bi se moglo svesti na demo, ali ima i kompletnih malih aplikacija. Lines je zanimljva igra, Notes, TaskForce i Checklist su male aplikacije za produktivnost. Posao je uvelike olakšan jer dozvoljeno korištenje jQuery, Prototype i Typekit biblioteka i ne zbraja se njihova veličina.

Na suprotnoj strani od JS1k projekta je natječaj kojeg organiziraju Tuts+ i CodeCanyon. Njih ne zanimaju demo majstore već konkretne aplikacije, bazirane na HTML5 tehnologijama, koje bi se mogle naći u ponudi njihovog dućana u HTML5 Apps kategoriji. Osigurane su nagrade u vrijednosti od $7000.

04. 08. 2010.

Books on systems administration

I had some money to spare recently, and I decided to buy some good technical books. Actually I went out to find some great books, and not so much with an agenda to learn from them but more to be used as reference for years to come.

First book I settled on was the Principles of Network and System Administration by Mark Burgess. Last edition is from 2003 but this book is still excellent and unique in many ways. It is one of the only (if not the only) book approaching the topic of systems administration from a scientific standpoint, treating it as a branch of engineering. Book on principles, best practice, ethics, users and management of the human-computer systems. At times it seems perhaps too academic in its approach in respect to business environments where something is always going wrong (Murphy is out to get you) and is often hard to maintain levels of operation this book advocates. Still it's something every good sysadmin should aspire to, I enjoyed re-reading it and it's just the kind of book I had in mind.

It felt kind of karmic that the fourth, 20th year anniversary, edition of the Unix and Linux System Administration Handbook was released these days. This series of books (previously UNIX and Linux treated separately) by Evi Nemeth (and others) is well known, and I just had to buy this edition. It is very much different than the book above, a 1300 pages volume filled with practical matters including real world experiences of its authors. The foreword says it is not one of those "administration" books targeting users who run a UNIX system in their garage. It's rather oriented towards running UNIX in the enterprise. This revised edition covers AIX, HP-UX, Solaris, RedHat, SuSE and Ubuntu, and as usual dedicates a large part of the book to networking. It could be worth to you to know that it also includes chapters on topics like DNSSEC and virtualization (being that the 3rd edition was released back in 2000).

02. 08. 2010.

Super jednostavan iPhone jailbreak

Korisnici iPhone-a su oduševljeni što je za jailbreak potrebno odsurfati na stranicu jailbreakme.com i napraviti jedan slide. Nakon im možda neće raditi MMS, ali navodno se može instalirati zamjenska aplikacija s Cydiae.

Svi zadovoljno cvkruću, kao da nitko ne shvaća da je to zapravo veliki sigurnosni propust. Propust se nalazi u komponenti za prikaz .pdf datoteka ( Safari samo omogućava da se .pdf datoteka učita i nije propust u njemu ). Super jednostavan jailbreak je zapravo jedna super velika rupa. Ovaj put je bila iskorištena za popularan iPhone sport, ali isto tako se može iskoristiti za bilo kakvu drugu malicioznu operaciju.

Umjesto da su sretni i zadovoljni iPhone korisnici bi trebali biti zabrinuti, vrlo zabrinuti. Da li će Apple problem riješiti brzom zakrpom ili će početi prodavati Apple certifikat za web stranice koji će garantirati da one neće naštetiti vašem uređaju? I kao što su naučili držati iPhone na drugačiji način tako će korisnici naučiti da se surfa samo na sigurnim, certificiranim web valovima. :-)

P.S. pdf datoteke koje iskorištavaju propust i služe za jailbreak nalaze se u direktoriju /_/ navedene web stranice.

01. 08. 2010.

Deset odličnih aplikacija iz prikrajka

linuxzasve je istvitao link na članak Ten outstanding cross-platform apps. Kao i većina članaka te vrste izbor je poprilično ziheraški i povodljiv. Uzimaju se neke default aplikacija iako možda i nisu najbolje. Ovo je moj odgovor na taj članak s alternativnim naslovima.

  1. OpenOffice je spor i nije baš nešto. Kad govorimo o obradi teksta onda je bolji izbor AbiWord. Posjeduje sve potrebne osnovne funkcionalnosti i još nešto što veliki igrači nemaju: AbiCollab plugin koji omogućava zajedničko editiranje jednog teskta.

  2. Gnumeric je tablična računaljka i za njega vrijedi slična ocjena kao i za AbiWord, manji je i brži od konkurencije. Ono u čemu je bolji od velikih konkurenata je import csv datoteka.

  3. Inkscape je alat za vektorsko crtanje. Kako je njegov prirodni format .SVG zacijelo će ga sve više ljudi koristiti kako bude SVG uzimao maha. Niste profić i trebate povremeno napraviti neki vektorski crtež? Ne treba vam ništa više od Inkscapea.

  4. O Scribusu sam pisao od njegovih prvih dana i u međuvremenu se ravio u ozbiljan DTP (Desktop Publishing) alat. Ono što je zanimljivo kod njega je da postoji i OS/2 Warp 4/eComStation port. Njega koriste i profići, a knjiga napravljena uz pomoć njega je 2009. u Belgiji osvojila nagradu kao najbolje dizajnirana u kategoriji non-fiction.

  5. Gramps je aplikacija za one koji vole izrađivati obiteljska stabla. Neki ljudi za to koriste iskrekirana komercijalna rješenja koja su ružnija i s manje mogućnosti, čisto zbog navike i zbog toga jer drugi to isto koriste. Eh to proklestvo navike i povodljivosti…

  6. calibre sam nedavno spominjao, ali kako se elektronički čitači knjiga sve više koriste tako će sve više ljudi imati potrebu za jednom ovakvom aplikacijom. Hvale se da je to one stop solution to all Your e-book needs.

  7. Umjesto Apache web poslužitelja možete uzeti nginx. Od tih malih web poslužitelja on mi je najbolji, i nemojte da vas preplaši oznaka 0.7.67 za trenutnu stabilnu inačicu. U open source svijetu ima puno primjera gdje su projekti s oznakom manjom od 1.0 bili itekako dobri i stabilni.

  8. Banshee nije baš omiljen kod sastavljača distribucija zbog toga jer se provodi tihi bojkot stvari napisanih u Mono frameworku. Meni on nekako najviše odgovara jer onih par osnovnih stvari, koje su mi potrebne za preslušavanje audio datoteka, ima riješene na jednostavan način.

  9. Adobe reader na Linux ne koristim već godinama. Za prikaz .pdf (i što je meni jako važno .djvu) formata koristim Evince. Kad se prvi put pojavio u Ubuntu distribuciji kao default reader nisam bio presretan, ali u međuvremenu sam se toliko naviknuo na njega da ne koristim ništa drugo.

  10. GnuCash je aplikacija za vođenje financija. Pokušava biti jednostavna za korištenje, ali ne na račun mogućnosti i fleksibilnosti.

Biblio::RFID - write RFID applications in perl

Allmost two years ago, I began my experiments with RFID, writing support for 3M 810 RFID Reader. Then I tried to make web interface for RFID it in Koha.

Comet: ETOOMUCH This woked, but having separate Comet server was too much complexity for me, so I decided to implement JSONP directly in RFID driver code. Hack, I allready had HTTP server, and local JavaScript interface, so why not?

Move to JSONP allowed me to use original Koha web interface, and just overlay RFID information and form submission code as simple jQuery snippet.

But, two years of development and trying out different approaches produced not-quite-production-quality code. So, I began rewrite called Biblio::RFID. It splits RFID reader support from HTTP and JSONP servers and couples this with documentation and tests. I have production use for it this summer, involving programming of RFID cards as they are printed out, so expect it to change during next few weeks. After that I will push it to CPAN, but I would love to get feedback and comments before that.

Update: It's also availale at CPAN.

29. 07. 2010.

Google App Inventor - prva test vožnja

Mail od App Inventor teama je značio da sam dobio pristup svetom gralu. Na getting started stranici se spominjao Mac i PC pa sam mislio da ću morati promijeniti računalo da bih ga isprobao, ali podržana su sva tri OS-a (konkretno: Mac OS X 10.5, 10.6, >Windows XP, Ubuntu 8+, Debian 5+). Za Linux je predviđen appinventor-extras paket od 50 MB.

Nakon instalacije AI Extras paketa potrebno je podesiti mobilni uređaj. Bez obzira na instalaciju Extras paketa glavni alat za rad je preglednik i alat na adresi: appinventor.googlelabs.com. Osim tog web Designer alata potreban je i Blocks Editor koji omogućava vizualno puzzle programiranje. U Blocks Editoru kliknuo sam za povezivanje s mobitelom, nakon nekoliko trenutaka spajanje je uspješno završeno i na mobilnom zaslonu pokazao se početni ekran aplikacije. Upute u posebnom okviru navode što treba napraviti kad se nešto zaglavi, a meni se upravo to i dogodilo, zaglavio se Blocks Editor.

Izgleda da je bio problem u Chromiumu, Firefox i Google Chrome uglavnom nisu imali problema. Blocks Editor se pokazao ubitačno spor. Zamijenio sam OpenJDK Sunovom inačicom Java i nakon toga je postao malo živahniji, ali je i dalje pomalo iritantan. Nijedan tutorial me nije osobito privlačio pa sam se odlučio na izradu jednostavnog alata za izračun indeksa tjelesne mase.

Nakon uspješno završenog zadatka i dalje sam zbunjen. Nije mi jasno zbog čega App Inventor nema jedinstveno sučelje i razvojnu okolinu. U pregledniku (Designer) kreirate ekrane, slažete komponente i uglavnom obavljate sve oko sučelja. U Blocks Editoru (kojega pokreće Java Web Start) programirate tj. uz pomoć različitih puzzle komponenti određujete logiku rada aplikacije. To su dva potpuno različita sučelja. Designer je web aplikacija, Blocks Editor je šarena Java aplikacija. Sve zajedno djeluje jako neozbiljno.

Prvi problem na kojeg sam naletio su naša slova, na mobitelu sam dobio upitnike umjesto naših slova (UTF-8). Designer nema osobite mogućnosti za slaganje sučelja pa se treba jako potruditi da se aplikacija nalikuje nečemu. Google App Inventor, u ovom stupnju razvoja, je zgodna igračka za one kojima su svi drugi načini za izradu mobilnih aplikacija prekomplicirani. Hm…neće li im onda i GAI biti prekompliciran?

Sve to vam ne smeta, unatoč svemu uz pomoć GAI-a ste napravili killer aplikaciju. No čeka vas nepremostiva prepreka. Tehnička ograničenja trenutno onemogućavaju slanje GAI aplikacija na Android Market. Nije moguće napraviti aplikaciju koja se sastoji od više ekrana (GAI tim predlaže da u slučaju istog rasporeda elemenata simulirate promjenu ekrana ili da napravite posebnu aplikaciju za svaki ekran pa da jedna zove drugu). Nije moguće ni da više puzzlera radi na jednoj aplikaciji.

Prva test vožnja App Inventorom pokazala je cijeli niz nedostataka i pomalo je smiješno da se tolika buka diže zbog jednog Frankenstein rješenja. AI tim sad sve to što su napravili mogu baciti u vodu (prvi mačići) i napraviti nešto što valja.

22. 07. 2010.

Back on the road

After almost a year of pause, I've decided to revive this blog. Much has changed in the meantime, so I'm full of ideas and themes to write about. Some of them are:
  • cloud computing: I've almost completely abandoned all of the applications I've been using before (mail client, feed reader, office applications, personal information management applications etc), and switched to online and cloud versions (primarily Google's)
  • Android platform: more like continuation of the previous point - I can now access all of the cloud services I use from literally anywhere, thanks to this great mobile platform
  • development: migration from subversion to git, several themes on Perl, Python and shell scripting
  • systems administration: several capacity planing, storage optimizations and general system tweaking themes
So, stay tuned! :)

Recording podcast using Skype under Linux

As you might know by now, I started an informal podcast in Croatian about Free and Open Source software called Razgovori o slobodnom softveru. This blog post will try to summarize my experiences and serve as information for podcast guests on how to get the best possible audio quality.

Every podcast currently starts as google wave. While this isn't ideal, it does work for now. I would love some other service which would allow me to see information color-coded by users. Those notes are later used to write blog post with all links and information about episode.

First, let's get Skype out of way. Only reason why we aren't using free software for audio conversation is simple fact that everybody has Skype and there is great skype-call-recorder which allows us to get uncompressed audio recording with local audio on one channel and remove one on another which enables easy matching of audio levels for local and remote speakers.

While we are at audio levels, let me share a little secret: right after recording audio from Skype, I use Levelator to adjust audio levels. There is Linux version of it, but it doesn't seem to work for me on recent Debian. But, effect is so valuable to good quality podcast that I just use Windows version under wine.

As far as guest audio is concerned I have found following notes really important for my guests:

If at all possible, it's great if guests can record local audio (only microphone sound, not full mix from conversation) so you can replace Skype's remote channel with better quality audio.

Much more useful information can be found in Skype for interviews by Doug Kaye and Paul Figgiani (guys behind Conversations Network which also implemented Levelator mentioned above), so if you need to record on Windows or Mac take a look there.

For editing audio I use audacity which is great audio editor, but I still have to learn all keyboard shortcuts because using mouse to edit audio is too slow and cumbersome if you want real flow of montage (and I did video montage back in 1990 on local TV station, so I know unnecessary mouse clicks when I see them). It would be nice if labels moved when I do cut of audio, because editing of audio leaves labels at old positions which isn't useful since audio moved. To give you some idea of how much effort is involved in editing audio (mostly removing silences, bloopers and breading): for last 35 minute podcast, it took 420 edits to get it into final state. And most of single day. It's about the same as creating good presentation: I often need 6 times more than presentation length to create it. For audio editing, you can count on 10-15 times ratio for editing.

Finally, I hop over to some creative commons audio site (to be honest, it was first one in google search for CC music), pick one of top tracks and extract intro and outro music from it to put it at beginning of podcast and end. Finally, audio introduction and web address information for end are recorded and put on top of music.

18. 07. 2010.

Sabayon - neočekivano dobar Linux

Web stranica Sabayon Linux distribucije mi baš i nije djelovala obećavajuće, ali odlučio sam joj dati šansu zbog jednog jedinog razloga - bazira se na Gentoo distribuciji. Gentoo je poseban po svojem Portage sistemu za upravljanje paketima kod kojega se instalacija novog paketa svodi na preuzimanje izvornog koda i lokalno kompajliranje. To je prihvatljivo kod poslužitelja, gdje je ionako riječ o manjem broju specifičnih aplikacija, ali za desktop računalo takav način je vremenski prezahtjevan. Neke aplikacije su dostupne i u binarnom obliku i to malo štedi vrijeme, ali to čini Gentoo tek malo (nedovoljno) pristupačnijim.

Sabayon omogućuje instalaciju binarnih paketa (zahvaljujući svojem Entropy sistemu), ali zadržava i potpunu kompatibilnost s Gentoo distribucijom pa je korisnicima dostupan i Portage. Mogli bi reći da je Sabayon za Gentoo isto ono što je Ubuntu za Debian.

Najnoviji Sabayon nosi broj 5.3, a ja sam testirao x86 Gnome inačicu. Instalacija je prošla bezbolno i bez ikakvih problema. Ukoliko ga instalirate na računalo na kojem već postoje drugi operativni sustavi i particije nužno je da znate odrediti gdje i što instalirati i to je najkompliciraniji dio instalacije. Osim klasičnog Linux sustava moguće je instalirati media centar (XBMC baziran) i UMPC (Ultra-Mobile PC) inačice, a birati možete i između tekstualnog i grafičkog načina instalacije.

Najprije se znatiželje radi isprobao XBMC. Ako slažete HTPC (Home theater PC) svakako pogledajte Sabayon. Kako me takve aktivnosti trenutno ne zanimaju instalirao sam klasični Sabayon. Nekako sam očekivao da bi kod njega moglo biti više problema nego kod openSuSE-a 11.3, ali ostao sam prijatno iznenađen. Ispoliran, dorađen, lišen bilo kakvih iritantnih sitnica. Za razliku od ružnih openSuSE fontova i jedva pristojne desktop teme Sabayon je vizualno odlično sređen. Ja volim promijeniti izgled desktopa (kad imam vremena gledam obavezno razgledam gnome-look.org), ali ovdje nisam osjetio potrebu da bilo što mijenjam (potreba koja se obično javi nakon prve Ubuntu instalacije).

Nakon početnog upoznavanja (prva stvar koju treba novi korisnik napraviti je upoznavanje s Entropy sistemom i update paketa) i prvih par sati korištenja definitivno sam siguran da je Sabayon Linux kojeg bih želio koristiti. Za razliku od openSuSE-a kod kojeg je slijed bio instaliram, pogledam, ostavim da stoji, pregazim kad mi zatreba particija.

Sabayon je zauzeo svoje mjesto na mojem laptopu, a ako nastavi s dobrim ponašanjem otvara mu se put i za druga računala.

16. 07. 2010.

openSuSE 11.3

SuSE distribuciju sam intenzivno koristio (i kupovao službena izdanja od jednog od rijetkih domaćih distributera) u vrijeme 6.x i 7.x inačica. U to vrijeme to je bila, po mojem mišljenju, jedna od najboljih i najispoliranijih distribucija. Kasnije sam počeo koristiti Mandrake distribuciju da bih krajem 2004. zapeo na Ubuntu distribuciji.

Nekako su se poklopile zvijezde pa sam našao vremena da instaliram i istestiram novu inačicu openSuSE distribucije (11.3). Možda sam u odabiru načinio grešku birajući GNOME inačicu (čini mi se da SuSE više naginje na KDE stranu), ali iskustva nisu onakva kakvima sam se nadao. Izgleda da me Ubuntu previše razmazio.

Prvo me iznenadila brzina, tj. sporost instalacije. Ubuntu instalacija traje dvostruko kraće. Početni koraci u instalaciji su manje-više svude isti i tu nema što da se govori. Prvo razočaranje je bilo to što automatska konfiguracija boot managera nije uzela u obzir postojeće OS-ove na diskovlju. Touchpad nije prepoznat i trebalo ga je posebno konfigurirati. Prvi restart i neugodno iznenađenje. Umjesto slova na ekranu su bili prazni pravokutnici. Izgleda da je SuSE samoinicijativno promijenio jezik i postavio baš onaj koji nije imao podršku u default fontovima. Napiknuo sam i promijenio jezik i uspio dobiti slova natrag.

Jedna od prvih stvari koju većina korisnika napravi je instalacija restricted paketa i aplikacija. Pouzdajući se u OpenSuSE Community omogućio sam dodatne repozitorije i pokušao dodati restricted formate. Neki su uspjeli, neki nisu, ffmpeg se skršio i nije se želio instalirati. Kako ne mogu zamisliti rad bez više virtualnih radnih površina, definrao sam svoju dozu i otkrio da u postavkama tipkovničkih kratica nema mogućnosti da se odabere Switch to workspace X.

Sve to i nisu bili prestrašni problemi, ali nisam uspijevao instalirati dodatne pakete. Izgleda da se strgala rpm baza. Nakon rebuildanja instalacije su prošle bez problema. Kad je već krenulo instalirao sam i KDE4. Na njemu su ružni SuSE fontovi došli do potpunog izražaja. Nakon 10 minutnog upoznavanja zaključio sam da mi KDE ipak ne odgovara.

openSuSE mi djeluje kao dobro odrađena distribucija, ali pojedine sitnice kvare dojam. Početnicima i manje iskusnim korisnicima bi one mogle predstavljati nepremostivu teškoću pa je bolje da instalaciju prepuste iskusnijim korisnicima. openSuSe ima premalo sati na mojem računalu, ali čini mi se da kad se jednom posloži da stvar radi stabilno.

15. 07. 2010.

Focus window by name using xdotool and awesome window manager

I have two screens, and 9 virtual dekstops on my machines. Which sometimes makes it tricy to remember on which virtual desktop is xterm connected to klin. Fortunatly, I have that information in window title, so something as simple as:

xdotool search --name klin windowactivate
Will do the right thing. However, my mouse pointer is not always over xterm on local machine, so keyboard shortcut in awesome window manager for this simple xdotool usage would be helpful. So, here it is:
-- XXX dpavlin: search windows and active them
awful.key({ modkey }, "F12",
  function () 
    awful.prompt.run({ prompt = "window: " },
      mypromptbox[mouse.screen].widget,
      function (find)
        awful.util.spawn("xdotool search --name "..find.." windowactivate", false)
      end)
  end),

I would love to be able to insert this snippet somehow dynamically instead of editing rc.lua by hand, so suggestions are welcomed.

13. 07. 2010.

OBD2: geek with a car

So you have a car. And you are a geek. You know kind of I don't really know or care how cars work. And then you got graph like this from your car:

obd2-graph.png

If you take a look at OBD2, you might think that it's only useful to your car mechanic. But, as you can clearly see above, any technology which can draw graphs and uses computers is interesting to me.

sku_35937_1_small.jpg

You can take two different paths to getting sensor data from your car using open source software. Freediag is project which support dumb (basically level converters between your car OBD2 connector and RS232 or USB) cables. This approach requires very funky boud rates on serial port and lot of knowledge inside software, but offers future-prof route because you can hack software.
So I decided to buy one of those cables (available locally in Zagreb) and ended up with VW cable which did dump some data, but freediag didn't really helped in decoding them.

sku_28528_5_small.jpg

So, in next step, I opted for one of ELM327 based devices (which decode car protocol within microcontroller) and moved to OBD GPS Logger for data collection. This did work, and result is graph included in this post. In the process, I figured out why you can disconnect both cables (to car and to usb) from micro-controller in metal box: it's the only way to reset it, sigh!

However, now I have a few observations about state of free software for OBD2: I wasn't able to found any software which would introspect all my sensors and log them. This is quite strange since you can inquire car about supported sensors, so that will probably be next thing for me to do. If you have more information, please let me know.

12. 07. 2010.

Google App Inventor

Google je izbacio još jedan proizvod o kojem će svi pričati, a kojeg će za koji mjesec svi zaboraviti. Umjesto društvenih mreža ovaj puta je riječ o Svetom Gralu razvoja računalnih aplikacija, o konačnom rješenju koje omogućava izradu aplikacija bez programiranja. Svi, pa i njihovi psi, moći će napraviti aplikaciju koju god da zamisle. Google alkemičari su predstavili App Inventor for Android.

U nekom idealnom, ili tome bliskom, svijetu razvoja aplikacija u trenu kad na red dođe pisanje koda, najvažniji dio razvoja je već gotov. Dalje bi sve trebalo biti lako. To što većina projekata u praksi započinje pisanjem koda ne znači da je to i najbolji način ( iako daje rezultate). Programiranje prije programiranja, kako ga često laici nazivaju, je važan dio razvoja. Izrada neke aplikacije kreće s planiranjem, analizom, oblikovanjem i tek onda dolazi na red programiranje, pa nakon toga testiranje nakon kojega se možda opet zavrti cijeli krug. Što želim reći? App Inventor vas rješava programiranja, ali za izradu uspješne aplikacije trebate ovladati cijelim krugom.

Da li to znači da se s njime neće moći napraviti uspješna aplikacija? Hoće, kako da ne. Svi će moći uz par klikova napraviti svoju droidFart aplikaciju, i ako se zvijezde poklope slava je zagarantirana. Google ja malo zakasnio, ali nije isključeno da nas zagluši i navala droidVuvuzela aplikacija.

Vizualno slaganje blokova na prvi pogled izgleda jednostavno, ali je istovremeno i jako ograničavajuće. Takav razvoj omogućavaju Yahoo Pipes, Microsoft je imao Popfly i stavljen je ključ u bravu. Na prvu loptu takav koncept izgleda privlačno, ali nismo još vidjeli neku uspješnicu. Scratch je navodno na tom tragu, nisam ga nikada isprobao pa ne mogu reći. Scratch i App Inventor su djelomično i povezani Open Blocks Java libraryem. Najbolje ostvareno vizualno programiranje vidio sam u jednoj igri (MindRover), ali i tamo je ono bilo usko specijalizirano.

Čini mi se da bi puno bolje rješenje bilo da je Google kupio neko postojeće rješenje (npr. PhoneGap, Titanium) i onda bacio završni finiš (npr. za sučelje Sencha Touch, pojednostavniti build i deployment) kako bi developerima olakšao ulazak u razvoj mobilnih aplikacija. Bila bi puno veća šansa da se ergela android aplikacija popuni kvalitetnijom robom.

Dobar dio svojeg developerskog života potrošio sam na rad s raznim generatorima koda. I jedno sam naučio. Dobar RAD alat omogućuje jednostavno lego slaganje aplikacije, ali mora dopustiti nesmetan pristup ispod haube do te mjere da, ukoliko to baš želi, developer može sve napraviti i tipkajući kod, red po red…

04. 07. 2010.

Making Android development more enjoyable

Here's some things Google should look into:

0. Include android market in the emulator/test environment

That should be fast and easy to do.

1. Try finding some ways to speed up the compile/test cycle:

a) Avoid moving too much stuff arround
Currently every time an .apk file must be produced (compressed) on the developers machine, containing all the code and application resources. This apk that contains everything is then transferred to the phone or emu. It's then unpacked on the phone and the install procedure is run. It doesn't matter if you just changed one class file, the whole thing is moved around.

I understand that permissions are managed during the install process, but this could be solved in some other way like trusting the code for that app by default.

b) Make the test environment run in native code during the development process
I know that using an emulator was a nice and fast solution for you, but a lot of time and energy is lost on emulating ARM. Davlik runs on x86, and all other code also. Why don't we just make a jailed/chrooted native environment for testing available? I know that this is not a straightforward thing to implement on Windows, and there might be difficulties making this run on Mac OSX, but it's really worth it.



2. Improve the visual layout editor.

There's so many ways this could be improved, but making it faster/more intuitive is the general idea.

One quick suggestion: Try making it easier to jump to respective code implementations or have an option to generate event handlers etc. code if no code referencing that UI object is found.

Example of a great code editor/UI designer integration is Borland Delphi. Even really old versions have ease of use that Android developers could only dream of. Android API is more abstract and UIs have relative layouts, but most of the great concepts from Delphi still apply.

Item 1 b) could also create possibilities for the UI designer tool.




01. 07. 2010.

Brzo i kratko u Operi 10.60

Izašla je nova Opera 10.60, ovaj puta kako treba, za sve tri platforme. I zato uzeh da je malo istestiram i počistim neke zabilješke koje čekaju da napravim nešto s njima.

Ext JS je promijenio ime, zapravo nije…Biblioteka tog imena se tako zove i dalje, a web stranica i brand se promijenio i sada je to Sencha. Pridošlice u timu su Raphaël (odličan za grafičke igrarije u JavaScriptu) i jQTouch koji zadržavaju svoju licencu (MIT).

Prvi rezultat spomenute simbioze je Sencha Touch, prvo(?) HTML5 razvojno okruženje za mobilne uređaje (podržani su iOS i Android). Prvo pogledajte primjere. Naravno, ne s Operom. :-)

Na mobilnoj sceni pojavio se još jedan dućan za aplikacije. LG Application Store podržava i glupe uređaje, a ne samo pametne.

Ostajemo na mobilnoj sceni, konačno sam na Slideshare postavio prezentaciju Šefe, smanjio sam web. Neke stranice možda neće biti jasne bez objašnjenja, pa ako vas nešto zanima, pitajte.

GNU HURD Altered visions and lost promise. Možda niste znali da se prvi GNU operativni sustav počeo razvijati 7-8 godina prije Linuxa. Duke Nukem Forever, ti si još dijete u pelenama naspram HURD-a. Zašto je Linux uspio, a HURD nije? Možda taj mikrokernel i nije najbolje rješenje, profesore Tanenbaum? Ili bi nekakav benevolentan diktator ipak i to riješio?

Jedna jezična dilema. Da li je ispravno operacijski sustav ili operativni sustav? Meni je prirodnije ovo drugo, ali već godinama koristim ono prvo jer su me uvjerili da je to ispravno. Objašnjenje da je ispravnije koristiti operativni sustav čini mi se u redu.

JavaScript uzvraća udarac novom bibliotekom za grafičke igrarije InfoVis Toolkit. Bilo mi je malo sumnjivo, došao tip na reddit i kaže da je napravio JavaScript biblioteku. Nepovjerljivo kliknuh i gle, izgleda ok. Samo ako se ne pokaže da je pokrao Raphaëla.

Završio sam pisanje članka u novoj Operi. Djeluje bolje nego u prošlom pokušaju. Fontovi su mi normalni, čak i naši. Brza je, ali ponekad se događaju manji zastoji bez vidljivog indikatora da se nešto događa. Zaključak je da se radi o boljoj i bržoj Operi. Samo, da li je dovoljno bolja?

29. 06. 2010.

Domaće Android aplikacije

Android

Domaća mobile developer scena zahuktala se u posljednjih par mjeseci. Uz pokretanje Mobile Mondaya, tu su i VIPNet Android Izazov te Budi kreaTivan 2010 natječaji koji su izazvali razmjerno velik interes potencijalnih developera.

Kao rezultat toga, na Android Marketu pojavljuje se sve više domaćih aplikacija, većinom lokalnog karaktera. Kako zapravo ne postoji način za saznati otkud su autori pojedine aplikacije i koliko je aplikacija iz Hrvatske, tijekom posljednjih nekoliko dana bilježio sam domaće aplikacije na koje sam naišao, skupio ih u listu, te vam sada ponosno predstavljam svjetsku premijeru najveće i jedine liste domaćih Android aplikacija:

  • Weekend in Croatia – višejezična aplikacija za pronalaženje vikend/turističkih lokacija (mobilni klijent za vikendi.com)
  • Svjetozor / Worldscope – pregledavanje slika s web kamera diljem svijeta
  • Young Duke Domagoj – preživite što duže dok vas napada horda zombija
  • Zagreb Tram – prikaz tramvajskih linija, stanica, najbliže stanice, voznog reda, kupnja karte za ZET
  • ZETPanic – brzo aktiviranje usluge ZET mPrijevoz
  • Žabolomac – žabac iz bajke kroz 30 nivoa i 3 područja treba savladati niz izazova kako bi došao do svoje princeze
  • Napomene: Oneliner opisi pojedine aplikacije preuzeti su iz njenog opisa u Marketu, uz ponegdje slobodan prijevod sa engleskog i skraćivanje/parafraziranje opisa – ako uočite bilo koju grešku ili smatrate da sam krivo prepričao opis, ili ste našli aplikaciju koju ja nisam pa je nema u popisu, molim vas da mi javite. Također, većinu ovih aplikacija nisam isprobao, a i za one koje jesam, ovdje ne donosim svoj sud, mišljenje ili preporuku. Prilikom isprobavanja pojedine aplikacije, preporučam pročitati komentare na Marketu (te dati i vlastiti komentar/ocjenu, čime ćete autoru aplikacije dati dragocijeni feedback za daljnji razvoj iste).

    Update: dodane aplikacije: Žabolomac, aMazing Submarine, HrStock, Meet Croatia, Tv Guide, Mobilisis (ATM, Fleet, Parking, Tracker), Praznik, Rođoš, VMC application, Hoću u kino!, Gdjesi.com, Tele2SMS. Maknut Columbus (slovačka aplikacija).

    Update2: dodani HRT Teletext, HotFuzz, Transmeet.TV MusicMap, Worldscope

    Update3: dodani Elevation and Sea Depth, Qibla Compass, Weather Forecast USA.

    28. 06. 2010.

    Koliko još e-matica imamo?

    O problemima s e-maticom već svi sve znaju. Simptomatično je to što ministar Fuchs pokušava okriviti sve moguće (profesori su krivi jer se žure na more, a ne govori kako je išla okružnica da se prije srijede ne unose podaci), radi neuobičajene iznimke (učenici se bez svjedodžbe mogu prijaviti u srednje škole), a ne dozvoljava nijednu kritiku na račun onoga što je stvarno zakazalo (informatičko rješenje naplaćeno 5.000.000 kuna). Tako da se stvarno možemo zapitati da li je točan puni naslov ministarstva kojeg je naveo jedan komentator na portalu Večernjeg lista: Ministarstvo za King ICT, znanost, obrazovanje i šport.

    Kolege blogeri su se već osvrnuli na taj slučaj (Nešto je trulo u državi Hrvatskoj 2 (e-Matica MZOS), Zašto je e-Matica loša?, Farbanje informatičkih tunela) i tu se nema što puno dodati ili oduzeti. Na web stranici savjest.com je prije dva mjeseca objavljen članak Kako je King ICT u poslovanju s državom osvojio 6 ugovora u 24 sata koji je pravi prilog komentatoru koji navodi kako se stvarno zove nadležno ministarstvo.

    Oni koji su radili e-maticu su imali tu nesreću da zbog velikog broja korisnika u kratko vrijeme njihov loš posao postane svima poznat. Ono što nije dobro u cijeloj priči s velikim i vrijednim informatičkim projektima, koji se rade za javnu i lokalnu samoupravu te javne institucije, je činjenica da je e-matica klasični obrazac kako se projekti odrađuju. Podobne firme odrađuju loše kvazi-projekte za prevelike novce.

    Razlozi koji su doveli do takvog stanja u informatiziciji našeg javnog sektora mogu se preuzeti iz članka Miroslava Dragičevića Aktiviranje državne imovine u turizmu (objavljen u Globusu, prenesen na blogu Nenada Bakića)…

    Hrvatska još uvijek muku muči s izgradnjom vrijednosnog sustava na principima europske uljudbe. Marginalizacijom znanja, rada, poštenja, transparentnosti i zdrave konkurencije Hrvatska se dovela na razinu niske produktivnosti, visokog duga, niske zaposlenosti i visokih fiskalnih opterećenja.

    Zaboravite na znanje koje je potrebno za kvalitetnu izradu nekog projekta, zaboravite na pošten rad, transparentnost i zdravu konkurenciju i dobili ste okruženje u kojem nastaje prosječan informatički projekt za nekog od proračunskih korisnika.

    Vjerujem da bi za polovicu novca, kojeg sada za informatičke projekte odvajaju proračunski korisnici, imali bolja i kvalitetnija rješenja samo kad bi se oni radili na principima otvorenosti i zdrave konkurencije.

    Slijedeći veliki e-fijasko mogao bi biti vezan uz e-recept i zdravstvo bez papira. Svi potrebni sastojci su tu…veliki državni projekt, veliki broj operatera (medicinsko osoblje) i korisnika (pacijenti).

    Ono bez čega ne bi smio proći nijedan veći informatički projekt, koji se financira iz proračuna, je nezavisna recenzija struke. Najbolje je da se definiraju vrijednosni razredi, slično kao i u sustavu javne nabave, na osnovi kojih bi se primjenjivali odgovarajući kriteriji za recenziranje. Kad bi imali takav mehanizam kontrole smanjili bi korupciju i povećali bi kvalitetu rješenja.

    Ono što bi mi u Hrvatskoj, po ustaljenoj praksi naših političara, mogli dobiti je nekakvo povjerenstvo. Sve po onoj ako nešto ne želiš riješiti, osnuj povjerenstvo (Winston Churchill).

    26. 06. 2010.

    Notes on systems monitoring

    Often it's hard to beat a few lines of shell script to perform a basic monitoring task on a personal system. A system-load, or a file-system monitoring script running from cron is extremely easy to write and setup, while being invaluable in emergencies.

    I wrote plenty of those during the years (load, fs, pacct, daemons... monitors), which I use in combination with network and intrusion monitoring. And here's how it works; e-mail alerts from all personal systems are sent out to a third-party system where they are immediately relayed to my local mailbox, and then archived, but not marked as read. That way a backup remains, but that archive mailbox is also available through IMAP. While having e-mail alerts is good, a live alert is better. Live in my case means IM, and if I'm on the road: SMS - which is easily done through a service like email2sms offered by the mobile service provider. Although the IM part is more to the point of this article.

    Years ago while learning Python I wrote two bots, an IRC one and a Jabber one. Dealing with a protocol like IRC is great for learning, it involves many different libraries and problems. Text processing, sockets, databases, accessing web resources... When I lost interest (don't we all) I decided maintaining and running the Jabber version is a better choice, and besides, I love that protocol. Sometime later hooking the Jabber bot into the existing alert system was easy thanks to the imaplib library. Bot connects to the IMAP server and relays, to Jabber, all alerts which have the Unseen flag. Once read an alert is flagged as Seen, and that's all there is to it. Live alerts 24/7, over my favorite protocol, in my favorite messaging client.

    If you are interested in writing your own bots you can checkout the xmpppy library. Handling the connection, presence and subscriptions can be done in as little as 20 lines of code. To complete the cycle I should also mention some of my favorites for local monitoring. For process monitoring the htop project provides a great interactive replacement for top in procps. Finally, no article would be complete without mentioning nmon - an amazing AIX and Linux performance monitor, developed (and unofficially supported) by an IBM employee.

    25. 06. 2010.

    Kuda ide izgubljeni otvoreni kod?

    Ukoliko koristite open source aplikacije ili biblioteke sigurno vam se dogodilo da, iz različitih razloga, više ne možete doći do njihovog izvornog koda. Obično se to događa s projektima koji se ne razvijaju baš aktivno, ali ponekad se i aktivnim projektima zna dogoditi da ne produže domenu ili nešto slično pa vam nisu dostupni baš kad su vam potrebni.

    Prvo što možete napraviti u takvim slučajevima je da posjetite github i potražite željeni projekt. Nije nužno da projekt koristi github kao svoje skladište za kod, skoro svaki projekt koji nešto vrijedi ima svoj neslužbeni odraz na githubu. Kad su nedavno PyAMF stranice bile nedostupne par dana pomogao mi je njegov github repozitorij.

    Neki projekti koji su malo zastali u razvoju zbog toga što njihovi glavni razvijači nemaju vremena za njih račvaju se na githubu. WYMEditor, koji se nedavno ipak počeo intenzivnije razvijati, ima nekoliko račvi, neke od njih dodaju nove funkcionalnosti, neke ispravljaju greške.

    MochaUI je odlična JavaScript biblioteka za izradu sučelja. Autor nema više vremena za nju. github otkriva da postoji jedno račvanje koje je jučer osvježeno.

    Ako imate potrebu da izmijenite nešto na nekom postojećem projektu ali ne možete čekati da tu promjenu provedete službenim putevima ili se ona ne uklapa u originalni razvojni plan? I još vam to treba za jučer?! Jednostavno račvajte originalni projekt, napravite promjenu i objavite ju na svojem github repozitoriju.

    Sila je jaka na githubu, iskoristite to… :-)

    23. 06. 2010.

    Croatian characters 8-bit encoding

    We all speek utf-8 thease days, don't we? Well, not really... I got CSV file export and I couldn't guess encoding from simply looking into it any more. So I wrote gist to dump all Croatian 8-bit encodings in utf-8:

    #!/bin/sh -x
    
    file=$1
    
    function encoding {
            echo "# $1"
            head $file | iconv -f $1 -t utf-8
    }
    
    encoding cp850
    encoding cp852
    encoding cp1250
    encoding cp1252
    encoding iso-8859-1
    encoding iso-8859-2
    encoding mac
    encoding MAC-CENTRALEUROPE
    

    Example usage:

    ./test-8bit-encodings.sh data/ESB_izvadak-tekuci.csv | vi -R -c 'set nowrap' -
    

    15. 06. 2010.

    Mojo Facets actions, changes and editing

    I have spent few last weeks with my head down, adding persistence and changes tracking to Mojo Facets, turning it into much more interesting alternative to web-based data stores like DabbleDB. Idea was simple: I had all data in memory, I should be able to edit it, right?

    Well, as it always turns out, if was about three weeks of development, but it moved Mojo Facets into much more interesting use case of making small tweaks to your input data.
    Problem is how to keep those changes? Mojo Facets is never master provider for data so saving some kind of audit log which can be applied back on master data is of paramount importance. After all, if you edit that data, you might want to apply those changes back when you re-generate source file or pull new version from some other system.

    First idea was to add simple audit log which records all requests in Mojo. I decided to call requests with parameters actions and store them on disk under /tmp. All I had to add was re-submit form in browser and a bit of interface around it. Same form with all parameters can turn Mojo Facets into peer-to-peer application: I just added checkbox which can change destination URL in action to another Mojo Facets installation and I got nice replication of actions to another instance.

    But, all was not well. Editing data in browser generates update to specific entry in your dataset, so I decided also to record changes which include old and new field value, and all unique keys for this dataset.

    This seems like such a small statement, but getting it up to point where you can load some data, edit it in browser and than apply that changes back on original data (after reboot) or on different dataset with same unique field.
    Even better, it should be possible to apply changes log to master data. I prefer to think of it as a replication log to another system.

    To integrate better with other systems, filters got export (and import) option which dumps them in simple, one line per entry text file which is accessible over http. It's perfect format it you want to quickly xargs that data into another script, for example to generate more source data with something as simple as:

     cat /srv/mojo_facets/public/export/isi-cro2.js/filter.autor.119 | \
     xargs -i ./bin/isi-download-results.pl 'CA={}'
    

    Speaking of more dataset sources, I also added parsing on html tables, which should allow users at some point to just drop multiple tables from results page into single directory and load them as dataset. Your telebanking doesn't have export you need? No problem! Just save all pages to disk and you are ready to do.
    Right now, table parsing needs a bit of heuristics to be really useful. It searches for table on page with correct number of columns, and has support for extracting of header or repeating first row (normal <td>) for column names.

    All that would be unusable without profiling to turn it really snappy. This is first time I used Google Chrome for serious development, and while I still dislike it's inspector (firebug's dom inspector is much nicer to me), Speed Tracer extension was very useful for front-end part including network throuput and html/javascript overhead. On server side, I used Devel::NYTProf, and I will talk about it at Slobodni Fastival 4 in Čakovec, so see you there...

    31. 05. 2010.

    Introducing rybackup, again

    One of the earliest articles here was about my personal backup solution, rsync based, with rotating backup-snapshots. Implemented as a simple shell script. It served me well, but I was never fully satisfied with it, it had a few Todo items attached to it which I never got around to address. I couldn't motivate my self to write BASH, and the script was working the way it was designed, running on a dozen of my machines.

    After reading "Python for Unix System Administration" last week I decided it's time to rewrite it, in Python. Result is available in a git repository; rybackup.git. The script is designed to backup chosen directories, and files to an NFS backup server, or removable storage. Maintaining an arbitrary number of backup-snapshots going back hourly/daily/weekly/monthly as long as you need, rotating them as it goes. All of this is controlled by a few settings at the top of the script. In addition it has a few functions making it suitable to use for backup of eCryptfs encrypted home directories. Script will exit with EAGAIN if the eCryptfs mount is active, and relies on Dillon's cron to retry once in a while, after receiving the signal. To give you an idea of how it works, here is a directory tree after a few months of rotating snapshots:

    2010-05-30 16:04 daily.1/
    2010-05-29 00:04 daily.2/
    2010-05-28 20:04 daily.3/
    2010-05-31 20:03 hourly.1/
    2010-05-31 16:04 hourly.2/
    2010-05-31 00:05 hourly.3/
    2010-05-30 20:03 hourly.4/
    2010-04-04 00:05 monthly.1/
    2010-03-10 00:04 monthly.2/
    2010-05-28 00:02 weekly.1/
    2010-05-13 00:04 weekly.2/
    
    $ du -hs ; du -hs hourly.1
    1.5G    .
    778M    hourly.1
    

    While I was at it, I wrote a simple restore script, ryrestore. The script makes it easy to restore a file, or a directory, so I don't have to dig through the backup server. Here is an example of how it works:
    # ~/.backup/ryrestore.py /home/anrxc/.xinitrc
    
    0: monthly.1 [2010-04-04 00:05:33]
    1: monthly.2 [2010-03-10 00:04:10]
    2: daily.2   [2010-05-29 00:04:21]
    3: hourly.3  [2010-05-31 00:05:26]
    4: hourly.2  [2010-05-31 16:04:16]
    5: hourly.1  [2010-05-31 20:03:57]
    6: hourly.4  [2010-05-30 20:03:56]
    7: daily.3   [2010-05-28 20:04:01]
    8: weekly.2  [2010-05-13 00:04:04]
    9: daily.1   [2010-05-30 16:04:28]
    10: weekly.1 [2010-05-28 00:02:52]
    
    Snapshot: 5
    
    sending incremental file list
    .xinitrc
    
    sent 2634 bytes  received 31 bytes  5330.00 bytes/sec
    total size is 2543  speedup is 0.95
    

    30. 05. 2010.

    HTC Desire prvi dojmovi

    EDIT: 26.5.2010: par novih detalja, + vesela informacija da je Samsung I9000 Galaxy S koliko vidim HTC Desire killer.

    Kupih na pretplatu u VIP-u. Onu najmanju od 30kn, + 10 kn za radijsku frekvenciju + još
    oko 10 kn za iskorištavanje "besplatnih" minuta + po želji oko 30 kn za 200 MB prometa. Dakle obvezao sam se na trošenje minimalno 50tak kuna mjesečno sljedeće dvije godine.

    + 2400 kn za sam telefon i nije toliko loš deal.

    Kad sam kupovao
    HTC Desire znao sam da nije savršen, da ekran nije najbolje čitljiv na suncu, da uskoro dolaze novi uređaji temeljeni na bržem 45 nm Qualcomm Snapdragonu (moguće da će biti 1.5 GHz dual core!) i da će vjerovatno HTC kilaviti sa update-om na Android 2.2 za Desire , ali sam znao i da ima trenutno najbrži procesor, najviše memorije i odličnu kvalitetu zvuka, što mi je jako važno.

    Opasno me zainteresirala
    Motorola Milestone (Droid u USA), koja ima tipkovnicu, nešto sporoji procesor, ali zato dosta brži GPU. No ona je pala na audio testu na gsmarena.com, što provjeram za svaki mobitel koji uzimam u obzir pošto sam se opekao sa Nokiom N79 gdje mi je glazba bila neslušljiva od distorzija. Ta Nokia je bila blizu savršenstva, tj. Nokia E52 bi bila još bliža, ali sam odlučio zamjeniti sada prilično zrelu Symbian platformu sa Android-om koji je ipak njubi...

    • Još nema kvalitetne offline navigacije (Symbian Nokie imaju Garmin XT koji je odličan). iGo ima aplikaciju Motonav,(ima i potpuniji My way, ali neznam dali postoji verzija za Androide sa velikom rezolucijom), detalji ovdje. Navteq karte su bolje od Teleatlas karti izgleda. Garmin XT je još uvijek bolji, lijepše renderira karte i brži je.
    • Izgleda da je potrebno koristiti nekakav Task manager za ubijanje aplikacija, koje u pravilu nemaju exit ili quit opciju i vole sjediti u backgroundu.
    • Android issue 3708, Akcelerometar ne može dojavljivati podatke kada je ekran ugašen, tj. kad je mobitel u sleep mode-u. Ovime aplikacije koje recimo mjere broj koraka postaju skoro pa beskorisne jer puno brže popiju bateriju. Drugi primjer je navodno odlični Smart alarm. A i ja planiram napraviti aplikaciju koja inteligentno koristi akcelerometar u pozadini.
    • Još nisam naletio na dobar DivX player. HTC je nešto obećao u kasnije SW updateu. Ali poznato je da se ne može vjerovati ovakvim obećanjima od proizvođača mobitela.
    • Opera 5 Mini je još uvijek brzinom navigacije (back, forward, history) bolja od Android browsera. Komentar dolje spominje i Dolphin, ali to nisam probao. Android stock browser naravno bolje podržava JavaScript i HTML5 od Opere 5 mini.
    • root-anje Androida (za stavljanje custom ROM-ova) još nije stabilno za HTC Desire, neki ljudi uspiju brickati telefone kod flashanja, neki ne (meni osobno ovo nije toliko bitno, iako me živcira što se neke meni nepotrebne HTC aplikacije, Stocks recimo, stalno vraćaju u listu aktivnih procesa, iako ih nisam dozvao)
    • Još nema custom ROM-a koji je stabilan, tj implementira sve HW mogućnosti uređaja
    • Hardver je dovoljno različit od Nexus One-a da se na njega ne može staviti Nexus One ROM, što će vjerovatno značiti da će HTC Desire korisnici dobiti Android 2.2 kasnije od Nexus One korisnika (nadajmo se da griješim)
    • Aplikacije se po defaultu ne mogu instalirati na SD karticu, što ograničava prostor za instalaciju, HTC Desire ima samo 147 MB za instalaciju aplikacija. Ovo riješava Apps2SD (treba root), ili Android 2.2, ali oboje je trenutno nedostupno za Desire
    • Poneki bug u browseru
    • 3D je definitivno sporiji od iPhone-a 3GS, Motorole Droid, a vjerovatno i iPhone-a 3G
    • FM radio softver je dosta neintuitivan, i zna se skršiti tako da je potreban reboot mobitela da bi se radoi ponovo osposobio, dok uredno nastavi trošiti 100% CPU-a, što je smrt za bateriju
    • Aplikacije koje se plaćaju nisu dostupne kod nas?

    Aplikacije koje još tražim:

    • Music player koji ima file browser i playa po redu iz trenutnog foldera.

    Bonus

    Aplikacije koje sam instalirao, redom kojim sam ih instalirao (- neke igre):

    Google Sky Map, Compass (Snaptic), ConnectBot, ASTRO File manager, Accelerometer Values, Android Sensor Data, Sensor List, Input Benchmark, Ultimate Stopwatch, Spare Parts, PowerTutor, fring (Skype, SIP, odlično), GPS Status, GPS Test, GPS Essentials, SID Player, Robo Defense FREE, Task Manager (Rhythm Software), android-vnc-viewer, Android System Info, NetCounter, Neocore (benchmark za grafiku), NenaMark1 (još jedan GPU bench), Tuner - gStrings, Robotic Guitarist Free, Splash Piano (prilično loš klavir, ali nema bolji), Buddy Runner, Endomondo Sports Tracker, SportPal OS1.5, Hi-Hiker Pro, Pedometer, Cardio Trainer (da, testiram personal GPS enabled aplikacije za trčanje/hodanje/bicikliranje, Cardio Trainer je simpa), Android SPL METER, KeepScreen, Fractoid, 2 Ballz Physics Toz, System Panel App / Task Manager, Free Advanced Task Manger, Spectral Audio Analyzer, FxCamera, PicSay, Ethereal Dialpad (synthezer), Camera Illusion, RTA Audio Analyzer, Barcode Scanner, Shazam, Google Goggles (malo nestabilno), ColorFlashlight Fun Flashlight, Call History (xiaoheng.liu), Mobile Metronome, Paint Joy, Raging Thunder LITE, Open GPS Tracker, WiFi Analyzer, Google Translete, OpenGL Demos, Sipdroid VoIP, Linpack for Android


    Photo by Goran Zec

    The Bridge Trilogy

    First time I read Virtual Light by William Gibson I liked it, but I didn't appreciate it as much as it deserved. Only after Pattern Recognition and the current series I realized just how good the whole Bridge Trilogy really is. To me the path towards Pattern Recognition is evident in every chapter, hinted in every reference. While waiting for the Zero History release I decided to buy the whole bridge series and read it again. I'm half way through now, and I'm loving every page of it. I was born too late to really appreciate Neuromancer anyway, it never influenced me, not like it did the previous generation. It wasn't even what introduced me to cyberpunk, it was Neal Stephenson's Snow Crash instead. Maybe that's the reason I love Gibson's recent work so much, his amazing portrayal of the present, his ability to spot patterns and nodal points where nobody else does... bits of the literal future right here, right now.

    Virtual Light is set in the year 2005. Tokyo is recovering from a huge earthquake, and the society as a whole from AIDS. This is where we meet Chevette Washington, a bike courier. She lives on the San Francisco Bay Bridge, where squatters have built settlements. Visiting San Francisco, the bridge and Chevette's roommate (Skinner, a bridge veteran) is Yamazaki, a student of sociology from Japan. Another character is Rydell, a security guy and former policemen, who is brought in to help investigate a theft of VR glasses. Which just so happen were stolen by Chevette, on an impulse.

    The second book, Idoru, finds Rydell working for hotel security where he befriends a guest, Colin Laney, a data analyst. Laney has a singular gift - he can intuitively spot trends developing within masses of seemingly unrelated data. Through Yamazaki, who is now in Tokyo, Rydell finds a new job for Laney. The assignment is for Lo/Rez - the hottest rock band on earth. The lead signer has just announced that he intends to marry Rei Toi, a software agent and Japanese idoru. Chia, a member of a Lo/Rez fan club from Seattle, travels to Tokyo to visit the local chapter of the fan-club and find out if rumors about the wedding are true.

    The third book sees the culmination of all these events, and although All Tomorrow's Parties includes many of the same characters, it's not a direct sequel to either. The book offers its own story line, and is perhaps the best of the three. Laney can now see significant "nodal points" in the vast streams of data in the worldwide computer network, and he owes this gift to an experimental drug he received during his youth. Such nodal points are rare but significant events in history that forever change society, even though they might not be recognizable as such when they occur. Laney isn't quite sure what's going to happen when society reaches this latest nodal point, but he knows it's going to be big, and he knows it's going to occur in San Francisco. On the Bay Bridge.

    What happens when we reach the nodal point? Finding out is a perfect prelude to Zero History coming in September.

    29. 05. 2010.

    Btrfs Fedora Remix

     
    Currently I’m testing if it is possible to create btrfs live CD-USB Fedora Remix. If this works next release of Community Fedora Remix will have btrfs by default.
     
    What you need to do is to edit Fedora kickstart file. Instead of just one line that creates single ext4 root partiion you also need a dedicated /boot partition. Currently it is not possible to boot from btrfs partition.
     
    Original lines from Fedora kickstart files look like this:

    part / --size 5000 --fstype ext4

    And you need to change so it look like this:

    part /boot --size 120 --fstype ext4
    part / --size 6000 --fstype="btrfs"
    bootloader --location=mbr --append="btrfs"

     
    Keeping my fingers crossed that this works ;)
     
    UPDATE:
    This isn’t working, livecd-creator just fails when use kickstart file that is edited this way. I got a tip to try one different setup:

    part /boot –size=128 –onpart=sda1 –fstype=ext3
    part pv.01 –size=128 –onpart=sda2 –grow
    volgroup VolGroup pv.01
    logvol / –size=128 –vgname=VolGroup –fstype=btrfs –grow –name=root –fsoptions=ssd

     
    This works so far that it creates iso image but it is ext3 image, and not btrfs?!? Any ideas on how to create btrfs livecd is more than welcome.
     

    26. 05. 2010.

    TwinLab Calcium 1000 sa Vitaminom D SMRDI

    Ovo je otvoreno pismo poslano gosp. Ivanu Tudoru iz firme Agram 89 d.o.o, koja je zastupnik tvrtke TwinLab.

    Nedavno sam u jednoj ljekarni u Dugom Selu kupio proizvod firme koju zastupate, TwinLab Calcium 1000 sa Vitaminom D.

    U ljekarni gdje sam kupio proizvod su me uputili na vaš broj 01 3888 555. Vaše kontakt informacije dobio sam jer su me na vas uputili kada sam nazvao 01 6138 000.

    Računao sam na pomoć u ljekarni oko odabira najboljeg dodatka u prehrani koji sadrži kalcij i Vitamin D i bio mi je preporučen ovaj proizvod.

    Moj otac je nedavno operiran zbog rane faze adenokarcinoma (odstranjen mu je dio plućnog krila). Nedavno sam naišao na studiju koja govori da kombinacija Vitamina D i kalcija pomaže kod uobičajenih vrsta karcinoma (http://www.ncbi.nlm.nih.gov/pubmed/17556697).

    Iako ovo istraživanje nije provedeno specifično za adenokarcinom, mislio sam da ne može škoditi ako ocu kupim dodatak u prehrani koji sadrži Vitamin D i kalcij.

    Otvorio sam novo kupljeni proizvod i nakon što sam uzeo jednu tabletu primjetio sam u popisu sastojaka Titanijum dioksid, koji se u ovom proizvodu vjerovatno koristi zato da bi tablete bile bijele boje. Titanijum dioksid, E171 (http://www.ukfoodguide.net/e171.htm). Na priloženoj internetskoj stranici piše da je TiO2 zabranjen u Njemačkoj i da se može detektirati u limfnim čvorovima i plućnim stanicama nakon ulaska u ljudsko tijelo.

    Pošto TiO2 nema biološku ulogu u ljudskom tijelu, a spominje se da je iritant i da je potencijalno kancerogen, pitam se zašto se ovakvi proizvodi uopće prodaju, tj. zašto se u proizvod stavlja potencijalno opasan dodatak koji nema nikakvu funkcionalnu ulogu. Mislim da marketing i igranje sa psihologijom nebi nikad smjeli imati prednost nad funkcijom posebno kada se radi o ljudskom zdravlju i kada dodatak koji se stavlja iz marketinških potreba može štetiti.

    Stranica wikipedije http://en.wikipedia.org/wiki/Titanium_dioxide sadrži ukupno 6 referenci na studije kojim su okarakterizirani negativni učinci na ljudsko zdravlje.

    Nisam zadovoljan sa ovim proizvodom i neću ga koristiti, a niti moj otac. Proizvod sam platio 173 kn i imam račun iz ljekarne. Nije mi iznimno važno da dobijem natrag novac i nekakvu "zadovoljštinu", nego da se ljudi informiraju. Povrat novca bio bi lijepa gesta sa vaše strane.

    Možda ću pokrenuti inicijativu o zabrani proizvoda koji sadrže ne funkcionalne, kozmetičke E dodatke a koji imaju uz sebe povezane negativne efekte (E110, E171 itd). Molim zainteresirane da mi se pridruže.

    Pokrenuo sam raspravu o ovoj temi na adresi:

    http://ff.im/c2BgG

    No siguran sam da se o ovome raspravlja i na mnogim drugim mjestima na internetu.

    Izašao je Community Fedora Remix 13.1 “Lucky 13″


     
    Nakon mnogo mukotrpnog rada, štrikanja kickstart skripti, pravljenja novih rpm paketa i testiranja Community Fedora Remix 13.1 “Lucky 13″ je spreman za download.
     
    Dvije su osnovne ideja koje stoje iza Community Fedora Remixa, prva je “više od upstreama” a druga je “multimedija odmah”.
     
    Što znači “više od upstreama”?
    Fedora je vrlo usko vezana za upstream projekte (GNOME, KDE i sve ostale) te s njima ima jako usku suradnju, takav način suradnje donosi i puno prednosti pri razvoju novih mogućnosti. No bliska suradnja s upstream projektima ima i nedostatak ako netko želi bilo što eksperimentirati s nekim promjena na desktopu to ne može napraviti u Fedori već sve treba prvo dogovoriti s upstream projektima, što ubije sve ideje u početku. Zbog toga je izgled Fedora desktopa malo “zaostao” u odnosu na druge Linux distribucije koje grabe hrabro naprijed poput Linux Mint-a. Ovdje ne mislim na dizajn jer Fedora dizajn tim radi odličan posao, već na ukupan izgled i funkcionalnost desktopa.
     
    Kao je Fedora projekt omogućio pravljenje Remix-a iskoristili smo tu mogućnost kako bi napravili najbolji mogući Fedora Remix za desktop korisnike.
     
    Što znači “multimedija odmah”?
    Druga ideja “multimedija odmah” znači da su multimedia codeci i flash podrška odmah instalirani, nema potrebe za instaliranjem bilo kakvih dodatnih paketa.
     
    Ovaj Fedora Remix možete zamisliti kako Pimy My Ride verziju Fedore ;)
     
    Jedna od najvećih promjena u odnosu na sve mainstream distribucije je korištenje mintMenu-a i DoxkbarX-a na GNOME sučelju umjesto standardnih GNOME panel komponenti.
     
    Ovim putem vas pozivam da se i uključite u ovaj projekt. Ako imate ideju i znanje kako ju implementirati više ste nego dobrodošli. Ako imate samo ideju kako poboljšati ovaj Remix svakako javite, bilo bi nam drago da čujemo vašu ideju, a još draže da se priključite i sami ju ostvarite. Ako nešto i ne znate pomoći ćemo vam oko tehničkih detalja.
     
    Za suradnju se prijavite na mailing listu ovog Community Fedora Remix projekta.
     
     
    Kako pomoći ovom projektu:
     
    - ako imate ideje i znanje:
    * kako poboljšati Linux Destop
    * koje programe instalirati kao standardne
    * koje programe izbaciti s popisa standardnih
    * koje GNOME teme instalirati
     
    - ako ste grafički dizajner
    * pomognite nam u dizajnu web stranica
    * dizajn logotipa i zaštitnog znaka distribucije
     
    - ako ste web programer
    * pomognite nam podići novi web site, forum i sve ostalo što treba
     
    - ako ste Linux Ninja
    * uključite se u direktan razvoj ove distribucije
     
    Za detalje pogledajte i službene stranice.
     

    24. 05. 2010.

    Mojo Facets - evolution of faceted browsing

    My server side faceted browser just got a bit better. In fact, it become 10 times better. But, let's try to explain this story step by step...

    This week I will try to introduce faceted joins. Primary motivation is great Plants For A Future database which consists of more than one text file.

    Use case is something like following:
    I would like to know all plants which can have medical use, are edable and have perennial habitat (so I don't have to re-plant them every year).

    And you can watch the video to see how easily this can be done:

    But, this still doesn't make MojoFacets 10 times better than before. This is quite small dataset (still about 10 times bigger than Exhibit could handle), but I had new problem: 100Mb source file a bit less than 30000 items. To make it scale more I implemented pre-calculated filters and sorts. They serve same usage as indexes do in relational databases, but they are calculated on demand and stored in memory.

    Let's see in action how does it work with ~30000 items:

    In this video, we saw:

    Ok, 4s might not seem blazingly fast, but have in mind that all this is implemented in pure perl (so deployment is lightweight) using Mojolicious web framework. But it has it's overhead. Other than 260Mb or RAM for browser, it will also take 600Mb of RAM memory for server side. But, if you can live with 6* file size factor server side this might be very interesting as a faceted browsing tool for the web.

    Rat web video formata: VP8 vs. H.264 (iliti Google vs. Apple)

    VP8 vs. H.264

    Prošli tjedan je Google na svojoj IO konferenciji objavio kako će svoj VP8 video kodek učiniti dostupnim svima pod slobodnim licencama. Samu objavu podržao je veliki broj organizacija i firmi, među ostalima Mozilla, Opera, Adobe, donekle Microsoft, kao i neki proizvođači hardvera – nVidia, ARM, AMD, Texas Instruments.

    Posebnost objave je to da je VP8 ne samo kvalitetan (kvalitetniji od H.263, Theore ili Flash videa) i besplatan (odnosno enkoder/dekoder i specifikacija su potpuno otvoreni i slobodni za korištenje) nego je i neopterećen patentima. Točnije, Google kaže da je u posjedu svih patenata koje VP8 koristi, kao i da te patente daje u slobodno korištenje svim korisnicima VP8 kodeka. U praksi ovo znači da bilo tko može koristiti kodek (bilo za kreiranje sadržaja, distribuciju, ili samo gledanje) bez da ima obavezu bilo kome bilo što plaćati.

    Worse is better?

    To ga čini puno privlačnijim (sa pravno/ekonomske strane) od H.264, trenutno najzastupljenijeg (ako ne računamo ne-hd Flash videe, koji koriste stariji i lošiji kodek) kodeka za web video. H.264 je tehnološki bolji od VP8, ali je opterećen patentima. MPEG-LA, organizacija koja zastupa vlasnike patenata koje koristi H.264 trenutno dozvoljava njegovo korištenje uz prilično liberalne uvjete, ali vrlo je vjerojatno da će ih pooštriti (tj. početi naplaćivati) kad zaključi da joj se to isplati – odnosno čeka da većina sadržaja bude u H.264 i da ga svi koriste, pa će onda samo ubirati svoj dio.

    Iscrpnu usporedbu tehničkih karakteristika oba kodeka napravio je Jason Garrett-Glaser, glavni developer na x.264 (open source H.264 enkoder, vjerojatno najbolji na svijetu). Njegov zaključak je kako je VP8 tu negdje po kvaliteti kao osnovna verzija H.264 (tzv. Baseline Profile, inačica koja se većinom koristi u mobilnim uređajima), dok su naprednije verzije H.264 puno bolje od VP8 (dakle, nećemo uskoro gledati 1080p filmove u VP8 kodeku). Također kaže da su sami enkoder i dekoder trenutačno prilično ne-optimalni, za što je realnio zaključiti da će se popraviti s vremenom.

    Jason također tvrdi da su VP8 i H.264 zapravo vrlo slični – toliko slični da je moguće da VP8 ipak krši patente iz H.264. Njegovo mišljenje također dijeli i Steve Jobs, iako je za vjerovati da je to Jobsov primarno politički stav (Apple svugdje koristi H.264, jedan je od vlasnika patenata nad njim, i nikako im ne odgovara da svi ostali pređu na VP8).

    Rat patenata

    S druge strane, prilično je teško vjerovati da brojni odvjetnici Googlea i ostalih firmi koje ga podržavaju u ovome projektu nisu vrlo pažljivo pregledali svaki komadić kodeka i uvjerili se da nema opasnosti. Softverski patenti su vrlo specifični – da bi se dokazalo da netko koristi tuđi patent, potrebno je dokazati da precizno radi točno ono što piše u patentu. Kod H.264 stvar je čista, jer sam standard specificira točno one stvari koje su i u patentima. Ali kod VP8, ako je on samo “sličan”, ne mora značiti da krši bilo što. Dapače, lako je moguće da su očiti nedostaci VP8 u odnosu na H.264 izostavljeni baš zato kako bi se zaobišli patenti.

    Naravno, MPEG-LA je već najavila pripremanje “patent poola” i analizu VP8 kako bi ustanovila koji su patenti prekršeni. Ali njihovu izjavu treba shvatiti u kontekstu toga da se oni samo tim i bave, i već godinama najavljuju da će krenuti u pohod na Vorbis (slobodni i otvoreni audio kodek) zbog povrede neimenovanih patenata, pa još nisu. S druge strane, Google se drži prilično samouvjereno, i već je najavio da će svi sadržaji na YouTube-u biti rekodirani u VP8.

    Ono čemu se mnogi nadaju i što bi svakako zacementiralo sigurnost u VP8 je Googleova izjava da će na sebe preuzeti sav rizik od eventualne tužbe za povredu patenata – no teško je vjerovati da bi se Google želio toliko izložiti, bez obzira na to koliko su samouvjereni. U nedostatku toga, vrijeme će pokazati koliko su strahovi oko VP8 utemeljeni. U svakom slučaju, zanimljiva su vremena za web <video/> pred nama.

    PS. VP8 podrška dostupna je već za brojne free software multimedia projekte, među kojima su GStreamer, FFMpeg, MPlayer, VLC, itd. Više informacija kako gledati VP8 sadržaje može se naći na stranicama WebM projekta. I hrvatski web može se pohvaliti eksperimentalnom podrškom za VP8 na CARNet Media on Demand portalu.

    Working in Arch Linux

    The arrival of my new workstation saw the culmination of a 2 year quest to (drastically) improve my desktop environment. Machine came pre-installed with Ubuntu and LUKS which I disposed of, and installed the best desktop/workstation OS available at the moment, Arch Linux. Its solid UNIX fundations, its philosophy and package management, deserve an article in its own right so that is all I'll say about it now. Once the OS was installed I cloned my dotfiles.git repository and was ready to go. During these past few years I wrote about various software I use every day, but to see these components work in unison, to see the interaction and the big picture, is what matters to me most.

    Following the order of my awesome tag layout is a good path through my workspace. But first to mention Zenburn, a color scheme I discovered a few years ago, which now plays a very important role. Just about everything on my desktop follows the schemes guidelines, everything but GTK and QT widgets. Zenburn is easy on my eyes and saved me a lot of headaches.

    First tag is "term" where my terminals reside, Zenburn themed urxvt and screen connecting me to the outside world. An SSH client and Irssi are often found there. Long lasting sessions are always on that tag, but for quick terminal jobs the scratch module provides me with disposable terminals that slide-in or pop-up. While working, awesome's fair layout ensures each terminal gets an equal part of the screen, and one that requires my total attention I often maximize.

    Next tag is "emacs", probably the most important tag, where I code, write and take notes. The Emacs org-mode plays a crucial role, I use its format for notes, documentation, keeping track of projects and working hours, auth credentials, personal agenda and much more. I do use eCryptfs, but every sensitive file is also GPG encrypted with some help of Emacs epa-mode. Which brings me to the GPG agent which I mentioned in many previous articles. Every time Emacs needs my key a PIN entry dialog will appear, every time I open a new SSH session a dialog will appear to unlock that key. I have dozens of crypto keys but it's easy to keep track of them in this manner.

    Next tag is "web" with Firefox and vimperator that changed my browsing drastically. Once I wrote about connecting awesome with org-mode, and this is the tag where I utilize that connection the most. The Mod4+q key-binding spawns a little remember frame for taking a note, or automatically pasting the clipboard selection. I store huge amounts of web data in this way. Another very important connection is passing text field contents to Emacs, for editing. I use it almost exclusively for managing support tickets, once the ticket is opened in Emacs the post-mode is invoked.

    Speaking of e-mail, the "mail" tag comes next. The realm of Alpine and awesome's magnifier layout. Most of the time there are two instances running, one personal and one connected to the company's IMAP server. By the way Alpine handles a 500k mailbox with ease, and only days ago I heard a Thunderbird user complain it couldn't handle just 60. Where would I be without it, I can't imagine. Every time a new mail comes in the tag turns red, because of the urgent flag, one key press and the client which triggered the event is automatically focused. Since I use Topal this tag too spawns a lot of PIN entry dialogs.

    My fifth tag is reserved for IM, where Gajim was used almost exclusively until I needed OTR encryption on a daily basis. Now I run Pidgin, and I was very surprised that it took very little effort to make it look and behave exactly like Gajim. I spend a lot of time on this tag and it was very important to have zenburn in pidgin, otherwise all other efforts would be useless. The following tag, "rss", was very important while I was freelancing. Akregator would fetch the new projects feed every 5 minutes and often that responsiveness alone would land jobs. Last tag is "media", a floating layout tag with smplayer, utorrent, ROX, Okular... mostly for multimedia, and for reading.

    23. 05. 2010.

    e-recept

    Denis Avdagić je neki dan napisao kako Država zna koristiti Internet i dobro nas informira!. Svoje pozitivno mišljenje on zasniva i na činjenici da je Hrvatska 35. na svijetu po razvoju e-Vlade prema UN e-Government development index-u.

    Ja se ne bih složio s njim da je stanje dobro. Ako pogledamo Studiju dostupnosti javnih usluga na Internetu u RH u 2006. godini (ne vidim da ima noviji dokument od toga) onda vidimo da u zadnje 4 godine nije bilo značajnijeg napretka.

    Pogledajmo kako su razine informatiziranosti definirane Bangemannovim izvještajem:

    1. Nema informacije o usluzi ili pružatelj nema web stranicu
    2. Na webu je dostupna informacija o usluzi (npr. opis postupka)
    3. Jednosmjerna interakcija - dostupni formulari u elektorničkom obliku
    4. Dvosmjerna komunikacija - interaktivno ispunjavanje formulara i prijava uz autentifikaciju
    5. Transakcija - cijela usluga je dostupna na webu, popunjavanje formulara, autentifikacija, plaćanje i isporuka potvrda, narudžbe ili drugi oblici potpune usluge putem weba

    Masnim slovima je označen uvjet koji je potreban da bi neka usluga bila viša od razine 3. Autentifikacija. Korisnici trebaju elektronički identitet ili e-iskaznicu. Da li je u Hrvatskoj pokrenut taj projekt? Da li se o njemu uopće govori? Da li se na stranicama e-Hrvatska spominje nešto slično? Ne bih baš rekao.

    U Studiji dostupnosti navedeno je nekoliko usluga koja su dosegnule 4. razinu. Kod nekih je to navlačenje kriterija, a neke usluge stvarno imaju predispozicije za nju. Čini mi se da su za dobru ocjenu najviše zaslužne akademske institucije. One mogu bez navlačenja dosegnuti 4. razinu jer imaju riješen problem elektroničkog identiteta. Sve ostale usluge padaju na tom koraku. Hej političari, najprije nam treba elektronički identitet.

    Večernji list donosi vijest o projektu “zdravstva bez papira”. Do kraja godine će u cijeloj Hrvatskoj krenuti e-recept, e-naručivanje te elektronički karton. To zvuči odlično, a svi oni informatički pismeni će s uzdahom reći konačno. Mene je za oko zapela jedna rečenica iz tog članka.

    Pacijent odlazi u koju god ljekarnu želi, ljekarnik upisuje pacijentove podatke iz zdravstvene iskaznice u računalo i tako sasvim jednostavno nalazi lijek

    Upisuje? Što ima upisivati kad postoji zdravstvena iskaznica? Na papiru ovaj projekt zvuči odlično, ali da neće po starom, lošem, hrvatskom običaju sve biti uprskano lošom izvedbom? Ili još veći horror: da svaka nova e-usluga bude imala svoj način identifikacije korisnika?! Potreban nam je jedinstveni elektronički identitet.

    U članku se spominje kako će različiti djelatnici vidjeti samo one podatke o pacijentu koje su im potrebne za njihov rad i napomenuto je kako se vodilo računa o zaštiti osobnih podataka. Među onima koji bi trebali vidjeti te podatke nedostaje jedan važan element: sam pacijent. Nigdje se ne spominje da će on imati uvid u svoje podatke, a čini mi se da je jedan od preduvjeta uspješnog elektroničkog društva da svaka osoba ima potpuni uvid u podatke koje o njemu imaju javne institucije (osim slučajeva gdje to zbog drugih interesa nije moguće - ne bi bilo dobro da kriminalci vide da ih prate). Taj uvid bi prvenstveno imao ulogu kontrole podataka jer svaka osoba će za sebe najbolje znati da li su podaci točni ili ne, a nema smisla da hrpa državnih službenika ima uvid u vaše podatke dok vi sami ne smijete znati što oni znaju.

    U lijepoj priči o e-receptu nedostaje jedan važan usability detalj. Lječnik prije slanja recepta u sustav provjerava da li je lijek dostupan u ljekarnama. Ako nije onda propisuje drugi odgovarajući lijek ili pokreće proceduru nabave lijeka. Drugi dodatni detalj: kronični pacijenti ne moraju zvati doktora da im napiše e-recept već mu pošalju elektorničku poruku (najbolje bi bilo kad bi to bila neka web aplikacija HZZO-a) koju doktor samo odobri.

    U članku se spominje i HZJZ koji će, kad sustav proradi, podatke o zdravlju i bolestima nacije dobivati u stvarnom vremenu. Te podatke ne bi trebali zadržati za sebe ili ih skupo prodavati, već bi po Open Government Data Principles trebalo učiniti javno dostupnima.

    16. 05. 2010.

    Taj Git ne vrijedi ničemu

    Članak Git is a Harrier Jump Jet. And not in a good way je klasičan primjer situacije kad se neka aplikacija proglasi lošom zbog nedovoljnog poznavanja iste.

    Oni koji žele koristiti samo 3% njegovih funkcionalnosti mogu to bez problema. Znam jer sam prošao taj put, u početku sam koristio 2-3 najosnovnije radnje. Hash kao identifikator inačice zvuči loše ukoliko se s Gitom ne radi kako treba. Kod Gita je commit jeftin i treba ga što češće koristiti. Napravite neku funkcionalnost. Commit. Ispravite bug. Commit. U takvoj slučaju kad imate puno manjih commitova nećete za svaki od njih mijenjati oznaku inačice. Ako hoćete oznaku onda za to upotrijebite oznaku (tag). Savjet: ako baš trebate koristiti hash identifikator ne morate ga navoditi cijelog, dovoljno je prvih nekoliko znakova.

    Autor članka se okomio i na činjenicu da treba najprije dodati (git add) neku datoteku i tek onda napraviti commit (git commit). Oni koji žele mogu to obaviti u jednom koraku (-a parametar), a oni koji žele znati više neka prouče što je to staging area. Primjer upotrebe: radite na nekoj funkcionalnosti i uleti vam ispravak nekog buga nevezan za to što radite. U staging area dodate samo taj ispravak i napravite commit. Vratite se onome što radite i poslije commitate taj dio. Poželjno je da commit bude neka cjelina. Na taj način će vam biti jednostavnije korištenje i jedne druge Git funkcionalnosti koja se zove cherry pick.

    U jednom je autor članka u pravu, Git se ne može koristiti kao CVS jer to i nema smisla. Ako trebate CVS koristite njega. Osnovna greška koju čine mnogi korisnici, kad prelaze sa stare aplikacije na novu, je da na novoj aplikaciji pokušaju zadržati stari način rada. U želji da što prije počnu raditi korisnici preskaču upoznavanje s novom aplikacijom i proučavanje njezinog načina rada. Pogrešan pristup obično rezultira neželjenim rezultatima i frustracijama. Kad počinjete upoznavati nove alate i aplikacije zaboravite na tren ono što znate od prije, pokušajte neopterećeno i otvoreno upoznati način na koji novi alat rješava probleme.

    Aljkavi pilot Harriera se žali i na nedostatak dokumentacije, tutoriala za Git. Izgleda da on uopće nije pogledao što piše na Documentation stranici, nije uspio izguglati git ready, gittutorial, Everyday Git, Git for the lazy

    Senko je na ovogodišnjem DORS/CLUC-u održao Git radionicu na kojoj je prošao osnove i popričali smo o tome kako nedostaje radionica na kojoj bi se pokazali načini korištenja, najbolja praksa i konkretni slučajevi kako koristiti Git. Većina developera će brzo i samostalno naučiti osnove korištenja, ali do najbolje prakse će doći tek vremenom. Bilo bi zgodno kad bi im netko skratio to vrijeme.

    12. 05. 2010.

    DORS/CLUC 2010 conference

    Like every year, we had our local Linux conference. It was very intense event (for first year I'm involved in real organization) and I can say it's all just a big blurb.

    I had two tutorials, one about my Virtual LDAP and another one about creating Google like (horizontally scalable) cluster from library building. In this one, I covered a whole bunch of tools which I ended up using during last year:

    During the conference I wrote small project to index git log messages using Sphinx which might help you to get started with it.

    Google wants http:// to die

     
    From what Google is doing in Chrome/Cromium browsers it is obvious that Google wants http to disappear. Google is saying that http confuses regular users, but that is just pure PR nonsense and a lie.
     
    The real reason is that spdy:// would confuse users, but Google is spinning it a different way and Chrome/Chromium developers must do as Google tells them to do.
     
    If you aren’t familiar with spdy:// it is a new and protocol that is faster and better than http protocol for browsing, it is developed by Google.
     
    Spdy hasn’t gained much traction since it’s announcement, and none of major sites uses spdy protocol yet, so to make it ambiguous Google has decided to remove http from Chrome/Chromium browsers address bar thus causing lots of havoc.
     
    Chromium developers aren’t listening to any comment and just ignore all issues that have been cropping up. For me first issue is that copy/paste of url links on Linux is broken, but there are more serious issues if you read through comments.
     
    Now even commentig is disabled and on the bug page there is a message saying: “This issue is read-only. New comments cannot be added.” This is a really bad move from Chromium developers. The discussion was locked on first mention of spdy protocol.
     
    The obvious solution to show http:// when users click on the address bar just isn’t what Google wants, no matter what users want.
     

    06. 05. 2010.

    Sphinx i FLOSS GIS (DORS/CLUC 2010 dan drugi)

    Zadnjih par mjeseci važem razna rješenja za pretraživanje teksta, a kako mi je u fokusu Django onda mi je Haystack bila glavna igračka za traženje igle u plastu sijena. Haystack je samo jedinstveni API ispod kojeg možete prikačiti neko od rješenja za pretraživanje (Solr, Whoosh, Xapian). Zgodan je u slučaju da niste sigurni koje će rješenje koristiti vaša aplikacija, pa s njime možete biti sigurni da nakon izmjene mašine-tražilice ne morate mijenjati kod.

    Kako nam je DORS/CLUC doveo Andrewa Aksyonoffa mislio sam kako ne bi bilo loše provjeriti što njegov Sphinx nudi. Ipak on ima slične probleme s čudnim slovima i još čudnijim jezikom kao i mi pa su nam rješenja na sličnim valnim dužinama. Za vrijeme radionice uspio sam indexirati bazu tekstova jednog manjeg portala, stvar je odlično fercerala, a weighting je bio odlično pogođen za moj testni uzorak. Kako postoji django-sphinx vrlo vjerojatno će sve to brzo u produkciju…

    GIS mi je oduvijek bilo nešto čime bih se želio baviti, a nisam bio u prilici i zbog toga me jako zanimalo što će Darko Boto reći na temu GIS-a na GNU/Linuxu. Na radionici se koristio Arraramagong live DVD s hrpom predistaliranih aplikacija (isključivo pod pokroviteljstvom OSGeo fondacije).

    Svežanj predstavljenih aplikacija je pokazao kako su GIS FLOSS rješenja itekako konkurentna. S njima možete napraviti sve što možete zamisliti, a i više od toga. Od manipulacije vektorskim i rasterskim podacima, njihove analize i obrade do vizualizacije na razne načine. Ima čak i moćnih GUI alata (Quantum GIS), a uz raspoložive podatkovne alate (prvenstveno PostGIS), odličan srednji sloj (MapServer, GeoServer, Mapnik) te web klijente (OpenLayers, GeoMayas, MapFish) više zaista nema opravdanja za nedostatak web aplikacija koje bi koristile te blagodati.

    P.S. Vidi Podkast i Željko Filipin (of Watir fame ;-) ) predstavljaju dva DORS/CLUC predavača: Andrewa Aksyonoffa i Floriana Schießla.

    05. 05. 2010.

    DORS/CLUC 2010 predavanja

    Slijedom nespretnih okolnosti na DORS/CLUC 2010 sam došao tek na Mrakovo predavanje o predsjedničkoj kampanji na Linuxu. Jedna njegova rečenica je potvrdila ono što većina informatičara iz drugih tabora poriče: Linux je konkurentno rješenje za desktop u radno orjentiranoj okolini. To poricanje više proizlazi iz nedovoljnog iskustva, ustavljenih navika, pomalo i straha, nego što ima realne temelje. Što je to Mrak rekao? Neki ljudi osam mjeseci nisu skužili da rade na Linuxu, a ne na Windowsima.

    Njegova priča potvrdia je i da su moje predodžbe o katastrofalnoj sigurnosti u državnim i javnim institucijama točne. Sigurnost se na svodi na postavljanje neprobojnog vatrozida. Računalna sigurnost je jedan složeniji proces u kojem sve pada u vodu ako ste zaboravili na najslabiju kariku.

    Mrakovoj priči smo se uglavnom smijali, ali kad je Harald Welte počeo priču o katastrofalnoj sigurnosti GSM mreže sigurno je bilo onih koji su ozbiljno počeli razmišljati o tome da više uopće ne koriste mobitel. Harald je i glavni developer u OpenBSC projektu koji bi vam mogao biti zgodna igračka ako vam pod ruku dođe neka rashodovana bazna stanica.

    Darko Sokolić i Hrvoje Vulin su pričali o DRBD-u, a ja sam shvatio da sam to vidio u produkciji i da čovjek to mene to vrti već 3 godine na produkcijskim poslužiteljima. Tonimir Kišasondi je nastavio u sigurnosnom stilu o sigurnosti autentifikacije i tokenima. U praksi je pokazao kako radi YubiKey.

    Zanimljive novosti mi je otkrio Darko Gulija u svojem predavanju o spajanju distribuiranih podataka širom weba (Linked Data). Jedna od tih novosti (za mene) je DBpedia koja omogućava zanimljve upite nad podacima s Wikipedije.

    Silvia Kolarić, uz podršku Vinka Prelca, pričala je o FLOSS-u u nastavi informatike u osnovnoj školi i predstavila aplikacije koje je ona koristila. Najavila je i projekt Menta, live DVD sa svim aplikacijama koje su potrebne u nastavi. Kroz predstavljanje se iskristalizirao glavni problem informatike u našim školama. Ovaj ili onaj operacijski sustav je tu najmanji problem, najveći je problem u školskom programu koji je skrojen po nekim čudnim mjerama i ne daje ono što bi trebao dati: osnovna i opća znanja koja su temelj za daljnju nadogradju.

    Tijekom dana je više puta spomenuto kako na Linuxu nema virusa pa je tijekom Silvijinog predavanja iz auditorija stigla primjedba kako nije istina da za Linux nije potreban antivirus i da je to zavaravanje korisnika. Iako ne treba zanemarivati taj sigurnosni aspekt, činjenica je da velika većina Linux korisnika ne koristi antivirus, a da sigurnost njihovih računala nije zbog toga narušena. Primjer za to je i spomenutih 8 mjeseci predsjedničke kampanje i hrpa računala bez sigurnosnog incidenta.

    Antivirusi imaju i dodatnu osobinu o kojoj se rijetko kada govori: usporavaju rad računala i stvaraju dodatne probleme. To se obično očituje kad treba kopirati datoteke s jednog mjesta na drugo (situacije u kojima je isključivanje antivirusnog programa dovelo do ubrzanja od 100 puta) ili kad nespretno zaključavanje datoteka uzrokuje neočekivano ponašanje aplikacija koje pišu u njih (korumpirane datoteke ;-)).

    Žao mi je što nisam imao vremena popratiti uvod u NOSQL baze podataka i okrugli stol koji je slijedio nakon toga, ali valjda je to snimljeno pa se bude kasnije moglo pogledati.

    Sve u svemu, zanimljiv dan na konferenciji.

    01. 05. 2010.

    The end

    I'm closing this blog until further, since I do not have much time to invest in writing coherent, meaningful posts. Longer, in-depth texts will from now on appear on my homepage at zvrba.net Commenting is disabled since a lot of spam has lately appeared.

    30. 04. 2010.

    CL-Javascript 0.10.05

    CL-Javascript 0.10.05

    With version 0.10.05 we announce the first public release of CL-Javascript, translator from Javascript to Common Lisp.

    Project overview

    The main idea behind the project was to provide a way to extend CL applications (or libraries) with a standard and widely accepted scripting language. Javascript seemed to be ideal for such a purpose since the language is popular, quite small and its semantics are not that far from Lisp's.

    Rather than writing an interpreter, CL-Javascript converts Javascript to CL, which is then compiled as any other Lisp program. With such an approach most of the runtime overhead is eliminated – although the function-calling protocol and runtime dispatching still make Javascript programs slower compared to pure CL.

    CL-Javascript is licensed under the MIT Public License.

    The official project page is at http://github.com/akapav/js

    Implementation

    For parsing, CL-Javascript uses Marijn Haverbeke's excellent parse-js library, which generates AST in a form of s-expression which perfectly suits its needs. This AST is preprocessed (lexical scope analysis, local function reordering, keywords changed to symbols from the JS package, and some syntactic forms reduced) so that the resulting form is a valid and executable CL expression in which every node is further macroexpanded. On top of that there is a reader macro layer which allows embedding parts of Javascript directly into Lisp code.

    The rest of the system contains support for the JS runtime -- including object hash tables, functions, operators, as well as an implementation (currently incomplete) of the JS standard library.

    Usage

    Since there is no documentation (yet), here are a few examples how to use CL-Javascript. It is important to mention that while all system symbols are interned in the JS package, symbols generated during program execution are interned in the JS-USER package.

    At the moment, there are several ways to execute JS code from within Lisp.

    !eval macro

    Probably the easiest way to invoke JS code from CL is using the js::!eval macro. The following example just prints hello world and returns its result (UNDEFINED in this example) back to Lisp.

    (!eval "print('hello world!');")
    

    Reader macros

    Reader macros are designed to embed JS code directly into CL. Code between #{javascript} and . will be compiled and inserted in-place.

    In the following example an anonymous JS function is generated and returned to Lisp, where it can be used directly.

    (defun sum-to (n)
      (js::js-funcall
    #{javascript}
        (function(n) {
          var sum = 0;
          for(var i = 0; i < n; sum += i++);
          return sum;
        })
    .
      n))
    

    Note that unless you are in the JS-USER package you should write #{js::javascript} instead.

    Loading external files

    To load and execute external JS programs one should use the js::js-load-file function which accepts a filename as its only argument.

    (js-load-file "hello.js")
    

    Interning to JS-USER

    At the moment, all properties of [object Global] are interned into the JS-USER package, so they are directly visible form CL. If some of those properties are function definitions then a defun wrapper is also generated. The drawback to such an approach is that JS properties are case- sensitive, while most CL implementations use an uppercase symbol case policy.

    #{javascript}
    var one = 1
    function adder(n)
    {
       return function(m) {return n+m;}
    }
    .
    
    (js::js-funcall (adder one) 2) ;=> 3
    

    Callbacks

    this part will probably be changed soon

    At the moment the only way to implement callback functions to CL is to use the js-function macro.

    Example from stdlib.lisp:

    (setf (prop *global* "print")                               ;add 'print' property to global object
          (js-function (arg)                                    ;define js callable function 
            (if (undefined? arg) (format t "~%")                ;underlying lisp code
                (format t "~A~%" (js-funcall string.ctor arg)))))
    

    There are also plans to allow direct embedding of Common Lisp code in Javascript (the opposite of the #{javascript} reader macro), but such a change would require some additional modifications to Javascript's syntax.

    Project status

    Although most of the ECMA-262 standard is implemented, the project is still under heavy development. Known missing features are: bitwise operators, RegExp and Date classes, as well as some Number formatting methods. Error reporting still needs significant improvement; additionally, optimizations to operator dispatching would increase the overall performance of generated code.

    The project is developed in SBCL, but since no SBCL specific extensions are used, it should be easy portable to any other Common Lisp implementation.

    Versioning

    CL-Javascript uses a hybrid versioning schema - the first number indicates development stage (0 means no stable release yet), and decimal numbers indicate release date. In general, the schema for minor releases is [0,1,..].yy.mm, while stable releases use [1,2,..].00.00.

    29. 04. 2010.

    btrfs love-hate relationship

    I love btrfs, and he hates me back. Tonight he decided to take away my holiday morning by spinning single core and bringing server down for three and half hours until I migrated everything back to ext4.

    prod-load-day.png prod-processes-day.png prod-cpu-day.png

    I will miss snapshots, but with all troubles I had so far, it's not worth it. See you in few years...

    27. 04. 2010.

    Dobre programerske navike

    Na blogu, čiji je naziv predug i predosadan za navođenje, navedeno je 6 najboljih programerskih navika (u naslovu se spominje 5), a kako mi se čini da su natuknice odlične, a tekst nešto manje, onda sam odlučio da ih prepričam na svoj način. :-)

    Na greškama se uči. Kažu neki da je pametnije učiti na tuđim greškama, ali vlastite greške imaju bolji učinak. Kod greške je vrlo važno otkriti kako je došlo do nje i razumijeti okolnosti pod kojima je nastala. Nije dobro kad se greške javljaju zbog toga jer programer nije predvidio i obradio neregularne slučajeve (neočekivane unose). Poseban su problem programeri koji ne priznaju vlastite greške i svaki otkriveni bug smatraju napadom ne sebe. Bugovi su sastavni dio programerskog posla i svaki bi programer trebao imati razrađenu proceduru za njihovo rješavanje i preventivu. Poricanje to sigurno nije.

    Najbolja rješenja su najjednostavnija rješenja. Ako je neki problem rješen na kompliciran način sasvim sigurno je pogrešno riješen. Jednostavno je u većini slučajeva i najbolje. Najveći problem je što je ponekad do jednostavnog teže doći. Tu su nam problematični programeri koji vole komplicirati jer jednostavna rješenja ne smatraju dostojnim njihove genijalnosti ili jednostavno ne znaju stvari rješavati na jednostavan način.

    Komunikacija treba biti jednostavna i razumljiva. Programer treba znati što traži od korisnika i navesti korisnika da mu to kaže na najjednostavniji način. Problematični su oni korisnici koji pokušavaju programeru reći kako oni misle da bi problem trebalo riješiti. Ja sam korisnicima uvijek znao govoriti da zanemare tehnikalije te da mi pokažu kako oni rješavaju taj problem na papiru, bez računala. Nije potrebno da programeri korisnika zamaraju s tehničkim detaljima, to njih može samo zbuniti. Korisniku je važan ulaz i izlaz, crna kutija između njih je stvar programera.

    Učenje novih tehnologija, metodologija i alata se podrazumijeva. Neki programeri su odabrali put u jednom pravcu i smatraju da ne trebaju učiti ništa izvan tog puta. Uvijek je dobro učiti nove stvari, čak i ako nisu u direktnoj vezi s specijalnošću nekog programera. Nešto što ste vidjeli u drugom dvorištu može vam dati ideju kako da riješite problem u svojem.

    Oblačenje u tuđu kožu. Ako radite program za nekog korisnika, a smatrate da ne morate znati ništa o njegovom poslu, onda ste u krivu. Programer se mora ponekad naći u koži korisnika kako bi bolje razumio problem i na taj ga način bolje riješio. Iako programeri izrađuju programe, oni nastaju i rade se za korisnike i ne bi im trebalo biti ispod časti da snime stvari i iz korisničke perspektive.

    Podučavanje. Ako ste sebični programeri i smatrate da je vaše znanje predragocjeno da bi ga samo tako dijelili s drugima, onda znajte da podučavanjem pomažete ne samo drugima nego i sebi. Kad drugima prenosite neko znanje onda ga morate uobličiti, sistematizirati, srediti. Tako možete otkriti neke nedostatke u vašem znanju ili u metodama. Pametan učenik će vam postavljati pametna pitanja. Možda ste preduboko ušli u rutinu pa vam neka jednostavna rješenja nisu tako očita kao nekome tko to gleda sa strane ili iz druge perspektive.

    U tekstu govorim o programerima, ali zapravo mislim na one koji su stepenicu iznad toga i nazivaju ih developerima. Ne znam da li u hrvatskom postoji neka prikladna riječ za njih.

    26. 04. 2010.

    Apache2 + mpm-worker + php5-cgi

    Kombinacija apache2-mpm-worker, php5-cgi, libapache2-mod-fcgid,
    preporuča se na serverima gdje se očekuje velik broj upita prema web servisu.
    Spomenuta kombinacija zahtjeva malo više RAM memorije, no to ovisi o MaxClients parametru.
    Što veći broj uz parametar –> više rama za apache servis –> više simultanih konekcija prema web servisu.

    Instalacija:

    sudo apt-get install apache2-mpm-worker php5-cgi libapache2-mod-fcgid

    Konfiguracija:

    sudo vim /etc/apache2/conf.d/worker

    AddHandler fcgid-script .php
    SocketPath /var/lib/apache2/fcgid/sock
    Options ExecCGI
    IdleTimeout 10
    ProcessLifeTime 360
    MaxProcessCount 8
    IPCConnectTimeout 8
    IPCCommTimeout 5
    
    <IfModule mpm_worker_module>
        StartServers        50
        MinSpareThreads     200
        ThreadsPerChild     250
        MaxRequestsPerChild 0
        MaxClients          400
        KeepAliveTimeout    2
        ThreadStackSize     65536
    </IfModule>
    

    sudo vim /etc/apache2/sites-available/neki-web

    <VirtualHost *:80>
    DocumentRoot /var/www/neki-web
    
        <Directory /var/www/neki-web>
            FCGIWrapper /usr/bin/php-cgi .php
            AddHandler fcgid-script .php
            Options +ExecCGI
        </Directory>
    
    </VirtualHost>
    

    Aktivacija neki-web stranice u apache-u:

    sudo a2ensite neki-web

    Restart servisa:

    sudo /etc/init.d/apache2 restart

    24. 04. 2010.

    Fedora 13 – btrfs and Asus eee issues

     
    I have friend’s Asus eee 701 with only 512 Mb of RAM and 2GB SSD storage. I would like to install Fedora 13 on this netbook and increase SDD performance and speed via btrfs and enabling compression.
     
    I immediately stumbled upon some issues:
    - Anaconda graphical installed doesn’t support 800×480 resolution
    - Anaconda text installer fails on 2GB SDD
    - No support for btrfs compression during the install
     
    I reported these three issues:

  • RFE: Include btrfs compression option in Anaconda installed
  • Anaconda installed doesn’t fit Asus eee screen (800×480)
  • Anaconda text install fails on 2GB SSD
  •  
    Any help with getting Fedora 13 installed on Asus eee 701 with btrfs + compression is more than welcome.
     

    23. 04. 2010.

    MySQL is slow! Did you tune your settings?

    Can MySQL be slow? Yes it can. It depends on disk speed (even if you have fancy SSD drives) and some tuning can turn down query time dramatically, especially if you are currently using default settings and/or your accumulated several gigabytes of data. Sure, there is documentation about optimizing MySQL, and bunch of information on Internet but where to start?

    Tune MySQL parameters

    For a start, download mysqltuner.pl or tuning-primer.sh and run them. While they won't give you exactly same recommendations it will give you nudge into right direction.

    I would especially recommend setting innodb_buffer_pool_size to some reasonable number. This will provide immediate performance improvement, especially if you are running with default Debian settings and have couple of gigs of data.

    Find slow queries

    But linking to scripts wouldn't be worth a blog post. Next step is to find which queries are slow on your system. To do that, you can use Maatkit or more specifically mk-query-digest. You can feed it with /var/log/mysql/mysql-slow.log or run in on live system:

    $ wget maatkit.org/get/mk-query-digest
    $ perl mk-query-digest --processlist localhost --interval 0.01
    
    This will create considerable load on your system (since we are using inverval of 0.01 seconds to capture all queries running longer that that), but after you press Ctrl+C you will have good idea which queries need speedup. You can also take a look at Baron Schwartz video from OpenSQLCamp 2009 or presentation about mk-query-digest from PgEast 2010 if you want to know more. Hint: it supports MySQL (slow query log, binlog, genlog or tcpdump), HTTP, PostgreSQL and memcached.

    If you are can modify application, dig into show queries. In my case, I found out that session handling in Koha takes more than 75% of all MySQL query time. I decided to leave this for future improvement. But, if you can't or don't want to modify application, simply move to next topic.

    Tune Linux

    Yoshinori Matsunobu had great presentation Linux Performance Tuning and Stabilization Tips at recent MySQL Conference & Expo in which he covered all various ways to optimize Linux for MySQL workloads. I will summarize here just few parts which I found useful for my workload which involves multiple LXCs, each with own logical volume using btrfs and sitting on battery backed RAID controller.

    Results

    So did all of this made sense? It's best to have clear goal when optimizing, and mine was less than 3 second web response. Without any MySQL tweaking and 3Gb database it was taking 5 seconds or more for each response. To my amazement, without any modification in application itself, I managed to produce visible improvement, even if only real comment I got was: It's not slow today :-)

    22. 04. 2010.

    Awesome widget properties

    Awesome progressbars The next stable release of the awesome window manager will introduce some new widget properties. When graphs and progress-bars were ported to Lua, in the 3.3 to 3.4 transition, some of the properties were lost. Most notably the progress-bar ticks, and the graphs ability to draw multiple values at once. Well, they are back, and will be included in awesome v3.4.5! To tell the truth they are not as nice as the old properties, because I tried to keep them as simple as possible (by design and implementation).

    The progress-bar ticks introduce two new methods: "set_ticks_gap" and "set_ticks_size". Default gap size is 1, and tick size 4, in respect to the default progress-bar width of 100px. That's what the above picture shows, defaults. But if you use a lot of custom properties, and change the progress-bar size, it's up to you to pick the perfect gap and tick size for that progress-bar.

    The graph stacking (also called multigraph by some) introduces these new methods: "set_stack" (false by default) and "set_stack_colors" (i.e. {"red", "white", "blue"}). The order of colors matters, because the "add_value" method now accepts an (optional) last argument, an index of a color from your stack color group. With these properties you can draw graphs similar to those found in Gnome, feed them multiple values and by specifying a color index they will all be drawn on the graph.

    Remaining two are smaller properties, but could be as important as the others to some people. First of them found its way into awesome in the current 3.4.4 release. The progress-bar "max_value" property allows you to feed your progress-bars with any value without having to scale it to the 0-1 range. Graph widgets already supported this. The last property is the progress-bar "offset", which may not be included after all, but some future user might want it so I'll link to the mailing list patch. With offset the progress-bar will be drawn distanced from the border by as many pixels as the offset argument.

    19. 04. 2010.

    btrfs: what about using it in production?

    I have been following btrfs for quite some time. First I got kernel oopses with full disk (which have been fixed since), and then I began testing snapshots for incremental backup. Few weeks ago, I have taken a plunge and migrated by production server over to btrfs. I will try to summary first few weeks of my experience with it.

    For a start, forget about using btrfs-tools which come with your distribution (Debian in my case). It's probably too old to include delete snapshot option which is really needed if you don't want to fill up your disk eventually. So, hop over to btrfs-progs-unstable and compile your own utilities.

    With latest utilities at hand, I decided to make logical volume for each of my virtual machines. Before installing (or migrating) machine, create sub-volume. This is important because snapshot work on file-system or sub-volume level, and if you want to create incremental snapshots, you need to have sub-volume to snapshot.

    root@prod:~# lvcreate -L 50G -n koha raid5
      Logical volume "koha" created
    
    root@prod:~# mkfs.btrfs /dev/raid5/koha
    
    WARNING! - Btrfs v0.19-15-g8f55b76-dirty IS EXPERIMENTAL
    WARNING! - see http://btrfs.wiki.kernel.org before using
    
    fs created label (null) on /dev/raid5/koha
            nodesize 4096 leafsize 4096 sectorsize 4096 size 50.00GB
    Btrfs v0.19-15-g8f55b76-dirty
    
    root@prod:~# mkdir /mnt/koha
    
    root@prod:~# mount /dev/raid5/koha /mnt/koha
    
    root@prod:~# btrfsctl -S rootfs /mnt/koha
    operation complete
    Btrfs v0.19-15-g8f55b76-dirty
    

    Now, you are ready to install your machine in /mnt/koha/rootfs. After you have done that, you can create backup snapshots using something like this:

    root@prod:~# mkdir /mnt/koha/.snap
    
    root@prod:~# btrfsctl -s /mnt/koha/.snap/2010-04-19 /mnt/koha/rootfs/
    operation complete
    Btrfs v0.19-15-g8f55b76-dirty
    

    Even, better, you can hop over to my sysadmin cookbook and fetch mksnap shell script which will create hourly snapshots of your machine for nice incremental backups. This is all nice and well, but after a while you will see that your disk-space increases all the time (which is expected because you are creating one snapshot every hour, collecting all changes).

    prod-df-month.png

    As you can see in graph above, after two weeks of such usage, I figured out what I will run out of disk space eventually, and even worse, disk fragmentation begin to take toll on performance of my server. So, I implemented small perl script to expire snapshots older than 3 days (but keep single midnight snapshot for each day). I also decided to create cron job to defragment file-system every morning.

    dpavlin@prod:~$ cat /etc/cron.d/btrfs-defrag
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # m h   dom mon dow     user    command
    15 7    * * *           root    btrfsctl -d /mnt/koha/rootfs/
    

    This did help a bit, but not good enough. I have three basic services on this box: Apache web server running perl cgi scripts, MySQL database and Zebra indexer. So, in a final step of despair (before going back to ext4) I decided to move Zebra to RAID1 volume which is on two separate disks. And it did make a huge change.

    prod-iostat_ios-day.png

    So, is btrfs ready for usage in production? That depends on your IO load. If you have to more-or-less random IO workloads (like RDBMS and full-text indexer in my example) spreading it over multiple disks will provide better performance than any choice of file-system. But, if snapshots are something useful for your use-case, give btrfs a try. Also have in mind that recovery tools for btrfs are... non-existent. So make backups (which is good idea anyway) and remember that btrfs snapshots on same disks don't count as backup.

    GNU/Linux and ThinkPad SL510

    I got a new workstation last month, a laptop from the ThinkPad SL series. The TuxMobil article about installing Arch Linux on it is here. Overall it works good, but I soon regretted the decision to go with Lenovo. The ACPI support is almost non-existent, none of the function keys work, there's no bluetooth rfkill so it constantly draws power, and the machine can't wake up from suspend.

    It is my workstation, but still what use is a laptop without any power management features? It's 2010, and I can barely comprehend the suspend/hibernate situation in Linux. Last two years with my TravelMate have been a constant battle, 3 months of suspend working, followed by periods when it was broken. Last of which is especially ugly, it breaks hibernation for people with Intel graphics. Worst of all, in periods when it was working you still couldn't suspend because you couldn't trust it.

    These machines actually have the IdeaPad firmware, which rules out using thinkpad_acpi. Next up was lenovo-sl-laptop, a third party module which provides support for SL models, but only up to SL500. Then I turned to asus-laptop which provides official in-kernel support for ThinkPad SL. Unfortunately after inspecting the DSDT developers concluded SL510 support is not possible. These machines expose a wmi interface, but it's not handled by any current module. Developing one will not be easy.

    I don't want to write to kernel mailing lists or Lenovo until I find more owners of SL510, or some other model with the same interface. Individually we could be ignored, together maybe we get the ball rolling towards "lenovo-sl-wmi".

    18. 04. 2010.

    #fightclub: iPhone vs. BlackBerry

    Fightclub se isprva činio kao super ideja. Predstavljanja učesnika su bila forastična pa su i očekivanja bila veća. Nisam baš potpuno popratio cijeli događaj, što zbog nestabilnosti u potprostoru, što zbog loše postavljenih mikrofona, ali ono što sam vidio i čuo je bilo na razini forumskih prepucavanja. Složio bih se sa zaključkom da po obicaju, iPhone tim svoje argumente temelji na stvaranju buke.

    iPhone tim je imao loše i maglovite argumente. Ne troše mobilni bandwidth jer na svakom čošku je neki Wi-Fi ( iliti kradite bandwidth od ljudi koji ostavljaju nezaštićene mreže ), c00l fora su aplikacije za slušanje radija koje su besplatne ( ali troše bandwith koji nije ), iPhone je teško uništiti ( propustili su to pokazati s vlastitim uređajima)…a služili su se i krivim informacijama (o demografiji BB kupaca, najzeleniji telefon, a Greenpeace je bio protiv njega).

    BB tim je bio dobroćudniji, samozatajniji, ali je naveo više konkretnih argumenata. Propustili su iskoristiti protunapad na temu aplikacija ( za BlackBerry može bilo tko izraditi aplikaciju i ponuditi je za download svim korisnicima, na svojem web poslužitelju, bez da trebaju moliti vrhovno božanstvo za dopuštenje). Propustili su i pitati iPhone korisnike koliko ono plaćaju za ono trenutno syncanje svojih podataka (99$ godišnje).

    Voditelj nije bio na visini zadatka, ovakvi događaji koji imaju geekove (ili one koji naginju na tu stranu) za publiku ne trebaju poznatog i štosnog voditelja već nekoga tko se malo više razumije u problematiku i koji bi znao presjeći prazne riječi i zakuhati raspravu u pravom času.

    Da moram birati, na temelju viđenog na #fightclub-u, odabrao bih BlackBerry pragmatizam nasuprot vjerskoj magli iPhone tima.

    Vlastito iskustvo s jednim i drugim uređajem odvuklo bi me na iPhone stranu, i to najviše zbog toga što mi stvari, u kojima je BlackBerry jači, nisu najvažnije. A i onaj njihov preglednik je stvarno grozan.

    U jedno sam siguran, moj slijedeći mobitel će biti neki Android, mada mi i neki Nokijini uređaji golicaju znatiželju.

    17. 04. 2010.

    Illustrated Primers

    Tablet Computer The iPad was released and sales are sky high, software wise it is terrible but the fact makes me happy anyway. We are getting closer to some of the ideas laid down in 1994 by Neal Stephenson in his book The Diamond Age. Even though the age of nanoscience is only just beginning, there are some fundamental similarities between his Illustrated Primer, today's eBook readers, OLPC and the iPad.

    These are the primers of the early 21st century. Beautiful devices that we read from, learn from and play with. We could consider our laptops as primers, but I can't wait to get my hands on one of those devices. At this point most likely the Sony PRS-600. Even though much different than the iPad it is still my first choice, because of the software limitations but also practicality. I would use a pad mostly for reading anyway, and here the E-Ink has the advantage, regarding contrast and battery life. Multiple new devices, by just about every big player on the market, were already announced. Some of them will run GNU/Linux and in the long run that will probably prove to be the best choice.

    The mock-ups of next generation OLPC, the XO-2 are probably the closest, especially considering their role, to truly serve in education of children. The now classic article, Sic Transit Gloria Laptopi, by Ivan Krstic addresses some problems, and reminds me once more I shouldn't get carried away. There's still a long way to go. Gillian 'gus' Andrews gave an interesting talk on the subject, at "The Last HOPE" conference. The audio is still available: Hacking the Young Lady's Illustrated Primer.

    Site info

    Planet Linux.hr is an aggregation of Linux and Open Source themed blogs written by Croatian people from the whole wide world. Blog entries aggregated on this page are owned by, and represent the opinion of the author.

    Planet Linux.hr je skup blogova sa Linux i open source tematikom koje pisu nasi ljudi u domovini i inozemstvu. Clanci sakupljeni na ovoj stranici su u vlasnistvu i predstavljaju misljenje svojih autora.

    Last time updated: 03. 09. 2010. 10:00

    Aggregated blogs:

    If you want your blog to be aggregated on this planet, contact Senko Rasic.