Splitwise - aplikacija za deljenje troškova

Dok sam bio u Kaliforniji, došao sam u dodir sa jednom aplikacijom koja me je oduševila svojom kombinacijom jednostavnosti i praktičnosti – u pitanju je Splitwise, aplikacija za deljenje grupnih troškova. Iako je ideja daleko od revolucionarne, ovaj servis se probio i dobro pozicionirao kako na mobilnim platformama (postoje Android i iOS aplikacije), tako i na webu, ali do nas iz nekog razloga nikada nije došao. Zbog toga sam počeo uporno da dosađujem ljudima da ga koriste, jer znatno olakšava bilo kakva putovanja ili grupne finansijske konstrukcije, pa ovim tekstom pokušavam da doprem i do šire javnosti. This message has been brought to you by the Splitwise Advertising Department.

Read more


Generisanje nasumičnih brojeva

Kao posledica bavljenja svojim diplomskim radom, došao sam do dela gde su mi bili potrebni nasumični brojevi (tema je određena primena genetskih algoritama, više o tome drugi put), pa sam odlučio malo ozbiljnije da ispitam razne mogućnosti za njihovo generisanje. Ispostavilo se da je u pitanju jedna veoma zanimljiva tema, čak i daleko opširnija nego što bi neko rekao na prvi pogled. Naravno, ono što je čini toliko zanimljivom jeste upravo njen naziv koji lako ume da nas zavara -- nisu u pitanju nasumični brojevi, već "nasumični" (pseudonasumični) brojevi. O čemu se ovde zapravo radi?

Stvar je veoma jednostavna: nasumičnost ne postoji, a posebno ne u računarima. Čoveka možete priupitati da vam kaže proizvoljan broj, ali verovatnoća da taj čovek (ili žena) kao iz topa kaže devetmilionadvestapedesetišesthiljadatridesetisedam je daleko manja od verovatnoće da vam jednostavno kaže "osam". Ukoliko se pogleda iz tog ugla, računari su zapravo mnogo bolji generatori nasumičnih brojeva, ali i dalje nisu savršeni.

Problem leži u tome što je u računarima sve determinističko, pa algoritam do nasumičnog broja mora da dođe na određen način koji je sve samo ne nasumičan. Jedan od jednostavnijih metoda je generisanje sekvence brojeva na sledeći način:

X_{n+1} = (aX_n + b)\ mod\ m

Očigledno, svaki od brojeva će biti iz intervala [0, m), gde će nasumičnost sekvence zavisiti od početne vrednosti koja se naziva seed (iliti seme), a neka vrednost će se u najboljem slučaju ponoviti nakon m generisanja (na osnovu trpanja golubova u rupe). Da bismo ovaj proces učinili "kvalitetnijim", za seed se često koristi trenutno vreme (odnosno UNIX timestamp), pa drugo pokretanje programa nakon samo jedne sekunde može dati potpuno drugačije vrednosti. Mana ovog konkretnog pristupa je što se nakon prvog ponavljanja neke vrednosti cela sekvenca ponavlja; neki drugi pristupi nakon prvog ponavljanja vrednosti ipak daju drugačiju sekvencu, odnosno imaju mnogo veću periodu, jer i drugi parametri utiču na generisanje vrednosti. Složićete se, ipak, da ovakvo generisanje zapravo nije uopšte nasumično, ali je za potrebne mnogih i više nego dovoljno, dok za potrebe ostalih C++ nudi random_device generator koji se oslanja na adekvatan hardver, ukoliko je isti dostupan. Međutim, čak i ako imate dobar generator, to vas neće sprečiti da ga upropastite ukoliko ga uzmete zdravo za gotovo. Demonstrirajmo to na tri jednostavna primera.

Read more


Tekst u Ilustrovanoj Politici povodom takmičenja AI Olympics

Četvorica studenata Računarskog fakulteta iz Beograda osvojila su prva tri mesta na nedavno održanoj olimpijadi u razvoju veštačke inteligencije u Bukureštu svojim originalnim programima testiranim u jednoj strateškoj igri.

Ovako je započet tekst objavljen u prošlonedeljnoj Ilustrovanoj Politici. Kako oni, nažalost, nemaju online arhivu tekstova, odlučio sam se da ga okačim, kako biste mogli da pročitate ovu priču ispričanu od strane nekoga ko nije programer, već zaista novinar.

Autor teksta je Jelena Bošković, a fotoreporter Vladimir Marković.

Read more


Od srednje škole do Silicijumske doline

Juče sam na Računarskom fakultetu, u okviru seminara RAF IT Days, održao predavanje pod nazivom "Od srednje škole do Silicijumske doline", i veoma mi je drago da se to desilo, pošto je u pitanju tema o kojoj želim da pišem već neko vreme. Tačnije, želim to da uradim preko godinu dana, još otkad je izašao tekst "From college to Silicon Valley", ali sam to stalno odlagao zbog obilja informacija koje bih u takav tekst mogao da uključim.

U okviru Start konferencije sam takođe držao slično predavanje, ali pod nazivom "Od fakulteta do Silicijumske doline", i ono je bilo svojevrsan podskup ovog teksta -- ipak, složićete se da nije imalo smisla da studentima pričam o tome šta treba raditi tokom srednje škole. Zbog toga je ovo predavanje na RAFu bila odlična prilika da te informacije i savete skupim i organizujem, i najzad prezentujem u ovom tekstu.

Read more


AI Olympics – dođosmo, videsmo, pobedismo

AI Winter OlympicsZahvaljujući entuzijastičnim i mladim studentima, na Računarskom fakultetu je početkom ove školske godine osnovana sekcija pod nazivom "Competitive programming", a sa ciljem da studentima dodatno približi baš ona takmičenja u kojima su RAFovci najbolji -- algoritamska takmičenja. Slučajno ili ne, sa nastankom ove sekcije se poklopila i povećana zainteresovanost mojih kolega i mene za razna takmičenja, pa smo tako učestvovali na dva hackathona (Start Conference i Nordeus Hackathon), gde smo i pokupili većinu nagrada.

Ova dva zbivanja kao da se nisu mogla dogoditi u boljem trenutku, jer je baš tokom decembra objavljeno da će se ove godine, nakon jedne preskočene, ponovo održati takmičenje AI Olympics, o kojem sam nakon učešća 2011. godine i pisao. Podstaknuti pređašnjim uspesima, sa velikim brojem zainteresovanih ljudi, doneli smo odluku...

RAF ide u Rumuniju da pobedi.

Read more


Start Conference i razvoj Metro aplikacija

Kao fotograf, osećam dužnost da prvo pomenem Vukašina Jeremića koji je bio fotograf na ovom događaju, i čije sam fotografije upotrebio u tekstu.

Start Conference, događaj koji je prethodnih nekoliko nedelja grandiozno najavljivan, najzad je održan ovog vikenda na Fakultetu organizacionih nauka. Za neupućene, konferencija se zapravo sastojala iz tri dela -- radionica, sâme konferencije (predavanja) i takmičenja -- i verujem da su sve njene komponente zadovoljile očekivanja organizatora i učesnika, pritom opravdavši gore pomenuto grandiozno najavljivanje. S obzirom da je konferencija organizovana po prvi put, i da je trajala (bukvalno) dva dana bez prestanka, za organizatore koji su verovatno spavali i manje od takmičara imam samo reči hvale.

Kao što sam već napomenuo u prethodnom tekstu, studenti iz organizacije FONIS, koji su idejni tvorci i organizatori ovog događaja, i koje poznajem već neko vreme zahvaljujući događijama "Blogeri studentima" i "Kompanije studentima", su me pozvali da održim predavanje/prezentaciju o svojoj praksi u Facebooku i iskustvima sa praksama uopšte. Ovo je došlo kao veoma zgodna tema, pošto već nekoliko meseci planiram da napišem tekst pod nazivom "Od srednje škole do Silicijumske doline" -- u ovom slučaju sam doduše pričao na temu "Od fakulteta do Silicijumske doline", pošto zaista nije bilo smisla da govorim ljudima šta je trebalo da rade u srednjoj školi :) Dakle, svojevrsni transkript predavanja će usledeti kada se zaista nakanim da napišem taj tekst.

Drugi deo konferencije u kojem sam odlučio da uzmem učešće, i koji je glavni razlog za pisanje ovog teksta, jeste takmičenje u razvoju Windows 8 Metro aplikacija. Sa dvojicom kolega sa fakulteta napravio sam tim koji ranije nije imao nikakvog iskustva u razvoju Windows 8 aplikacija, ali smo zato imali raznovrsno iskustvo za koje smo mislili da će nam biti dovoljno.

Ispostavilo se da to i jeste bio slučaj. Iako smo dosta vremena proveli pokušavajući da razumemo razne aspekte Windows 8 Metro aplikacija, tokom druge polovine takmičenja smo se zahuktali, i napravili aplikaciju kojom smo bili (tj. i dalje jesmo) veoma zadovoljni. Obraćajući pažnju na stvari koje se boduju, ispunili smo većinu uslova, i tako smo u konkurenciji od 8 timova osvojili drugo mesto. Borba za top 3 je bila veoma tesna (195, 198 i 205 poena), ali je prva nagrada u svakom slučaju otišla u dobre ruke -- Lenovo tablet su osvojili naši dobri prijatelji Vladimir Dimić, Vlado Pajić (administrator sajta dubstep.rs koji su i inkorporirali u svoju aplikaciju) i Boris Perović.

Da bih ispoštovao prvenstveno tehničku prirodu ovog bloga, ostatak teksta ću posvetiti razvoju Metro aplikacija i našim iskustvima koja smo stekli tokom dvadeset i četiri sata, koliko je trajalo takmičenje.

Read more


Start Conference i moje predavanje o praksama

Divni ljudi iz FONIS-a, sa kojima tako rado sarađujem (iako najčešće u ulozi fotografa), ponovo organizuju konferenciju na Fakultetu organizacionih nauka. Nakon serijala "Studenti studentima", "Blogeri studentima" i "Kompanije studentima", Start Conference (start.org.rs) ima nešto drugačiji pristup. U pitanju je dvodnevni događaj u okviru koga će se održavati predavanja, radionice, ali i hackathon -- sve radi "približavanja aktuelnih tema u IT svetu, kao i skretanja pažnje na probleme koji postoje u razvoju informatičkog društva u Srbiji".

Organizatori su bili toliko ljubazni da me pozovu da učestvujem u konferenciji, tako da ću, u za sada neodređenom terminu, držati predavanje pod nazivom "Od fakulteta do Silicijumske doline" -- pričaću o praksi u Facebooku, kao i o praksama za programere uopšteno. A možda odlučim i da okušam svoju sreću na takmičenju... Ako ste zainteresovani, prijavite se za konferenciju do kraja novembra, pa se vidimo 8. ili 9. decembra.

Read more


Facebook – tamo i nazad: III deo

Treći deo. Zanimljivo je kako sve dobre stvari dolaze u trilogijama -- npr. filmovi Matrix, Gospodar prstenova, Kum, Ratovi zvezda (i to dva puta, možda i treći)... A u skladu sa tim, i ovaj tekst predstavlja kraj neke sage: moje tromesečne posete Silicijumskoj dolini i Facebooku.

Kao što možete i pretpostaviti, ovih nekoliko nedelja otkad sam se vratio u Beograd (tačno mesec dana, zapravo) je bilo veoma haotično. Trebalo je navići se na novu vremensku zonu, dokopati se kofera izgubljenih u prevozu, obaviti posete rodbini, uhvatiti ritam na fakultetu itd. A opet, kao da nisam ni otišao, Beograd sam zatekao onakvog kakvog sam ga ostavio. Jedina stvar koja me jeste dočekala jeste lavina pitanja, ali se ona uporno svode na "Kako je bilo?"

E pa da vam kažem, bilo je odlično.

Read more


Facebook – tamo i nazad: II deo

U poslednje vreme se fraza corporate culture često provlači kroz tekstove o firmama, ali ponekad ju je teško razumeti, kao što je teško razumeti neki drugi narod ili naciju. Čitavu tu priču je ozbiljno pokrenuo Google sa svojim Googleplexom, radnim okruženjem u kojem bi svako poželeo da radi, i zapravo stvorio trend da IT firme pružaju nešto više -- nešto što će novine pokušavati da prenesu, ali neće uspevati u tome. U Facebooku sam već devet nedelja, i sa sigurnošću mogu da kažem šta je korporativna kultura.

Ne, to nije udoban nameštaj, niti crteži po zidovima; to nisu ni mikro-kuhinje ni restorani sa hranom sa svih krajeva sveta. To je osećaj zajednice. Facebook je entitet za sebe, kao pod staklenom kupolom u sred haotične Silicijumske doline, i kada prođete kroz njegova vrata, osećate se kao kod kuće. Ne dolazite tu da biste donosili milione već bogatoj industriji, ili da biste držali glavu pognutu nad radnim stolom. Dolazite ovde zato što su sati provedeni na poslu ispunjeni. Nećete imati stroge šefove da vam dišu za vratom, već vlasnika kompanije koji svake nedelje odvaja vreme i odgovara na pitanja zaposlenih, gde god oni bili u hijerarhiji. Svakog dana će vam nešto novo izmamiti osmeh na lice i biće vam drago što ste baš tu u tom trenutku. Danas je to bio marching band koji ide dvorištem sa gajdama i bubnjevima i svira škotsku muziku, sutra će to možda biti milijarditi korisnik. I na kraju dana, kada se mrtvi umorni vraćate sa posla, neće vam biti teško da sledećeg dana ponovo odete na posao. (Čak i ako je vikend.)

To je korporativna kultura, i njena osnova je zajednica, sklop ljudi koji ne dozvoljavaju da im posao zaista bude posao, sklop ljudi koji savršeno funkcionišu zajedno... Kao da je po njima krojen kraj teksta The Hacker Manifesto:

Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they look like. My crime is that of outsmarting you, something that you will never forgive me for.

I am a hacker, and this is my manifesto. You may stop this individual, but you can't stop us all... after all, we're all alike.

Kao ni novine, ja taj оsećaj ne mogu preneti. Ali mogu da stavim neke reči i slike na "papir", pa možda stvari budu malo jasnije...

Read more


Facebook – tamo i nazad: I deo

Nakon više od pola godine iščekivanja, došao je i taj trenutak.

Dvanaestog jula se za mene završava ispitni rok; trinaestog jula se ukrcavam u Lufthansin avion, i preko Minhena se upućujem ka San Francisku. Krajnja destinacija -- Facebook.

Iako nisam svetski putnik koji je obišao sve pomena vredne lokacije, i usput naširoko pisao o njima u svojim knjigama (koje su, suvišno je reći, bestseleri), prosto nisam mogao da odolim tome da deo svog vremena posvetim pisanju svojevrsnih putopisa tokom ovog putovanja. Mada, "putovanje" možda i nije najbolji termin, pošto će kada se sve sabere put trajati manje od dva dana. Da, pre bih ovo nazvao… Avanturom.

Zašto? Na prvom mestu, zato što je u pitanju put na drugi kraj Zemljine kugle, dobrih 10.000km leta. Dalje, u pitanju su Sjedinjene Američke Države, odnosno Kalifornija, zemlja koju toliko često gledamo u filmovima, kako kao utopiju, tako kao puno kriminala. I, najbitnije, zato što idem u "štab" Facebooka, glavni razvojni centar najveće društvene mreže na svetu koji je zaista svet za sebe. Iako sam ovde tek nedelju dana, oduševljenja ima u izobilju.

Read more