<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15282480</id><updated>2011-04-22T01:30:34.310+02:00</updated><title type='text'>Senko's Blog</title><subtitle type='html'>A collection of random thoughts.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15282480.post-115222769422719371</id><published>2006-07-07T01:11:00.000+02:00</published><updated>2006-07-07T01:14:54.243+02:00</updated><title type='text'>realloc()</title><content type='html'>&lt;p&gt;
So, one lazy afternoon I've decided to test WordPress. I really liked it, so I
decided to switch over from Blogger. My new blog can be found
&lt;a href="http://blog.senko.net/"&gt;here&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-115222769422719371?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/115222769422719371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=115222769422719371' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115222769422719371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115222769422719371'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/07/realloc.html' title='realloc()'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-115185944596727516</id><published>2006-07-02T18:25:00.000+02:00</published><updated>2006-07-02T18:57:25.980+02:00</updated><title type='text'>GUADEC 2006 Wrap-up</title><content type='html'>&lt;p&gt;
I've just recovered from my trip back home from GUADEC (it took me 23rd hours to get home), so
a blog post is in order, while all the things are fresh in my head.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://raphael.slinckx.net/blog/2006-07-02/guadec-gnome-is-people"&gt;GOME is people&lt;/a&gt;. I met lots of cool, interesting and fun people, got to know them as persons, and can call them
friends, and not just imagining hackergotchi heads when I hear their names :-) That social aspect is definitely the best thing for me about this event. And we had so much fun, whether it was talking about hacking, searching for the &lt;a href="http://www.tigert.com/archives/2006/06/26/ice-cream-revisited/"&gt;best ice-cream in town&lt;/a&gt;,
having a &lt;a href="http://www.tigert.com/archives/2006/06/27/we-just-rock/"&gt;rock concert&lt;/a&gt;
or just partying at the beach.
&lt;/p&gt;
&lt;p&gt;
I've attended several sessions, and I think the hilights have been Kathy Sierra's
&lt;a href="http://headrush.typepad.com/"&gt;Creating Passionate Users&lt;/a&gt; keynote and
&lt;a href="http://tieguy.org/blog/"&gt;Luis'&lt;/a&gt; inspirational talk about the future of
GNOME (hint: &lt;a href="http://tieguy.org/blog/2006/06/29/gnome-is-people/"&gt;GNOME is
people&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
From development point of few, there were many topics revolving around multimedia editing
in Linux (&lt;a href="http://www.diva-project.org/"&gt;Diva&lt;/a&gt;,
&lt;a href="http://pitivi.sourceforge.net/"&gt;Pitivi&lt;/a&gt;,
&lt;a href="http://www.jokosher.org/"&gt;Jokosher&lt;/a&gt;,
&lt;a href="http://guadec.org/node/230"&gt;Elisa&lt;/a&gt; and all things
&lt;a href="http://gstreamer.freedesktop.org/"&gt;GStreamer&lt;/a&gt;),

improving memory and CPU performance, in context of being usable in
&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt; and Nokia 770 (which is owned by all the
hip people, btw), but extending to the desktop also.
&lt;/p&gt;

&lt;p&gt;
I have to catch a bus so I'll cut this post short, with just one negative side of
my trip to GUADEC. And that's VIP mobile/internet provider in Croatia (part of Vodafone).
Do not, ever, under any circumstances, use GPRS roaming from VIP. Besides charging more than
11 eu/mb, they actually require you to pay the bill *immediately* (inside a week), instead
of paying at the end of the month, as usual. It's part of their "customer protection"
program, they say. I fail to see how requiring customers to pay immediately (btw the notice
was sent to house address, and it was obvious that the bill was made by roaming, so the
user is &lt;em&gt;not&lt;/em&gt; at home. wtf??) means protecting them.
&lt;/p&gt;
&lt;p&gt;
Anyways, that problem didn't mar the perfect time I've had at GUADEC, I'm so happy that I
was able to attend. I want to thank &lt;a href="http://collabora.co.uk/"&gt;Collabora&lt;/a&gt; for
sponsoring my trip and stay at GUADEC and thus making it possible to me to share this
wonderful experience. Thanks guys, I hope to see you again soon!
&lt;/p&gt;

&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-115185944596727516?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/115185944596727516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=115185944596727516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115185944596727516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115185944596727516'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/07/guadec-2006-wrap-up.html' title='GUADEC 2006 Wrap-up'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-115104606589094605</id><published>2006-06-23T08:20:00.000+02:00</published><updated>2006-06-23T09:01:43.270+02:00</updated><title type='text'>En route...</title><content type='html'>&lt;p&gt;
... to &lt;a href="http://guadec.org/Guadec2006"&gt;GUADEC&lt;/a&gt;! This is my first time
I'm going to such a conference, and I'm all excited to meet all the wonderful people that make the GNOME community, to hack, learn and have a great time.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.mdk.org.pl/"&gt;MDK&lt;/a&gt; will be there, giving a lightning talk about
&lt;a href="http://www.diva-project.org/"&gt;Diva&lt;/a&gt; (the upcoming 0.0.3 is gonna rock!), and
I hope we'll do some hacking together (after mandatory beers :-).
The &lt;a href="http://collabora.co.uk/"&gt;Collabora&lt;/a&gt; guys will talk about their our vision to
change world into a better place, by improving IM with &lt;a href="http://telepathy.freedesktop.org/"&gt;Telepathy&lt;/a&gt; project. I've been involved with Telepathy project for a few months now, and we're doing some great stuff, and the guys involved are great, and I'm really looking forward to meeting them.
&lt;/p&gt;
&lt;p&gt;These two project I'm primarily
interested in, but the list of people coming, and the scheduled talks, hackatons and other
events are sure sign I'll be in for some sleep deprivation ;-)
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;The wonders of modern technology&lt;/h3&gt;
I'm blogging this from the train. The coupe's got a power outlet so I don't have to drain
the laptop battery, and my GPRS card magically works in roaming, and I'm very pleasently
surprised. I really expected some shoddy train with barely working air conditioning :)
&lt;/p&gt;
&lt;p&gt;Some points to consider:&lt;ul&gt;
&lt;li&gt;GPRS really is a great stuff for mobile net connection&lt;/li&gt;
&lt;li&gt;Thank God I've got roaming! The place where I'll be staying while at GUADEC has WiFi
connection, but I wouldn't last till then :-)&lt;/li&gt;
&lt;li&gt;My home ADSL connection speed really spoiled me&lt;/li&gt;
&lt;li&gt;I'm addicted to Internet ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-115104606589094605?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/115104606589094605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=115104606589094605' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115104606589094605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115104606589094605'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/06/en-route.html' title='En route...'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-115033233968619641</id><published>2006-06-15T02:32:00.000+02:00</published><updated>2006-06-15T02:45:39.710+02:00</updated><title type='text'>In the meanwhile, the underground forces...</title><content type='html'>&lt;p&gt;...continue their expansion and quest for world domination.&lt;/p&gt;

&lt;p align="center"&gt;
  &lt;img alt="" src="http://senko.net/blog/djuri_ubuntu.jpg" /&gt;&lt;br /&gt;
  &lt;em&gt;Davorin got his hands on Ubuntu installs.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
My friend Davorin works at one IT education company, and he's open to the idea
of exposing his students to the world of Linux. He's agreed to hold a short
(up to half an hour) presentation, showing off and explaining the basics of
Linux and free software to the students who want to learn "more" than the 
basics of computer usage (read: Windows, Word, Internet browsing), and giving
away Ubuntu installation (+ live, which is a great feature) discs to the ones
who want to experiment for themselves.
&lt;/p&gt;
&lt;p&gt;
At the same time, the other friend considers offering Ubuntu install discs
to the people buying bare (no OS preinstalled) computers in the computer shop
he works in.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-115033233968619641?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/115033233968619641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=115033233968619641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115033233968619641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115033233968619641'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/06/in-meanwhile-underground-forces.html' title='In the meanwhile, the underground forces...'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-115032586060698836</id><published>2006-06-14T22:11:00.000+02:00</published><updated>2006-06-15T00:57:40.660+02:00</updated><title type='text'>Porođajne muke...</title><content type='html'>&lt;p&gt;
Drago mi je &lt;a href="http://wolfwoodscrowd.info/2006/06/13/rijec-dvije-o-dapperu/"&gt;vidjeti&lt;/a&gt; da i dugogodisnji i napredn(ij)i korisnici računala bacaju oko na hrvatski prijevod, nešto što se obično smatra "&lt;em&gt;uncool&lt;/em&gt;" za korištenje na &lt;em&gt;tech-gadgetima&lt;/em&gt;, pa i računalima.
&lt;/p&gt;

&lt;p&gt;
Stanje hrvatskog prijevoda u Ubuntuu (kao i u ostalim Linux distrama) je daleko od idealnog. Najgora stvar nije nedostatak prijevoda, nego, kako je Stjepan primjetio, vrlo niska kvaliteta pojedinih dijelova prijevoda. Mi smo u nedavnom projektu prevođenja zbog raznih razloga posvetili pažnju *novim* prijevodima (koji su, imho, dosta kvalitetni), no nažalost nismo stigli pronaći i i ispraviti sve gluposti u već postojećima.
&lt;/p&gt;
&lt;p&gt;
Ovo nije pokušaj opravdavanja - svjesni smo da još puno posla treba napraviti, a i siguran sam da postoje ljudi koji su spremni prionuti i pomoći u tom poslu. No da bi cijela stvar imala smisla,
potrebna nam je i (moralna) pomoć onih kojima su ti prijevodi i namjenjeni - dakle, Vas, ljudi!
:-) Kad naiđete na gluposti u prijevodu, nemojte jednostavno proglasiti to Sizifovim poslom,
prebaciti na engleski i nikad se više ne osvrnuti na hr_HR.
&lt;/p&gt;
&lt;p&gt;
Umjesto toga, uputite svoj browser na &lt;a href="http://www.ubuntu-hr.org/pogreske/"&gt;formu za
prijavu pogrešaka pri prijevodu&lt;/a&gt; te nam skrenite pažnju na učinjene propuste, a ako i
odustanete od korištenja hrvatske inačice Linuxa, pratite i dalje s vremena na vrijeme naš rad.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-115032586060698836?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/115032586060698836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=115032586060698836' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115032586060698836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/115032586060698836'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/06/poroajne-muke.html' title='Porođajne muke...'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114919971441660134</id><published>2006-06-01T23:57:00.000+02:00</published><updated>2006-06-02T00:10:16.963+02:00</updated><title type='text'>Izašao Ubuntu 6.06 LTS (Dapper Drake)</title><content type='html'>&lt;p&gt;
Za one koji još nisu čuli, izašao je Dapper Drake, inačica 6.06 &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu
Linux&lt;/a&gt; distribucije. Drake je dostupan u Ubuntu (sa GNOME sučeljem),
Kubuntu (sa KDE sučeljem), Xubuntu (sa Xfce sučeljem), Edubuntu (za
djecu, s naglaskom na edukaciju) i Server (pogodno za server) inačicama.
Dapper je LTS (&lt;em&gt;Long Term Support&lt;/em&gt;) verzija, odnosno bit će podržana u
slijedećih 5 godina.
&lt;/p&gt;&lt;p&gt;
Dapper je dostupan i na &lt;a href="http://www.ubuntu-hr.org/index.php?option=com_content&amp;task=view&amp;id=41&amp;Itemid=1"&gt;hrvatskom jeziku&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Instalacijski CD je istovremeno i live, pa je sustav moguće isprobati i
prije same instalacije, a &lt;em&gt;image&lt;/em&gt; CD-a možete skinuti
&lt;a href="http://www.ubuntu.com/download/"&gt;ovdje&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114919971441660134?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114919971441660134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114919971441660134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114919971441660134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114919971441660134'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/06/izaao-ubuntu-606-lts-dapper-drake.html' title='Izašao Ubuntu 6.06 LTS (Dapper Drake)'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114851991033232197</id><published>2006-05-25T03:07:00.000+02:00</published><updated>2006-05-25T03:18:30.346+02:00</updated><title type='text'>Vatrena Lisica</title><content type='html'>&lt;p&gt;
&lt;em&gt;...ali, to nije sve! ;-) Uz lokalizirani Ubuntu dobit ćete i ovaj
set noževa!...&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Nije baš set noževa, ali mislim da imam nešto bolje za vas. Kao što sam naveo
u prošlom postu, u okviru Ubuntu prevođenja, preveli smo i dio Firefox web
preglednika.
&lt;/p&gt;
&lt;p&gt;Samo dio, iz dva razloga: prvo, Firefox, kao i cijela Mozilla,
koristi svoj poseban sustav za internacionalizaciju, a ostatak Linux svijeta
koristi gettext - &lt;a href="http://launchpad.net/"&gt;Launchpad/Rosetta&lt;/a&gt; rade
sa gettext prijevodima, dakle u okviru Ubuntua nije bilo moguće prevesti Firefox.
Drugi razlog je nedostatak vremena i (ljudskih) resursa - naprosto nije bilo
vremena za prevesti ga cijelog pa smo mogli birati, prevesti najbitnije/vidljive
dijelove, ili ne prevesti ništa i tako jedan od najbitnijih programa na desktopu
ostaviti potpuno neprevedenim. Odlučili smo se za manje od dva zla.
&lt;/p&gt;
&lt;p&gt;
E sad dolazimo do lijepog dijela. Firefox se koristi na raznim platformama, ne
samo u Ubuntu Linuxu. Bilo bi šteta ne omogućiti svim korisnicima
korištenje na materinjem jeziku. Stoga vam predstavljam
&lt;a href="http://www.ubuntu-hr.org/~senko/firefox-1.5-hr.xpi"&gt;Vatrenu Lisicu 1.5&lt;/a&gt;.
Skinite datoteku na disk, i s diska je učitajte i instalirajte u Firefoxu.
Potom instalirajte
&lt;a href="https://addons.mozilla.org/firefox/356/"&gt;Locale Switcher&lt;/a&gt; ekstenziju,
odaberite hrvatski jezik, i uživajte!
&lt;/p&gt;
&lt;p&gt;
Iako bi prijevod trebao dobro funkcionirati svugdje, nije mnogo testiran na
ne-Linux platformama, stoga vas molim da eventualne pogreške (ako su baš jako
grozne) prijavite u komentarima ovog posta.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114851991033232197?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114851991033232197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114851991033232197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114851991033232197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114851991033232197'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/05/vatrena-lisica.html' title='Vatrena Lisica'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114851916034372159</id><published>2006-05-25T01:19:00.000+02:00</published><updated>2006-05-25T03:06:00.396+02:00</updated><title type='text'>Patak priča hrvatski!</title><content type='html'>&lt;p&gt;&lt;em&gt;English-speaking readers: this is a blog post related to our l10n efforts in Ubuntu. It'd be weird to write about'em in English :-)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
Pred 20tak dana, &lt;a href="http://ivoks.blogspot.com/"&gt;Ante&lt;/a&gt; i ja smo razgovarali
o relativno žalosnoj slici Ubuntu (ali i općenito Linux) lokalizacije, te došli
na ideju za jedan pomalo "očajnički" projekt. S 3 tjedna do krajnjeg roka za
izradu prijevoda, odlučili smo organizirati cyber-maraton, masovno prevođenje
Ubuntu Dapper programa koje bi trajalo 2 tjedna. Nadali smo se prevest 20tak programa, u najboljem slučaju do nekih 10.000 stringova...
&lt;/p&gt;
Tri tjedna kasnije, prevedeno je preko 40 programa i komponenti, ukupno preko 18.000 stringova! Prevedena je i instalacijska procedura, Ubuntu vodič (koji će se vjerojatno moći kupiti i u papirnatom izdanju), dijelovi Firefoxa, a neustrašivi
Ante priredio je i podršku za provjeru pravopisa i lomljenje teksta u hrvatskom
jeziku, koja je sada dostupna u standardnoj instalaciji.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Projekt je bio fenomenalno uspješan, premašivši sva naša očekivanja!&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Da ne ponavljam stvari napisane drugdje, sve informacije možete dobiti
&lt;a href="http://www.ubuntu-hr.org/index.php?option=com_content&amp;task=view&amp;id=41&amp;Itemid=1"&gt;ovdje&lt;/a&gt;.
Još jednom želim zahvaliti svim sudionicima projekta, koji su napravili
odličan posao. Svaka čast, ekipa!
&lt;/p&gt;
&lt;p&gt;
Rezultati PPP-a biti će dostupni svim korisnicima po izlasku finalne
verzije Dapper-a, 1.6.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.linux.hr/modules/popnupblog/index.php?param=3-20060523212626"&gt;Rado&lt;/a&gt; 
priča o tome kako je HULK ostario, kako je potrebna "mlada krv" koja bi gurala
inicijative i ideje. Mislim da je naš projekt pokazao kako "mlada krv" postoji
i spremna je napraviti puno korisnih stvar - samo je treba potaknuti i organizirati.
&lt;/p&gt;
&lt;p&gt;
Ekipa koja je radila na ovom projektu nije to radila iz slave ili želje za bogatstvom, već zato što su
željeli pridonijeti zajednici (a možda i zbog svega pomalo! :-). Pokazalo se da
ima sposobnih i produktivni ljudi, koji žele uložiti svoje vrijeme i trud ako
se pokaže da će time napraviti nešto (englezi bi rekli, "&lt;em&gt;make a difference&lt;/em&gt;").
&lt;/p&gt;

&lt;p&gt;
S obzirom na uspjeh projekta, za vjerovati je da će se i u skorijoj budućnosti
organizirati slične akcije - ako ništa drugo, &lt;a href="http://www.ubuntu-hr.org/"&gt;ubuntu-hr&lt;/a&gt; tim na ovom maratonu stekao je
dosta iskustva u tome što "ide" a što "ne" i koji su praktični problemi u
lokalizaciji. Ta iskustva nastojat ćemo iskoristiti i u našem daljnjem radu,
te se nadamo ovakvim uspjesima i u budućnosti!
&lt;/p&gt;

&lt;p&gt;
I za kraj, da se osvrnem na cijelu priču s komercijalne strane. Moja tvrtka
&lt;a href="http://www.rei.hr/"&gt;Rei&lt;/a&gt; jedan je od sponzora projekta, a s obzirom
da sam i sam sudjelovao u projektu (u svojstvu revizora), može se reći da
je tvrtka potpomogla i novčanim i ljudskim resursima :-) Kako smo orjentirani
pretežno na Linux/Unix tehnologije, vrlo nam je zanimljiva perspektiva
stvaranja Linux &lt;em&gt;desktop&lt;/em&gt; tržišta u Hrvatskoj. Lokalizacija Linuxa je bitan
činitelj u dovođenju Linuxa u domaća &lt;em&gt;desktop/office/home&lt;/em&gt; okruženja,
što je jedan od razloga zašto smo i kao tvrtka pomogli ovaj projekt.
Vjerujem da spregom F/LOSS zajednice i komercijalnih igrača
dobivaju i F/LOSS entuzijasti i developeri, a nađe se tu nečeg i za nas
kapitaliste :-) U konačnici, najveći dobitnik će upravo biti krajnji korisnici.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114851916034372159?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114851916034372159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114851916034372159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114851916034372159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114851916034372159'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/05/patak-pria-hrvatski.html' title='Patak priča hrvatski!'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114659728415837155</id><published>2006-05-02T20:56:00.000+02:00</published><updated>2006-05-02T21:38:34.020+02:00</updated><title type='text'>An end of an era, and a new beginning</title><content type='html'>&lt;p&gt;&lt;em&gt;
Caveat emptor: this is one of those "what I ate today" blog posts...
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
I've got some big changes in my life recently. Changes I've been totally preocupied
with, and now it seems like the transition is gone, and a good moment to reflect
back.
&lt;/p&gt;
&lt;p&gt;
In March, I finally finished my university studies at &lt;a href="http://www.fer.hr/"&gt;FER&lt;/a&gt; and got a degree. The degree
is &lt;em&gt;diplomirani inženjer računarstva&lt;/em&gt; (diploma engineer in computer science, which is roughly equivalent to western M.Sc degree). The studies have been a long
and bumpy ride, with 2 years off to pursue non-academic goals, but overall it was
a very positive experience in my life.
&lt;/p&gt;
I've also made a nice wrap-up of the studies by choosing a somewhat difficult and definitely unique diploma project - my own operating systems (my friends can attest
that sometimes I shoot very hight :-) I dig microkernel systems and it's been
my long desire to tackle with one, so the diploma thesis project seemed a right
time to do it. I doubt I'll be in position to do it in some commercial setup. Anyways, I've setup a small component-based OS on top of &lt;a href="http://www.l4ka.org/"&gt;L4Ka::Pistachio&lt;/a&gt; microkernel, and I'm planning to release the source code (under the MIT/X11 license) when I get the time - in the meantime, interested Croatian readers can take a look at my &lt;a href="http://www.senko.net/vault/diplomski.pdf"&gt;diploma thesis&lt;/a&gt; [pdf, 2MB].
&lt;/p&gt;
&lt;p&gt;
For several months before the graduation, I've nurtured the idea of starting my own business. After weighting all the pros and the cons, I've started the paperwork
flow (which here in Croatia there's quite some) to do it. So here I am, a proud
owner of &lt;a href="http://www.rei.hr/"&gt;Rei&lt;/a&gt;, registered for various IT services. I plan to focus on software development for the web and on Linux and other open source platforms, and doing Internet multimedia stuff (streaming), again hopefully on open source.
&lt;/p&gt;
&lt;p&gt;
Today I've finally set up the webpage for the company, which wraps about everything
needed for start. I'm already head over heels in stuff to do, and I'm looking
forward to the future...:-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114659728415837155?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114659728415837155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114659728415837155' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114659728415837155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114659728415837155'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/05/end-of-era-and-new-beginning.html' title='An end of an era, and a new beginning'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114527756170641178</id><published>2006-04-17T14:24:00.000+02:00</published><updated>2006-04-17T14:40:25.493+02:00</updated><title type='text'>Planet facelifting</title><content type='html'>&lt;p&gt;
Evo napokon od mene jedan post na hrvatskom ;-)
&lt;/p&gt;
&lt;p&gt;
Kao što ste vjerojatno primjetili, već neko vrijeme otvoren je
&lt;a href="http://planet.linux.hr/"&gt;planet.linux.hr&lt;/a&gt;,
portal koji agregira blogove naših ljudi vezane uz Linux i open-source tematiku.
Planet je otvoren suradnjom sa dobrim ljudima iz &lt;a href="http://www.linux.hr/"&gt;HULK&lt;/a&gt;-a, a moja malenkost uzela je na sebe dužnost
održavanja istog.
&lt;/p&gt;
&lt;p&gt;
Kako originalni izgled planeta nije bio bogzna što, u pomoć je priskočio
&lt;a href="mailto:josiplisec@gmail.com"&gt;Josip Lisec&lt;/a&gt;, koji je složio novi i puno ljepši izgled stranica. Njegov uradak
trenutno možete vidjeti na &lt;a href="http://planet.linux.hr/beta/"&gt;beta verziji
stranica&lt;/a&gt; (svakako pogledati i komentirati! :-), a nakon nekoliko dana ako
ne bude problema pojavit će se i na glavnoj stranici planeta. Druge Josipove
radove možete pogledati na njegovoj stranici &lt;a href="http://omicron.pwsp.net/"&gt;ovdje&lt;/a&gt;. Hvala Josipu!
&lt;/p&gt;
&lt;p&gt;
Novi dizajn uveo je i novi fičr, prikazivanje ikonica, odnosno
&lt;a href="http://en.wikipedia.org/wiki/Hackergotchi"&gt;hackergotchija&lt;/a&gt; postera,
pa ovom prilikom molim ekipu agregiranu na planetu da mi (ako žele) pošalju
svoje slikice/hackergotchije, a sramežljiviji će biti prikazani generičkom
ikonicom predstavljenom na beta sajtu.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114527756170641178?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114527756170641178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114527756170641178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114527756170641178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114527756170641178'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/04/planet-facelifting_17.html' title='Planet facelifting'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114382498792922727</id><published>2006-03-31T18:57:00.000+02:00</published><updated>2006-03-31T19:09:47.966+02:00</updated><title type='text'>Diva 0.0.1 is out!</title><content type='html'>&lt;p&gt;Finally, after many months of hard work, we've released a
&lt;a href="http://www.mdk.org.pl/articles/2006/03/27/diva-0-0-1"&gt;first public
version&lt;/a&gt; of the &lt;a href="http://diva-project.org/"&gt;Diva&lt;/a&gt;, a new
video-editing software app for Linux.&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.senko.net/blog/diva001_5.png"&gt;
&lt;/p&gt;

&lt;p&gt;Diva is written in &lt;a href="http://www.mono-project.com/"&gt;C#&lt;/a&gt; and using
the &lt;a href="http://gstreamer.freedesktop.org/"&gt;GStreamer&lt;/a&gt; framework.
Due to the GStreamer constraints, the first release supports only DV, WAV and
image sources, and export to Ogg Theora, and probably crashes all the time.
Nevertheless, check it out, and tell us what you think! And don't be shy
to lay at our feet any and all problems and bugs you experience with it, by
creating a bug ticket on the project pages.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114382498792922727?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114382498792922727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114382498792922727' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114382498792922727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114382498792922727'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/03/diva-001-is-out.html' title='Diva 0.0.1 is out!'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-114158015779101206</id><published>2006-03-05T17:59:00.000+01:00</published><updated>2006-03-05T18:35:57.846+01:00</updated><title type='text'>And now for something completely different</title><content type='html'>&lt;p&gt;...from the last post. That was a look on the past - this time I'm looking
ahead. I'm talking about Xgl/compiz, of course, and the newly arrived
über-eye-candy for the Linux desktop.&lt;/p&gt;
&lt;p&gt;In the anticipation of the new Dapper goodness, I've upgraded to the beta
of the new Ubuntu version a few days ago. Since both Xgl and Compiz are in
Dapper's universe, I thought I'd give it a try. I have nVidia graphics card
so getting Gl/Composite to run was no problem. I've had those in breezy, now I
just had to reinstall nvidia-settings and the other related packages.&lt;/p&gt;
&lt;p&gt;
I've set up Xgl/Compiz according to &lt;a href="http://mr.fudgie.org/index.php/2006/02/16/tiny-ubuntu-dapper-nvidia-xgl-howto/"&gt;this howto&lt;/a&gt;. All went well and I enjoyed the newly found goodness, untill the next
time I restarted my machine. I repeated the two commands but compiz started being
evil to me - all the newly opened windows were located at top-left corner of the
screen, and I've been unable to drag the windows around holding their title-bar.
Strange, very strange. Trying out various voodoo recipies, I've managed to disable
compiz' gconf plugin, and everythign worked well. There's something fishy in there
... anyways, the lines I use are:
&lt;/p&gt;
&lt;pre&gt;
    compiz --replace decoration wobbly fade minimize       cube rotate zoom scale move resize place switcher &amp;
    gnome-window-decorator &amp;
&lt;/pre&gt;

&lt;p&gt;
The next annoying thing I faced was keyboard problem under Xgl. For some reason
Xgl doesn't treat keyboard the same way as X does - it does seem to load the proper
xkb files, but the keyboard was set to US instead of HR anyways. Some googling
around revealed a &lt;a href="http://www.blaue0.net/p-tips-on-running-xgl/"&gt;hack&lt;/a&gt; which fixed that.&lt;/p&gt;
&lt;pre&gt;
    setxkbmap -model pc105 -layout hr -variant basic
&lt;/pre&gt;
&lt;p&gt;
The other keyboard-related problem is wrong mapping of Shift-Backspace keypress,
which led Xgl to crash (Zap) each and every time, which was *very* annoying.
Thankfully, the lazyweb provided the solution to that also (I've lost the original
link):&lt;/p&gt;
&lt;pre&gt;
    xmodmap -e "keycode 22 = BackSpace"
&lt;/pre&gt;
&lt;p&gt;
Now everything works perfectly and I'm a happy new Xgl/Compiz user! I've made
just one more tweak, added a button launcher to the GNOME panel for quick access
to Scale (ex. Expose :-). I'm using the &lt;a href="http://pag.csail.mit.edu/~adonovan/hacks/xsendkey.html"&gt;xsendkey&lt;/a&gt; utility
to emit F12 keypress to the root window:&lt;/p&gt;
&lt;pre&gt;
    xsendkey -window root F12
&lt;/pre&gt;
&lt;p&gt;I've put the launcher for this utility 
to the top-right corner of the screen, so it's very easy to locate using the
mouse, and I find it easier to use than moving my hands to hit F12 all the time.
&lt;/p&gt;
&lt;p&gt;Here's the obligatory screenshot:&lt;/p&gt;
&lt;p align="center"&gt;
  &lt;img src="http://www.senko.net/blog/xgl.jpg"/&gt;
&lt;/p&gt;
&lt;p&gt;To really see the duo in action, you should watch this &lt;a href="http://www.freedesktop.org/~davidr/xgl-demo1.xvid.av"&gt;demo&lt;/a&gt;. It's
big (~60MB), but it's worth it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-114158015779101206?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/114158015779101206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=114158015779101206' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114158015779101206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/114158015779101206'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/03/and-now-for-something-completely.html' title='And now for something completely different'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113908834352401890</id><published>2006-02-04T21:52:00.000+01:00</published><updated>2006-02-04T22:33:49.413+01:00</updated><title type='text'>A lil' bit of retro</title><content type='html'>&lt;p&gt;
It's been a while since I've last posted. I've been quite busy lately, finishing my grade school, so I haven't really had time (or the will) to write here. I've had a few ideas for the articles, but I didn't cared enough to sit down and research them, and I didn't want to post just another rant, so that went to &lt;code&gt;/dev/null&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;
The today's theme isn't rocket science, either. Today I've read
&lt;a href="http://blog.rot13.org/index.cgi/id_62"&gt;this article&lt;/a&gt;, exposing a cool
xscreensaver hack. That reminded me of countless hours I've spent, first in front
of a Commmodore 64 (my first computer), and years later, in front of the DEC
and IBM terminals at &lt;a href="http://www.srce.hr/"&gt;University Computing Centre (SRCE)&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
While hanging there (I've met some great friends there, we used to hang around
there and socialize even if we didn't use the terms at all), I've written a small
game, a clone of Microsofts' Nibbles, for use on the DEC VT. It was one of my
first C programs, and I believe the first one using the ncurses library. It shows
if you look at the &lt;a href="http://software.senko.net/pub/attic/vtnibbles-1.0.tar.gz"&gt;source&lt;/a&gt; ;-)
&lt;/p&gt;
&lt;p&gt;Seeing the terminal emulation hack, I decided I'd run my game under that.
With some minor tweaks i got it to run under 40x24 with not-so-good terminal
capabilities (cursor droppings and reverse video problems with ncurses). So
without further ado:
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;
  &lt;i&gt;Senko Software Proudly Presents&lt;/i&gt;
  &lt;img src="http://senko.net/blog/a2nib1.jpg"&gt;
&lt;/center&gt;
An obligatory "intro", showing the year of creation, 1997. This is the oldest
program I've kept sources to, and it brings back nostalgia. And here's the
in-game shot:
&lt;center&gt;
  &lt;img src="http://senko.net/blog/a2nib2.jpg"&gt;
&lt;/center&gt;
&lt;p&gt;
Ah, the good ol' times when men were real men, women were real women, and small
ugly text-mode terminals were &lt;i&gt;real&lt;/i&gt; small ugly text-mode terminals...
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt; The hacked source, for usage with AppleII xscreensaver hack,
can be found &lt;a href="http://senko.net/blog/a2nib.c"&gt;here&lt;/a&gt;.Compile with:
&lt;code&gt;gcc -lncurses -o nibbles nibbles.c&lt;/code&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113908834352401890?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113908834352401890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113908834352401890' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113908834352401890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113908834352401890'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/02/lil-bit-of-retro.html' title='A lil&apos; bit of retro'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113643287725257068</id><published>2006-01-05T04:21:00.000+01:00</published><updated>2006-01-05T04:47:57.266+01:00</updated><title type='text'>There Be Dragons</title><content type='html'>&lt;p&gt;
It's 4 AM, and the night is still and quiet. I'm sitting in front of my computer,
lit by the pale light of the LCD screen, and I'm losing my mind.
&lt;/p&gt;
&lt;p&gt;
My life for the past several days (excluding the New Year's) has been no different
than tonight. Thinking, coding, debugging, debugging, debugging, ...
&lt;/p&gt;
&lt;p&gt;
I'm working on an embedded environment project for my diploma thesis. I have infinite
power over the computer, my software need not obey anyone's laws. Except my own,
which I have to keep in my head at all times. Can't write them down, they're
changing too swiftly. It's hard, and it's fun. The most challenging part is that I
have to be aware of the entire picture, down to the every detail. From the overall
design, down to the stack allocation and word width issues.
&lt;/p&gt;
&lt;p&gt;
And it gets ugly. I'm using some 3rd party components (like libc), which aren't
exactly bug-free. Just a few minutes ago, after a few hours of poking around in my code (debugger? what
debugger? I'm lucky I have &lt;code&gt;printf()&lt;/code&gt; :-) I've traced the error to
&lt;code&gt;strdup()&lt;/code&gt; &lt;i&gt;and&lt;/i&gt; &lt;code&gt;malloc()&lt;/code&gt; implementations. Great..
So, frustrated and tired, I just wiped out the entire malloc code and created
my own, which leakes everything (no &lt;code&gt;free()&lt;/code&gt;) but at least correctly
produces usable blocks of memory. After I did this, I tried to remember what I
was working on when the problem occurred...hm, who knows. I'm tired and I don't
want to play any more...
&lt;/p&gt;
&lt;p&gt;
It's hard, but it's fun. There's no hacking like kernel hacking.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img align="center" src="http://www.senko.net/blog/red_dragon.jpg"/&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113643287725257068?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113643287725257068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113643287725257068' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113643287725257068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113643287725257068'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2006/01/there-be-dragons.html' title='There Be Dragons'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113507812283699592</id><published>2005-12-20T12:05:00.000+01:00</published><updated>2005-12-20T12:32:22.990+01:00</updated><title type='text'>Xroach for the new millenium</title><content type='html'>&lt;p&gt;
Remember &lt;a href="http://linux.maruhn.com/sec/xroach.html"&gt;Xroach&lt;/a&gt;? It was
a "cute" screen toy with pests rushing around in the screen, hiding under the
windows, and you had to click on them to squash them.
&lt;/p&gt;
&lt;p&gt;
Well, here it is, reloaded! The new version features new flashy vector graphics,
it's &lt;a href="http://www.freedesktop.org/"&gt;freedesktop&lt;/a&gt;
&lt;a href="http://www.freedesktop.org/Software/dbus"&gt;standards&lt;/a&gt;
compliant, and has been released in secrecy, under the code name
&lt;code&gt;libnotify-0.3.0/tests/test-xy-stress&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.senko.net/blog/DbusRoach.jpg"&gt;
&lt;img align=center src="http://www.senko.net/blog/thumb-DbusRoach.jpg"/&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Note that it isn't shown in its full glory, because my
&lt;a href="http://cairographics.org/"&gt;Cairo&lt;/a&gt; install is somehow screwed; there
should be a nice sky-blue gradient there, for your viewing pleasure, while you're
squashing the monsters!
&lt;/p&gt;
&lt;p&gt;
Yeah, I'm looking at the fun side of &lt;a href="http://www.martianrock.com/"&gt;some&lt;/a&gt;
&lt;a href="http://www.chipx86.com/blog/"&gt;people&lt;/a&gt;'w hard
&lt;a href="http://www.galago-project.org/specs/notification/index.php"&gt;work&lt;/a&gt;,
but, seriously, it's cool. Go &lt;a href="http://www.martianrock.com/?p=175"&gt;try it out&lt;/a&gt; and play with it (&lt;i&gt;not squashing
dialogs - i mean download, compile, test, use, report bugs, squash some in
the progress if you really want the squashing bit ..&lt;/i&gt;)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113507812283699592?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113507812283699592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113507812283699592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113507812283699592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113507812283699592'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/12/xroach-for-new-millenium.html' title='Xroach for the new millenium'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113504165315785634</id><published>2005-12-20T02:11:00.000+01:00</published><updated>2005-12-20T02:20:53.183+01:00</updated><title type='text'>Warheliing</title><content type='html'>&lt;a href="http://kost.com.hr/blog/index.php?title=warflying_warstorming_warrcing_warheliin&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1"&gt;This&lt;/a&gt; is cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113504165315785634?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113504165315785634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113504165315785634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113504165315785634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113504165315785634'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/12/warheliing.html' title='Warheliing'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113457672311081832</id><published>2005-12-14T14:54:00.000+01:00</published><updated>2005-12-14T17:29:56.566+01:00</updated><title type='text'>GNOME vs KDE - the history</title><content type='html'>&lt;p&gt;
With
&lt;a href="http://mail.gnome.org/archives/usability/2005-December/msg00021.html"&gt;all&lt;/a&gt;
&lt;a href="http://mail.gnome.org/archives/usability/2005-December/msg00022.html"&gt;the&lt;/a&gt;
&lt;a href="http://mail.gnome.org/archives/usability/2005-December/msg00024.html"&gt;fuss&lt;/a&gt;
surrounding recent Linus' rant about GNOME, a bunch of "KDE rulez, GNOME is for
idiots" (and vice-versa) arguments sprang again. Personally, I'm a satisfied GNOME
user, but I also understand why some of my friends choose KDE, and why they like it.
We have different preferences. This is good. Choice is good.&lt;/p&gt;
&lt;p&gt;
So this post isn't about that: it's about the history. The flamewars reminded me of my first contact with Linux GUI environments. 'twas in the time of fvwm1, xterms, when men were real men, women were real women, and small furry .. err, when NCSA Mosaic was still usable. Then, everyone agreed GUI on Linux sucked - bigtime. Smart people began 
working on a &lt;a href="http://www.enlightenment.org/"&gt;solution&lt;/a&gt;, sometimes coming to an extreme.&lt;/p&gt;
&lt;p&gt;
Sometime after, I heard about a cool new project, which aimed to be a free alternative to &lt;a href="http://www.opengroup.org/cde/"&gt;CDE&lt;/a&gt;. For a lack of
a better name, and in spirit of CDE naming, it was named &lt;a href="http://www.hakubi.us/kdeannounce.html"&gt;Kool Desktop Environment&lt;/a&gt; (they couldn't be Cool Desktop Environment, for obvious reasons :). I was excited to see
this project (I learnt about it at the time of the first release, I believe), and
if I knew more about C/C++/Linux programming I'd probably try to get involved...
but I did not, I stayed in the CLI. 
&lt;/p&gt;
&lt;p&gt;
As for GNOME, I haven't noticed it until it was already a popular environment.
I've used Linux oblivious to any GUI progress, until I replaced my old 15" CRT
with an LCD monitor a few years ago - the text mode sucked, so I switched to X.
I looked at what KDE and GNOME looked (&amp; felt) at the time, decided I like GNOME
better, and I still haven't changed my mind.
&lt;/p&gt;
&lt;p&gt;
Anyways, enough with the nostalgia. I've googled a bit, and came up with several
screenshots of early GNOME (from &lt;a href="http://xwinman.org/gnome.php"&gt;here&lt;/a&gt;,
the official &lt;a href="http://www.gnome.org/"&gt;GNOME site&lt;/a&gt;, O'Reilly and Wikipedia)
and KDE (from the &lt;a href="http://www.kde.org/screenshots/"&gt;screenshots page&lt;/a&gt;
on the official KDE web):
&lt;/p&gt;
&lt;p&gt;
KDE had a head start in 1996. This dates from 1998, I believe before the first release. Compare with its &lt;a href="http://shots.osdir.com/slideshows/slideshow.php?release=278&amp;slide=48"&gt;model&lt;/a&gt;.
&lt;a href="http://www.senko.net/blog/gvk/orig/1998_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/1998_kde.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
A bit after KDE 1.1 release, GNOME shows off its 1.0, in 1999. KDE 1.1 looks
polished here (already better than the original CDE, IMHO):
&lt;a href="http://www.senko.net/blog/gvk/orig/1999_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/1999_kde.jpg"&gt;
&lt;/a&gt;
&lt;a href="http://www.senko.net/blog/gvk/orig/1999_gnome.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/1999_gnome.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In 2000, KDE 2 adds more applications and features and shiny stuff. GNOME 1.2
improves a lot, but is clearly a KDE lookalike:
&lt;a href="http://www.senko.net/blog/gvk/orig/2000_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2000_kde.jpg"&gt;
&lt;/a&gt;
&lt;a href="http://www.senko.net/blog/gvk/orig/2000_gnome.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2000_gnome.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
2002 brings improvements in toolkits, KDE 3 looks more shiny &amp; polished than
ever, with lots of applications. GNOME upgrades to GTK+ 2 and gets more apps:
&lt;a href="http://www.senko.net/blog/gvk/orig/2002_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2002_kde.jpg"&gt;
&lt;/a&gt;
&lt;a href="http://www.senko.net/blog/gvk/orig/2002_gnome.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2002_gnome.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In 2003 the paths diverge. KDE 3.1 and GNOME 2.4 have different visions and
different goals, and that shows. The default icon teme as we know it today
is set around this time (at least the screenshots would suggest that):
&lt;a href="http://www.senko.net/blog/gvk/orig/2003_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2003_kde.jpg"&gt;
&lt;/a&gt;
&lt;a href="http://www.senko.net/blog/gvk/orig/2003_gnome.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2003_gnome.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The present: KDE 3.5 with the "Conquer your Desktop" slogan, and GNOME 2.12
with the goal "Just Works[tm]". Both desktops are very mature, a lot of hard
work has gone into them, and both are pleasure to use - just, to different
user bases:
&lt;a href="http://www.senko.net/blog/gvk/orig/2005_kde.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2005_kde.jpg"&gt;
&lt;/a&gt;
&lt;a href="http://www.senko.net/blog/gvk/orig/2005_gnome.jpg"&gt;
&lt;img align="center" src="http://www.senko.net/blog/gvk/2005_gnome.jpg"&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If you're still reading this, congratulations! As a small easter egg, I present
you with a proof of how great open source community is: there's
a &lt;a href="http://lists.osdl.org/pipermail/desktop_architects/2005-December/000502.html"&gt;scratch
for every itch&lt;/a&gt; ;-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113457672311081832?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113457672311081832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113457672311081832' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113457672311081832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113457672311081832'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/12/gnome-vs-kde-history.html' title='GNOME vs KDE - the history'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113409219142896889</id><published>2005-12-09T02:21:00.000+01:00</published><updated>2005-12-10T23:25:44.043+01:00</updated><title type='text'>I'm so 2.0</title><content type='html'>&lt;p&gt;
I'm talking about &lt;a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html"&gt;Web 2.0&lt;/a&gt;, of course. The new buzzword. The cool thing of the year. And I'm in.
&lt;/p&gt;
&lt;p&gt;
How did I came to this? It began with small steps: First I switched to &lt;a href="http://gmail.google.com/"&gt;GMail&lt;/a&gt; because it was &lt;i&gt;way&lt;/i&gt; cooler than any desktop mail reader, and it was accessible from anywhere. Much later, I started writing this blog..
&lt;/p&gt;
&lt;p&gt;
..and finally today I switched &lt;a href="http://www.senko.net/"&gt;web page&lt;/a&gt; from
ol' PHP scripts to a wiki. And not just any wiki, I'm using &lt;a href="http://www.tiddlywiki.com/"&gt;TiddlyWiki&lt;/a&gt;. It's an amazing piece of software,
an entire Wiki in just one HTML page. Awesome (and terrifying, if you happen
to look at the source :)
&lt;/p&gt;
&lt;p&gt;
And just to show how serious I am, I also switched my &lt;a href="http://www.flickr.com/photos/88803584@N00/"&gt;personal photo gallery&lt;/a&gt;
to &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt;, and I'm tagging this post for
&lt;a href="http://technorati.com/"&gt;Technorati&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Brave new world...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;PS.&lt;/b&gt; Oh, just to assure you I'm not going insane - no, I would &lt;i&gt;not&lt;/i&gt;
like a web-based office suite :-)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; In a surprising twist of destiny, I saw how my blog looks like
under IE, and decided to do something about it. I'm lazy, so I picked one of
Blogger templates. I even like this new look better.
&lt;/p&gt;
&lt;p style="font-size: 80%;"&gt;
Tags: &lt;a href="http://technorati.com/tag/Web2.0" rel="tag"&gt;Web2.0&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113409219142896889?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113409219142896889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113409219142896889' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113409219142896889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113409219142896889'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/12/im-so-20.html' title='I&apos;m so 2.0'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113351004222697332</id><published>2005-12-02T08:49:00.000+01:00</published><updated>2005-12-02T08:54:19.710+01:00</updated><title type='text'>Ubuntu is ...</title><content type='html'>&lt;p&gt;... an African word meaning "I have better things to do with my life
than configuring &lt;a href="http://www.slackware.com/"&gt;Slackware&lt;/a&gt; all day".&lt;/p&gt;
&lt;p&gt;Or &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt;, for that matter.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;This isn't a flame bait; I've been a Slacker for many years, and I
have much respect for those two distroes. I just subscribe to the
&lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; way.&lt;/i&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113351004222697332?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113351004222697332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113351004222697332' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113351004222697332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113351004222697332'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/12/ubuntu-is.html' title='Ubuntu is ...'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113318231879090289</id><published>2005-11-28T13:34:00.000+01:00</published><updated>2005-11-28T13:56:11.033+01:00</updated><title type='text'>Tell me what you listen to ..</title><content type='html'>&lt;p&gt;
.. and I'll give you more of that!
&lt;/p&gt;
&lt;p&gt;
This is what &lt;a href="http://www.pandora.com/"&gt;Pandora&lt;/a&gt;
project (a child of Music Genome Projects) seems to do. You
tell them the name of one song or artist, they search their
database and create a radio station that plays that kind
of music. You can fine-tune the selection ("I like it" /
"I don't like it"), and see &lt;i&gt;why&lt;/i&gt; the specific song is
playing.
&lt;/p&gt;
&lt;p&gt;
Totally cool!
&lt;/p&gt;
&lt;center&gt;
&lt;img src="http://www.senko.net/blog/Pandora.png"/&gt;
&lt;/center&gt;

&lt;p&gt;
They do this by having a huge database of songs with a lot
of attributes which describe them, and I don't mean just
artist / genre info, there's information about the vocals,
the rhythm, the sounds, etc, etc ... or so they say. I guess
the search is just an attribute matching.
&lt;/p&gt;
&lt;p&gt;
Too bad this isn't more open. Currently they're using Flash.
Dear Santa: This year I'd like an open web service provided
by Pandora for searching for similar songs.
&lt;/p&gt;
&lt;h3&gt;A long tradition...&lt;/h3&gt;
&lt;p&gt;
In other news, I've recently found out that
&lt;a href="http://ubuntu.com/"&gt;Ubuntu distribution&lt;/a&gt; has
a long tradition:
&lt;pre&gt;
&amp;lt;onkarshinde&amp;gt; reter: Which Ubuntu? 5.04 or 5.10?
&amp;lt;reter&amp;gt; 5.94
&lt;/pre&gt;
That's eleven years! :-)
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Of course, only after I blogged this, came
the realization that the fraction represents the month, not the
year. So, that's Ubuntu from Oct 2012. Hey, a time-traveler! I
must ask him a bit about lotterry ;-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113318231879090289?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113318231879090289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113318231879090289' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113318231879090289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113318231879090289'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/11/tell-me-what-you-listen-to.html' title='Tell me what you listen to ..'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113229307932374029</id><published>2005-11-18T06:34:00.000+01:00</published><updated>2005-11-18T06:51:19.340+01:00</updated><title type='text'>The Missing Piece</title><content type='html'>&lt;p&gt;
I've always felt that, no matter how good the GNOME desktop became, other
systems were more productive and suited for regular users, always one step ahead.
What was missing? The answer was ever elusive, until now!
&lt;/p&gt;
&lt;p&gt;
Tonight, I've finally realized what is the missing piece, the "killer tool" that
will help GNOME realize its full potential on the Desktop and Beyond, and in
the process help me achieve eternal glory.&lt;/p&gt;
&lt;p&gt;
I proudly present:
&lt;center&gt;
&lt;img align="center" src="http://senko.net/blog/UnusedIcons.png"/&gt;&lt;br&gt;
&lt;i&gt;The Desktop Cleanup Wizard [TM]&lt;/i&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
Currently this wonderful tool just sits in the Notification Area
and displays the above message. Various studies have shown that users have
never, ever, needed the rest of the functionality (such as actually "cleaning"
the desktop), so I have not bothered to code everything in. If you do need
it, please drop me a comment and I'll see what I can do.
&lt;/p&gt;
&lt;p&gt;
On a more productive side: I've used Python and libnotify for this, and since there's
currently no Python bindings for libnotify (until some changes are made), I hacked a
small wrapper for myself. This is probably buggy and doesn't contain all the functionality
present in the library (most notably, I've completely ignored callbacks), but nevertheless,
&lt;a href="http://software.senko.net/pub/python-libnotify-0.0.tar.gz"&gt;here it is&lt;/a&gt; if someone
wants it. The sample script that uses it can be found &lt;a href="http://software.senko.net/pub/trayicon.py"&gt;here&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113229307932374029?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113229307932374029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113229307932374029' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113229307932374029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113229307932374029'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/11/missing-piece.html' title='The Missing Piece'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113228059133059596</id><published>2005-11-18T03:18:00.000+01:00</published><updated>2005-11-18T03:23:11.343+01:00</updated><title type='text'>Gmail Draft goodness</title><content type='html'>&lt;p&gt;I've just spend a few minutes writing a mail, and chatting in the background, switching
between my Firefox and my X-Chat all the time. Then, in one moment, I hit the backspace key,
wanting to erase a character in my mail message, and before I knew it my browser went backwards
in time.&lt;/p&gt;
&lt;p&gt;That is, it left the current page and visited the previous page in history.
The current page was gone, and all my message text with it.&lt;/p&gt;
&lt;p&gt;Enter the tonight's hero: after visiting my Inbox in Gmail again, I've noticed a red
&lt;b&gt;Draft&lt;/b&gt; item in the thread in which I was going to post. Thankfully, just before my
Backspace accident, Gmail saved the draft of the message.&lt;/p&gt;
&lt;p&gt;Thanks, Google! ;-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113228059133059596?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113228059133059596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113228059133059596' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113228059133059596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113228059133059596'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/11/gmail-draft-goodness.html' title='Gmail Draft goodness'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113104611439362993</id><published>2005-11-03T20:20:00.000+01:00</published><updated>2005-11-03T20:28:54.306+01:00</updated><title type='text'>Ruby On Railgun</title><content type='html'>&lt;p&gt;
&lt;a href="http://rubyonrails.com"&gt;Ruby on Rails&lt;/a&gt; is sooo yesterday! Meet the today's
buzzword of hip web masters: &lt;b&gt;Ruby On Railgun&lt;/b&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img alt="Ruby On Railgun" src="http://www.senko.net/blog/RubyOnRailgun.png"/&gt;
&lt;/p&gt;
&lt;p&gt;
Blast the competition out of the &lt;s&gt;sky&lt;/s&gt; Internet!
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Patent-pending and copyrighted by &lt;a href="http://kezele.com/"&gt;Nabijach&lt;/a&gt;.&lt;/i&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113104611439362993?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113104611439362993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113104611439362993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113104611439362993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113104611439362993'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/11/ruby-on-railgun.html' title='Ruby On Railgun'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-113104194467983507</id><published>2005-11-03T19:08:00.000+01:00</published><updated>2005-11-03T19:19:04.686+01:00</updated><title type='text'>Brave new Ubuntu world</title><content type='html'>&lt;p&gt;
My Ubuntu adventure continues! Since the last post, I've upgraded to Breezy proper, and was
really impressed with how smooth the thing works. I also began preaching about it to my friends
(well, just mentioning it at strategic times, in fact :), and got in an argument with
&lt;a href="http://zwillow.blogspot.com/"&gt;zvrba&lt;/a&gt; about whether Ubuntu or Gentoo is better and
why (yeah, I know, it's silly).
&lt;/p&gt;
&lt;p&gt;
One thing that I've always held agains Debian, and now Ubuntu, is the principle of "if you
need something, download it off the 'net". That's cool if you have broadband Internet connection,
but here in Croatia most people are still stuck on 56k modems. Imagine downloading kubuntu-desktop
over that ;-) So, I started thinking about compiling a list of mostly-used packages and putting
it on DVD. The newly-created &lt;a href="http://www.ubuntu-hr.org/"&gt;Croatian LoCo team&lt;/a&gt; liked the
idea, so a new project was created: &lt;a href="http://www.ubuntu-hr.org/ningi/"&gt;Ubuntu Ningi&lt;/a&gt;
(this is an unofficial project, but we hope that the Ubuntu powers-that-be will like it).
Check it out, &lt;a href="mailto:ningi@ubuntu-hr.org"&gt;tell us&lt;/a&gt; what you think, and if you
have Breezy, upload your list of packages and help!
&lt;/p&gt;
&lt;p&gt;
Oh, and as a side-effect, I've become a de-facto member of Croatian LoCo team, so now I'm
in the process of officially registering with them :)
&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-113104194467983507?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/113104194467983507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=113104194467983507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113104194467983507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/113104194467983507'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/11/brave-new-ubuntu-world.html' title='Brave new Ubuntu world'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-112809857684922497</id><published>2005-09-30T18:14:00.000+02:00</published><updated>2005-09-30T18:42:56.856+02:00</updated><title type='text'>Breezier Than Thou</title><content type='html'>(I haven't blogged for a while, because I was too caught up and had little time
to tinker with fun things with computers about which I could blog).
&lt;p&gt;&lt;/p&gt;
Yesterday I switched to Breezy Badger (&lt;a href="http://www.ubuntulinux.org"&gt;Ubuntu&lt;/a&gt; 5.10) preview.
&lt;p&gt;&lt;/p&gt;
About my Linux distro history. I've started with Slackware as my desktop distro (this was
around Slack 2.x or 3.0, ..). Since then I've briefly touched RH, Debian, Suse and a few
others, but always kept returning to Slack, although I've preferred Debian for server setup.
I also like &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt;; when Slackware decided to drop GNOME
support, I started looking for alternatives, and found out about Ubuntu. Being Debian and Gnome
based, I decided to give it a try (I installed Hoary Hedgehog release), and was very satisfied
(as I hear it, many ex-Slackers like Ubuntu - is there a pattern?).
&lt;p&gt;&lt;/p&gt;
After a few monts, I've learned to totally like it, and was looking forward to the next release,
primarly because I followed the GNOME development closely and saw many "exciting new and
innovative features" (as PR folks like to say). I asked around and determined to make the
upgrade when Breezy proved stable enough.
&lt;p&gt;&lt;/p&gt;
And it is. Folks, it really works! ;-) After downloading and installing ~500MB of software
packages, I half expected it to crash and burn. Due to the lack of time, I finished the
upgrade remotely, and rebooted. I expected it to not show online. It did. Then, I got home,
logged in, and almost everything worked. The only two issues were:
&lt;ul&gt;
&lt;li&gt;GNOME icons - I had a custom theme, mixing Clearlooks with Industrial GTK+ engine. Something
    screwed up during upgrade, and I ended up missing many icons. I solved the problem by removing
    my custom theme (and applying the default), and then recreating the theme (you can do that
    in theme preferences dialog).&lt;/li&gt;
&lt;li&gt;Keyboard layout - I use Croatian keyboard layout. After reinstall, US keyboard was forced
    on me, and gnome-keyboard-properties dialog couldn't change it (although I did select
    Croatian by default). Looking on Ubuntu forums, it seemed that precompiled keyboard definition
    was wrong, or something similar (i have zero knowledge about XKB), so I tried to force update
    it by manually setting keyboard layout in xorg.conf. Restart X, GNOME figured out that there
    was mismatch, asked me which keyboard layout I wanted, I selected "GNOME default" (which was
    set to Croatian), and voila - there's my layout. Seems like a bit of a black magic, but just
    because I didn't want to investigate the thing any further. It worked ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
Everything else works perfectly (so far so good ... ;-). Also, I had several nice suprises.
I use &lt;a href="http://www.go-mono.com/"&gt;Mono&lt;/a&gt;, so I installed mono and MonoDevelop. I fired
MD up, selected a new Glade# project, clicked a few times in Glade interface builded, hit
F5 and ... it "just worked [TM]!"
&lt;p&gt;Now, I know things &lt;i&gt;are&lt;/i&gt; supposed to work that way, but there always seems to be some
catch. Always I had to tweak a bit more, or dig into terminal, or something. Not now; it jutst
worked. Kudos, Gnome, Ubuntu, Mono &amp; all other devs! Keep up the great work,
and thank you for a terrific software!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-112809857684922497?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/112809857684922497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=112809857684922497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112809857684922497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112809857684922497'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/09/breezier-than-thou.html' title='Breezier Than Thou'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-112557956320448418</id><published>2005-09-01T13:34:00.000+02:00</published><updated>2005-09-01T14:59:23.210+02:00</updated><title type='text'>VIP SMS from Python</title><content type='html'>&lt;p&gt;
Croatian mobile phone service provider &lt;a href="http://www.vip.hr/"&gt;VIP&lt;/a&gt; offers
its users a way to send SMS through a web page on the VIP portal. Users are limited
to 15 messages per day, but these messages are free, so it's a nice feature :)
&lt;/p&gt;
&lt;p&gt;
Unfortunately, I don't use it much because I'm not regular visitor to the
VIP portal, so logging in, navigating to the Web2SMS page and filling out the
form is too much hassle for me. I'd rather have an utility, GUI or CLI, for doing this.
VIP provides no such client, nor specifies a web service, which would allow others
to create clients.
&lt;/p&gt;
&lt;p&gt;
Luckily, their web implementation is fairly simple. There's one html form for login,
another for sending message, and the session variables are being carried around in
Cookies. With a little help of urllib and cookielib I was able to hack up a working
code in a half an hour.
&lt;/p&gt;
&lt;p&gt;So &lt;a href="http://software.senko.net/pub/vipsms.py"&gt;here it is&lt;/a&gt;. I've been
testing it under Cygwin/WinXP, but it should work everywhere. The command line
usage is:
&lt;pre&gt;
    vipsms.py user password phone_number 'text of the message'
&lt;/pre&gt;
&lt;p&gt;
Now, a GUI version would be cool. I'm using GNOME (at home; at work i'm on Windows,
hence Cygwin), so I'll try to hack up something with PyGtk.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-112557956320448418?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/112557956320448418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=112557956320448418' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112557956320448418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112557956320448418'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/09/vip-sms-from-python.html' title='VIP SMS from Python'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-112543864175145812</id><published>2005-08-30T23:01:00.000+02:00</published><updated>2005-08-31T09:19:58.913+02:00</updated><title type='text'>gnomefs</title><content type='html'>&lt;p&gt;
&lt;a href="http://developer.gnome.org/doc/API/gnome-vfs/index.html"&gt;GnomeVFS&lt;/a&gt; is a filesystem abstraction used in &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt; desktop environment. In adition
to traditional FS operations, it has several extra features (better metadata suport, clever
handling of file types, async operations, can operate on any URI, not just files, extensible
through modules).
Unfortunately, GnomeVFS is used only by GNOME - the rest of the system is unaware of it. This
is both confusing for new users (who must distinguish between paths in GNOME and non-GNOME aware
programs), and annoying for everyone (imho ;-).
&lt;/p&gt;
Enter &lt;a href="http://fuse.sourceforge.net/"&gt;Filesystem in Userspace&lt;/a&gt;. This incredibly cool
thing allows anyone to write filesystem handler in one afternoon - which is exactly what I did.
Combine GnomeVFS and FUSE and you bring previosly GNOME-only features to the whole system! The
hack is a just over 200 lines long, and supports read-only operation. It's basically a mapping
between GnomeVFS and FUSE API.

&lt;p&gt;Obligatory "screenshot":
&lt;pre&gt;
senko@rei:~/src/gnomefs$ sudo ./gnomefs sftp://senko@marvin.kset.org/ -o allow_other /mnt/gnomefs
senko@rei:~/src/gnomefs$ cat /mnt/gnomefs/etc/hostname
marvin
&lt;/pre&gt;
&lt;p&gt;
The code is just a proof of concept - it's really ugly, unoptimized and probably contains a
couple of bugs. Also, currently only one scheme/host pair is mounted - I plan to extend gnomefs
to have just one mountpoint, with translation:
  &lt;mountpoint&gt;/scheme/host/path -&gt; scheme://host/path
I started doing that and then ran away in terror before the C's string handling ;-)
&lt;/p&gt;
&lt;p&gt;Grab the the code &lt;a href="http://software.senko.net/pub/gnomefs-0.0.tar.gz"&gt;here&lt;/a&gt; and
play with it! You'll need FUSE 2.2.1 and GnomeVFS 2.10 (these are versions available for Ubuntu
Hoary which I'm running).
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;With the Internet as vast space as it is, I might've suspected
that someone has already figured out this cool idea and has &lt;a href="http://mail.gnome.org/archives/gnome-announce-list/2004-October/msg00009.html"&gt;done
something&lt;/a&gt; about it. Well, at least it was a fun..
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-112543864175145812?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/112543864175145812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=112543864175145812' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112543864175145812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112543864175145812'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/08/gnomefs.html' title='gnomefs'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-112379930394594101</id><published>2005-08-12T00:08:00.000+02:00</published><updated>2005-08-12T00:28:23.953+02:00</updated><title type='text'>Py/Invoke</title><content type='html'>&lt;p&gt;
One of great things about Python is that it's relatively easy to
extend it. Either by digging into Python internals manually or using
Swig to do the dirty work for you, you can create brand new native
modules or bindings to libraries in a few hours.
&lt;/p&gt;

&lt;p&gt;
But what if you just happen to need this one function, once, for a
quick hack, and there's no binding avaliable? Would you want to go
through the (however small) trouble of defining, testing and
compiling the extension module? I wouldn't. So, what's there to do?
I really like .NET solution for this problem (Platform Invoke) - to
invoke the native function you just add enough metadata to describe
how to marshall types from .NET to the native function, specify the
library and function name, and you're set.
&lt;/p&gt;

&lt;p&gt;
For Python, there's this standard module (for Unix platforms)
called &lt;code&gt;dl&lt;/code&gt;. It is an interface to dynamic link loader, and allows
loading a library, selecting a function by its name and calling it.
But, there's a catch - only integers and constant strings may
be supplied to the function, and the function must return an integer
value. Not very practical, considering that much data-moving in
C is done using pointers; which makes good ol' dl almost worthless.
&lt;/p&gt;

&lt;p&gt;
So, inspired by P/Invoke, I decided to extend dl to support passing
arbitrary data and mutable strings. I've added a new method
&lt;code&gt;call_mutable&lt;/code&gt;, which is largely copy-pasted &lt;code&gt;call&lt;/code&gt; with a few
tweaks to allow mutable (call by reference) parameters. Here it is.
&lt;/p&gt;

&lt;h3&gt;Extension to the dl module&lt;/h3&gt;

&lt;p&gt;
The &lt;code&gt;call_mutable&lt;/code&gt; method is an extended version of standard &lt;code&gt;call&lt;/code&gt; method
available in the dl module. The method allows integers, strings and None as
arguments to the native function. Integers are passed by value, and None is
passed as NULL pointer. For each string argument, a separate data buffer is
allocated, initialized with string data, and passed to the function.
&lt;/p&gt;

&lt;p&gt;
The method returns a tuple containing return value of the native function,
and strings holding the data found in string buffers upon native function
exit.
&lt;/p&gt;

&lt;p&gt;Example:
&lt;pre&gt;
&gt;&gt;&gt; import dl
&gt;&gt;&gt; m = dl.open('libc.so.6')
&gt;&gt;&gt; m.call_mutable('time')
(1123796886,)
&gt;&gt;&gt; m.call_mutable('read', 0, '\0' * 15, 15)
Hello World
(12, 'Hello World\n\x00\x00\x00')
&lt;/pre&gt;
&lt;/p&gt;

&lt;h3&gt;Convenience wrapper: native&lt;/h3&gt;

&lt;p&gt;
Since dealing with raw data buffers understood by &lt;code&gt;call_mutable&lt;/code&gt; is cumbersome,
I've created the convenience wrapper which combines the functionality of
&lt;code&gt;struct&lt;/code&gt; and &lt;code&gt;dl&lt;/code&gt; modules. The module provides just one function, &lt;code&gt;native&lt;/code&gt;,
which loads the shared library, performs marshalling and unmarshalling of
arguments and calls the native C function.
&lt;/p&gt;

&lt;p&gt;
The data marshalling is done according to format string similar to one used
by &lt;code&gt;struct&lt;/code&gt; module. Its format is:
&lt;pre&gt;
        '&amp;lt;type&amp;gt;:&amp;lt;type&amp;gt;:..:&amp;lt;type&amp;gt;'
&lt;/pre&gt;
where 'type' is one of:
&lt;ul&gt;
        &lt;li&gt;&lt;code&gt;''&lt;/code&gt; - specifies an integer to be passed by value&lt;/li&gt;
        &lt;li&gt;&lt;code&gt;'s'&lt;/code&gt; - specifies data buffer with size identical to the correspondenting
                string argument + one byte for the NUL-terminator&lt;/li&gt;
        &lt;li&gt;any other - used exactly as in struct module&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;
Upon return from the external C function, the &lt;code&gt;native&lt;/code&gt; function unmarshalls
the arguments and returns the tuple containing return value (integer) as the
first element of the tuple, and unmarshalled values for mutable arguments (that is,
all arguments except integers passed by value).
&lt;/p&gt;
&lt;p&gt;
Note that this module caches the dl objects used, so the external library won't be
reopened several times on multiple function invocation. To close all open libraries,
you can use &lt;code&gt;close_all&lt;/code&gt; function provided by the module.
&lt;/p&gt;
&lt;p&gt;
Example:
&lt;pre&gt;
&gt;&gt;&gt; import native
&gt;&gt;&gt; native.native('libc.so.6', 'time', 'i', (1,))
(1123797259, 1123797259)
&gt;&gt;&gt; native.native('libc.so.6', 'read', ':s:', (0, '\0' * 15, 15))
Hello World
(12, 'Hello World\n\x00\x00\x00')
&lt;/pre&gt;
&lt;/p&gt;

&lt;h3&gt;The code&lt;/h3&gt;
&lt;p&gt;
I've packed my version od &lt;code&gt;dl&lt;/code&gt; module along with &lt;code&gt;setup.py&lt;/code&gt; script and
wrapper &lt;code&gt;native&lt;/code&gt; module into a tarball which you can get from
&lt;a href="http://software.senko.net/pub/python-dl2.tgz"&gt;my software repository&lt;/a&gt;.
The tarball also contains a patch against &lt;code&gt;dlmodule.c&lt;/code&gt; from
Python CVS.&lt;br/&gt;
So, get it, play with it and feel free to flame me about it ;-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-112379930394594101?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/112379930394594101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=112379930394594101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112379930394594101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112379930394594101'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/08/pyinvoke.html' title='Py/Invoke'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15282480.post-112371597014792228</id><published>2005-08-11T01:06:00.000+02:00</published><updated>2005-08-11T01:27:41.636+02:00</updated><title type='text'>Using extended attributes for file type detection</title><content type='html'>&lt;p&gt;
In a recent IRC discussion a subject of detecting file types was brought up. At that point I argued that file type detection based on extensions was maybe a nice hack at the time when there were no fancy methods for storing file metadata, the computers were real computers, and the universe was young. Today, it's totally obsolete, limited, arbitrary and brain-damaged in general.
&lt;/p&gt;

&lt;p&gt;
In modern Unix-based systems (with Mac OS X as notable exception, more on that later), file extensions are rarely used by applications, and as a convenience if at all (Microsoft keeps thinking that three-letter strings are a good way to describe a file type). Using a command line shell you can pass any file names to the program you start, and most of them are extension-agnostic, except sometimes for convenience purpose. In environments which do need file type information such as &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt; or &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt; GUIs, it is guessed based on file extension and data format parsing.
&lt;/p&gt;

&lt;p&gt;
The problem here, is that these environments are adding a new layer to the system infrastructure, reimplementing functionality which belongs to the lower levels. This also creates inconsitencies - users must be aware of the difference between e.g GNOME file URIs and filenames in the system. The inconcistency is also due to the fact that GNOME/KDE VFS support data which isn't stored on the filesystem at all (http://..., smb://..., info://... URL's, etc) but that's another issue.
&lt;/p&gt;

&lt;p&gt;
So, what can be done about this? Many modern filesystems (ext3, xfs, reiserfs - I admit I'm Linux-centric here) support extended attributes, that is, pairs of (name, value) strings which can store metadata. They're ideal for storing file type information. That's the easy part.
&lt;/p&gt;

&lt;p&gt;
The hard part is, what to store there? Where exactly do we get file type information for some file, and how to represent it? For the representation, &lt;a href="http://www.iana.org/assignments/media-types/"&gt;MIME types&lt;/a&gt; come to mind - they're widely used (mail, news, web, GNOME and KDE desktops), they're a standard, and people know how to handle them (more or less). Alas, they do have their problems - only 2 levels of hierarchy, hard to extend (must use application/x-foo kludge) and the extensions have no guarantee of uniqueness. The other option are Apple's &lt;a href="http://arstechnica.com/reviews/os/macosx-10.4.ars/11"&gt;Uniform Type Identifiers&lt;/a&gt;, which are attempt to address precisely the problems with MIME. UTI's are guaranteed to be unique, easy to extend, support namespaces and (multiple) type inheritance and many popular types are already standardized. The only "small" problem with UTI's is that they're nonstandard, and only present in Mac OS X (actually, they appeared only recently in Tiger).
&lt;/p&gt;

&lt;p&gt;
This brings us to the following problem - if only local system uses this filetyping system, how will we communicate with the outside world? How to properly assign types coming from outside, and, for that matter, generated by legacy applications not aware of this new shiny typing system? Well, we can use the same technique that is employed today for mime-type detection: heuristics based on file extensions (here they creep up again) and content inspection (parsing). Only, we do it only once, not every time the file is accessed. But (as was repetedly pointed out to me, tnx kre &amp; zvrba), that creates new problem: does the system allow the user to specify file types, and do the applications blindly trust the user?
&lt;/p&gt;

&lt;p&gt;
My proposal is this: The file type information is deduced from the file extension or content upon first creation (or available mime type info if downloading from the web, for example). The file type information may be changed by the user (having the appropriate write privileges on the file). The applications don't ever blindly trust the user - upon loading the data they alway perform (or should perform) validation, and usually report error to the user if the data is inconsistent. So, if the user tries to spoof the data type, let them - the application in question should gracefully report error (such spoofing is possible today, and it isn't abused: the only security issue here is automatic loading and executing of content, but automatic execution is a security problem anywhere, and isn't a problem pertaining to filetype detection).
&lt;/p&gt;

&lt;p&gt;
The question here is, what new features does this bring? After all, the applications are required to validate the input, and the user cannot trust the type information provided by external sources (because it might be spoofed by an attacker). I believe that it is beneficial because the environments that do rely on file types have a lot easier job (and don't need to reinvent the wheel at various level), and the security argument becomes irrelevant if we admit that user can never trust outside information, be it file metadata or the file content.
&lt;/p&gt;

&lt;p&gt;
It is also possible to make filetyping mandatory, handle it using a trusted source, and let applications trust in it. This involves having some sort of daemon running at superuser privileges, inspecting the files periodically (using the heuristics I mentioned above) and assigning the types. Newly created files would have empty/unknown type, and upon any file modification the type would be cleared again (to prevent users from creating a file with some type and then changing the contents to something else). This approach has its own problem: the user can attempt DoS attack on system by changing the files rapidly. This can be circumvented by building a list of new/changed files and updating the metadata in a batch, delayed for a few seconds or minutes. Although this scheme guarantees that known file types are correctly identified, I believe that it is too restrictive to the user, and that, ultimately, applications don't want to rely on it because they still would want validate the input.
&lt;/p&gt;

&lt;p&gt;
What's your view on this? Is the current vfs-layer-on-top-of-traditional-fs approach good (enough), do we really need automatic type detection and handling, and what you think is the Right Way to do this? Don't hesitate to comment ;-)
&lt;/p&gt;

&lt;p&gt;
PS. This is my first blog posting! Wheee! ;-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15282480-112371597014792228?l=ptlo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ptlo.blogspot.com/feeds/112371597014792228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15282480&amp;postID=112371597014792228' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112371597014792228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15282480/posts/default/112371597014792228'/><link rel='alternate' type='text/html' href='http://ptlo.blogspot.com/2005/08/using-extended-attributes-for-file.html' title='Using extended attributes for file type detection'/><author><name>Senko</name><uri>http://www.blogger.com/profile/02871690938716392627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry></feed>
