• Swarm Intelligence in HTML5 Canvas

    Swarm Intelligence in HTML5 Canvas

    Swarm Intelligence – I wanted to visualize different ways of particles following each other for some time now but have never really gotten to the point of doing it until one day, I was browsing through lots of amazing things people have made using HTML5 Canvas. One of these things was Daniel Puhes Liquid Particles canvas thingy which immediately reminded me of my idea and I thought – why not try and do it using HTML5 canvas? I wanted to try canvas out a little bit anyway. So, I asked Daniel for permission to use his code as an “engine” for my idea and he was ok with that. Thanks Daniel! He also made some more pretty cool stuff so go and check that out if you want.

    So I took his code, refactored it a fair bit, made it so that particles follow each other instead of following the mouse and that’s how Swarm Intelligence was born. I do know that this is not real AI but I don’t care, I just like to call it that way anyways. :)

    At the moment there are three different algorithms that make particles follow each other:

    • swarm – each particle targets a random particle from the swarm and follows it for next 5000-10000 canvas refresh cycles. after that, it randomly finds a new one and follows it for next 5000-10000 refresh cycles and so on
    • tail – each particle targets a different random particle on each canvas refresh cycle and follows it for a single refresh cycle after which it targets a new random particle and then follows than one for a single refresh cycle and so on
    • lead – all particles follow the same (single) particle which moves randomly inside the canvas a bit faster than all the other particles

    Algorithms change randomly over time but can also be changed manually by clicking  the left mouse button somewhere inside the canvas. I also introduced some chaos into the system so it wouldn’t stabilize itself over time. For example, every now and then some particles get randomly blown away from the swarm a little bit. Also, after some time all the particles will get blown away at the same time. I plan to add two or three more following algorithms when I get the time. One of them will be following the nearest particle but I will have to come up with one bad-ass algorithm to not kill the performance. Soon I guess. Or not. :D

    Algorithm indicator in the top left corner of the canvas introduced some performance problems. Apparently, drawing text inside canvas is very, very poorly implemented in all browsers except Chromium. The problem I had was that I would redraw a line of text inside canvas on each refresh cycle (every 70ms) which slowed it down a fair bit if you tried to run it in anything else except Chromium. Redrawing the text on each cycle wasn’t really necessary since the text stays the same most of the time so what I did was – on top of the old canvas frame I added a new one which redraws text only when the following algorithm gets changed. That turned out to be a pretty good solution.

    Nothing more to say about this small experiment I guess.. except – enjoy it! :)

  • My first open-source code contribution – spilp

    My first open-source code contribution – spilp

    Spilp is a simple Python script that takes IIS logs, parses them and creates statistical reports which can be used to discover unusual IP activity more easily.”

    ‘Been working on this one for some time now and finally everything I wanted to implement is in place. The whole thing is released under GNU GPL v3 license for everybody to enjoy. You can download the script here. Below is a list of spilp features with links to sample reports.

    Features

    • extracts a list of IP addresses with number of hits they made sorted by number of hits
    • extracts a list of “close” IP addresses that made a certain number of hits
    • extracts a list of user agents sorted by number of hits
    • extracts a list of cs-method hits (GET method excluded)
    • extracts a list of file hits sorted by number of hits
    • extracts extended information for document and web file hits
      • includes timestamps, client IP addresses, methods, ports, user agent details and http status codes
    • extracts a list of “unusual” http status code hits sorted by number of hits
      • client IP address list
      • a list of files hit by an IP and number of hits for that file
    • filtering results (include or exclude filtering – works in “either-or” way)
      • ability to auto-generate an IP range list as a filter
    • reverse DNS country lookup using MaxMinds? GeoIP country downloadable database
      • additional info in certain reports
      • filtering results by country of origin (as a separate filtering option using spilpconf.py file)
    • ability to process large amount of IIS log files
    • CONFIG file for performance and output tweaking
    Rejoice!
  • o trzalicama

    (19:05:53) perovodokotlić: evo opet se dogodilo to
    (19:05:57) perovodokotlić: ono kad ti padne nešto na pod ispod tebe
    (19:05:58) perovodokotlić: i nestane
    (19:06:04) perovodokotlić: trzalica
    (19:06:06) perovodokotlić: nema je
    (19:06:08) pootzko: :D
    (19:06:10) perovodokotlić: pala mi je pod noge i nema je niiigdje
    (19:06:12) pootzko: trzalice pogotovo
    (19:06:16) pootzko: one kad padnu
    (19:06:24) pootzko: otvore neki procjep u prostorno vremenskom kontinuumu
    (19:06:31) pootzko: i odu u neki paralelni svemir
    (19:06:34) pootzko: never to be found again
    (19:06:39) perovodokotlić: hahaha
    (19:07:59) pootzko: i šarafi isto
    (19:08:00) pootzko: i neposlušne nikadprobavljene kokice


    spontani red guglanja…

    …i red slučajnog dalekointernetskog očitoistomišljenika

    ~ragetoons + ~mylifecomics

  • R.I.P delicious (fuck you Yahoo)

    Diigo it

  • druydsong a day, keeps silence away!

    Thank you Druyd =)

  • Interneta! Na iglu!

    facebook

    Tu i tamo se na mom (tehnički orjentiranom) faksu pojavi pokoji profesor koji od nas traži nekakvu “čudnu” zadaću. Zašto čudnu? Zato što ne očekuje štreberluk već kreativnost. Evo jedne takve zadaće na koju sam upravo naletio kako leži zakopana negdje na disku… Esejević (tema po izboru):


    Cybermozak – sljedeći korak evolucije čovjeka. Ili ipak ne?

    Trenutno tek fikcija iz cybersvijeta Ghost in the Shell anime serijala, no ne i tako daleka i nevjerojatna budućnost? Cybermozak, umjetno proširenje biološkog mozga u obliku samostalnog modula spojenog na živčani sustav sposobnog za pohranu i procesuiranje podataka te mrežno komuniciranje s ostatkom cybersvijeta na prvi se pogled uistinu doima kao zgodan skok u evoluciji čovjeka. Pitanje koje se postavlja je želimo li uistinu načiniti i taj sljedeći korak u odcjepljivanju od prirode?

    Osvrnimo se za trenutak na ono što već imamo. Računalni terminali sadašnjice dolaze u najrazličitijim oblicima – od kućnih računala do „pametnih“ telefona koji nas drže spojene na mrežu svih mreža u svakom trenutku. Dotok informacija u virtualnom svijetu bez cenzure, pravila i kontrole nikada nije bio veći. „Socijalne“ mreže koje ne poznaju prostorne udaljenosti pružaju instant komunikaciju stvarajući pri tome osjećaj bliskosti i pristupačnosti, a sve što mi kao konzumatori trebamo učiniti je ispružiti ruku i posegnuti za svojim komadom torte. Zvuči odlično. Zašto ne bi otišli korak dalje?

    S druge strane, ono što se događa u pozadini je da je vrijeme za većinu ljudi postalo bit života. Zaokupljeni produktivnošću i efikasnošću postajemo robovi moderne tehnologije, robovi vremena. Ljudi žele trenutne informacije, trenutni pristup svemu. Moderni čovjek više ne želi trošiti svoje vrijeme na čitanje dugačkih tekstova i knjiga; radije će pogledati sliku s tri opisna reda teksta ispod nje i odmah nakon toga se prebaciti na sljedeću. Modernom čovjeku je mrsko odvojiti svoje slobodno vrijeme za fizičko druženje s ljudima, lakše mu je razmjeniti nekoliko poruka preko chat-a. Moderni čovjek više ne ide u trgovinu po namirnice, pa čak ni ne kuha više; on sjedne za računalo, spoji se na Internet i naruči hranu da mu dođe na vrata! Zanimljivo je da tehnologija čovjeku pruža sve više i više mogućnosti i informacija u sve kraćim i kraćim vremenskim intervalima, a odrađenog posla i slobodnog vremena koje ljudima preostaje sve je manje i manje. Paradoks? Moderni čovjek u isto vrijeme žonglira poslom, učenjem, Google-anjem, email-om, chat-om, slušanjem glazbe, gledanjem videa, a pri tome jedva održava razinu koncentracije djeteta starog godinu dana i nije u stanju fokusirati se u potpunosti niti na jednu radnju koju „obavlja“.

    Zamislimo sada situaciju u kojoj bi u sebi imali ugrađeno umom pokretano računalo – cybermozak. Jedina stvar koja nas trenutno razdvaja od još veće razine lijenosti, asocijalnog ponašanja i nesposobnosti fokusiranja upravo je nedostatak izravnog sučelja s mozgom, odnosno potreba za fizičkim upravljanjem ulaznim jedinicama računala i buljenje u „zamorni ekran“ na što se ljudima opet – ne da trošiti vrijeme. Uklanjanjem tih prepreka, vjerojatno bi se oslobodila neslućena jednostavnost i brzina komunikacije između računala i čovjeka pa čak i međuljudske komunikacije koja bi u tom slučaju već, mogli bi reći, graničila s telepatijom. Jedina preostala potrebna stvar bila bi udoban ležaj iz kojega bi bez previše naprezanja mogli nesmetano upravljati i komunicirati sa svime oko sebe. Je li to ono što želimo, ono čemu trebamo težiti? Blokiranje pa čak i unazađivanje biološke evolucije u korist tehnologije, efikasnosti i kvazi-komfora?

    Tehnologija nas gura dalje od drugih ljudi, dalje od prirode. Čovjek je društveno biće i dok nas računala prividno zbližavaju i pojednostavljuju pojedine aspekte naših života, sve smo bliže trenutku kada više uopće nećemo imati potrebu izlaziti iz svojih kuća niti održavati bilo kakav oblik fizičkog kontakta s vanjskim svijetom pa čak ni ustajati iz kreveta! Interneta! Na iglu! Gdje li se izgubilo to „društveno“ u čovjeku? Zašto bi otišli korak dalje?!

    Srećom, još uvijek imamo izbor ne upaliti računalo, ne spojiti se na Internet, a mobitel i sve ostale gadgete ostaviti kod kuće u ladici i izaći na svjež zrak u šetnju s ljudima koji su nam dragi.

    A kad smo već kod toga – baš je lijepo vrijeme vani…”


    Sjedi 5.

Back to top