LubimyCzytać poleca książki otwartym algorytmem Filmastera

Serwis dla miłośników książek LubimyCzytać.pl wdrożył otwarty algorytm rekomendacji stworzony pierwotnie na potrzeby serwisu filmowego Filmaster.pl. Dzięki temu również bibliofile mogą teraz skorzystać z uroków spersonalizowanych sugestii, funkcji tak chwalonej przez kinomanów korzystających z Filmastera.

Wdrożenie było możliwe, gdyż algorytm stworzony przez zespół Filmastera opublikowany jest na licencji Affero GPLv3. Oznacza, że każdy może go wykorzystać w swoim projekcie, o ile wszelkie zmiany i poprawki udostępni publicznie na tej samej licencji.

To własnie potęga otwartości! Dobre rozwiązania, stworzone na potrzeby jednego projektu, szybko replikowane są w innych. Korzystają z tego wszyscy zainteresowani, gdyż algorytm unowocześniany przez kilka zespółów jednocześnie dąży do doskonałości szybciej niż ma to miejsce w przypadku zamkniętych, chronionych pod kluczem rozwiązań.

Marcin Szajda, twórca LubimyCzytać.pl, chwali wdrożenie:

Od dłuższego czasu poszukiwaliśmy rozwiązania, które na podstawie ocen użytkowników pozwoliłoby nam z dużą precyzją sugerować im książki warte przeczytania. Wybór padł na silnik rekomendacji Filmastera. Nowy silnik rekomendacji działa w serwisie od kilku dni, a odzew społeczności jest bardzo pozytywny. Każdy użytkownik, który ocenił w serwisie co najmniej 20 książek, otrzymuje codziennie aktualizowaną, pokategoryzowaną listę książek. Sam silnik nie jest trudny do wdrożenia, działa szybko, sprawnie i co najważniejsze bardzo dobrze poleca książki. Skuteczność algorytmu mierzona pierwiastkiem z błędu średniokwadratowego jest w granicach RMSE=0.88.

Jesteśmy bardzo zadowoleni z wdrożenia algorytmu rekomendacji Filmastera.

Autorem algorytmu rekomendacji jest Jakub Tlałka. Jego prezentację z Auli Polskiej można obejrzeć na stronie konferencji: Filmaster – komputerowe wróżbiarstwo czyli jak poprawić wyniki silnika rekomendacji o 20%? W miniony weeken Jakub na Jesieni Linuksowej w Ustroniu Jaszowcu, wygłosił również referat na temat rekomendacji, gdzie opowiedział m.in. o sposobach poprawiania skuteczności algorytmu. Wideo z tej prezentacji nie jest jeszcze dostępne.

Szczegółowo o algorytmie rekomendacji poczytać można na wiki projektu Filmaster: New recommendation engine, a na bitbuckecie ściągnąć można otwarty kod algorytmu.

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar oO
    oO

    Ciekawe kiedy usłyszymy, że jakaś zamkniętoźródłowa firma ukradła ten kod i go używa bez podzielenia się zmianami.

    Niestety takie oszustwa mają często miejsce przy open-source. Kradnie nawet „biedny” microsoft.

    1. Awatar trasz
      trasz

      Akurat Microsoftowi (w odroznieniu od na przyklad developerow Linuksowego kernela, ktorym zdarzylo sie ukrasc troche kodu z BSD) nigdy sie to nie przydarzylo – gdyby sie przydarzylo, natychmiast by to zauwazono i nakrecono afere. Aczkolwiek byla kiedys sytuacja, gdy jakis podwykonawca Microsoftu „pozyczyl” sobie kod na GPL w jakiejs bzdurce do wypalania plyt – Microsoft zachowal sie prawidlowo i rozdal calosc na GPL.)

      1. Awatar Bartek Krawczyk
        Bartek Krawczyk

        Jak można ukraść trochę kodu na licencji BSD?

        1. Awatar trasz
          trasz

          @Bartek Krawczyk: Naruszajac jej warunki, na przyklad usuwając ją ze źródeł i zastepujac licencją GPL.

        2. Awatar hind
          hind

          Wystarczy nie podawać info o autorze

        3. Awatar blinkkin
          blinkkin

          @Bartek Krawczyk: Usuwając/modyfikując oryginalny copyright jak to miało miejsce w przypadku sterownika ath5k.

        4. Awatar Poldek
          Poldek

          @blinkkin: OMG, BSD nie jest wolna, próbuje zawirusować czyjś kod!!111oneoneone

          de Raadt nie ma racji. Oczywiście, nie było to pewnie miłe i dla samego sterownika byłoby lepiej gdyby był licencjonowany podwójnie – co do meritum sprawy nie mam wątpliwości. Jednak cała reszta to bullshit – co to w ogóle za pomysł że modyfikując coś na BSD muszę to udostępnić na BSD?

        5. Awatar blinkkin
          blinkkin

          @Poldek: Chyba nie rozumiesz na jakich zasadach działa re-licencjonowanie BSD i prawa autorskie jako całość. Oryginalnego copyrightu nie można usunąć, bo to nic innego jak plagiat. Dodaje się po prostu drugą licencję do kodu.

          Zresztą dobry tego przykład to niedawna afera z plagiatem tekstu na vBeta.pl pochodzącego z OSblog.pl. Używana licencja Creative Commons 3.0 Uznanie Autorstwa na OSblog.pl jest bardzo liberalna i utwory pochodne mogą być licencjonowanie na czym tam chcesz. Jednak nie możesz sobie przywłaszczyć autorstwa tekstu.

          BSD to nie domena publiczna o czym wiele osób zapomina. Dwu-klauzulowa BSD gwarantuje praktycznie tylko uznanie autorstwa, ale tacy „ludzie” jak ty chcą i to usunąć.

        6. Awatar Reddie
          Reddie

          @Edek: a to nie była inna sytuacja, gdy okazało się, że jakiś dźwięk w Windows powstał przy użyciu zcrackowanego softu?

          @blinkkin: tym niemniej, pierwszy akapit komentarza Poldka – nadzwyczaj celny 😉

        7. Awatar trasz
          trasz

          @Poldek: BSD nie jest wirusowe. Modyfikujac cos na licencji BSD nie musisz udostepniac tego na licencji BSD. Po prostu nie wolno ci usunac tekstu licencji ze zrodel. Mozesz wlaczyc taki kod do projektu na dowolnej innej licencji, mozesz go zamknac, ogolnie – mozesz zrobic co chcesz, pod warunkiem, ze przestrzegasz tych dwoch (albo trzech, albo czterech, zaleznie od wersji) licencji.

        8. Awatar trasz
          trasz

          @Reddie: Pierwszy akapit komentarza Poldka jest kompletnie chybiony, poniewaz autor nie rozumie, czym jest wirusowosc. Wirusowosc GPL nie polega na tym, ze z kodu nie mozna usunac licencji GPL – wirusowosc GPL polega na tym, ze linkowanie z kodem na licencji GPL wymusza licencjonowanie linkowanego kawalka na GPL. Zadna inna licencja – ani open source, ani closed source – nie ma tej wlasciwosci.

        9. Awatar trasz
          trasz

          Jeszcze odnosnie podwojnego licencjonowania – podwojne licencjonowanie na BSD i GPL to bezsens. W praktyce taki kod jest na licencji BSD (podwojne licencjonowanie oznacza, ze mozna sobie wybrac, ktorej licencji chcemy przestrzegac; GPL to po prostu zbior dodatkowych zakazow i obostrzen, ktory kazdy moze olac, 'wybierajac’ sobie przestrzeganie BSD), a doklejona licencja GPL jedynie zaciemnia sprawe. Uzyty kod na licencji BSD najlepiej zostawic na licencji BSD, nie doklejajac zadnych kolejnych licencji, ktore i tak nie maja w tym przypadku znaczenia prawnego.

        10. Awatar blinkkin
          blinkkin

          @Reddie tym niemniej, pierwszy akapit komentarza Poldka – nadzwyczaj celny

          Całkowicie niecelny. Różnica jest taka, że modyfikacje kodu BSD (nawet jedna linijka) mogą być licencjonowane na czymkolwiek. W przypadku LGPL takie modyfikacje muszą już być na LGPL lub GPL, natomiast kod zewnętrzny „rozmawiający” przez API może być różnie licencjonowany. Natomiast w przypadku GPL wszystko musi być na GPL, nawet kod niebędący bezpośrednią modyfikacją.

          Prostszej licencji niż np. ISC nie da się napisać (o czymś już kiedyś wspominałem). Licencja, aby była prawidłowa musi posiadać przynajmniej jedno ograniczenie/warunek. Poniżej zamieszczam moje tłumaczenie (niekoniecznie prawidłowe) licencji ISC:

          Copyright © (rok), (posiadacz praw autorskich) (opcjonalnie adres e-mail)

          Pozwolenie na użycie, kopiowanie, modyfikowanie i/lub rozpowszechnianie tego oprogramowania w dowolnym celu, za lub bez opłatą(ty) jest niniejszym przyznane, pod warunkiem załączenia do wszystkich kopii, powyższego zastrzeżenia praw autorskich i noty zezwalającej.

          Warunek ten w praktyce nie stanowi żadnego problemu. Co więcej licencje BSD-like sprawiają mniej problemów prawnych niż domena publiczna.

          W każdym razie poznanie podstawowych zasad praw autorskich (czym jest plagiat, copyright etc) nie jest moim zdaniem odkrywcze. Źle świadczy to tylko o osobie, która koniecznie chciała wtrącić swoje 3-grosze.

        11. Awatar Ktos
          Ktos

          @Reddie:

          @Edek: a to nie była inna sytuacja, gdy okazało się, że jakiś dźwięk w Windows powstał przy użyciu zcrackowanego softu?

          Ja nie @Edek, ale wskażę: http://serwer22962.lh.pl/microsoft-przyznal-sie-do-uzycia-kodu-gpl-w-narzedziu-windows-7-usbdvd-tool/ (bo sam pisałem tego newsa ;-))

          Choć fakt, coś o crackowanym sofcie audio też kiedyś było.

        12. Awatar Reddie
          Reddie

          @Edek, blinkkin: przecież Poldek napisał to co napisał w formie ironiczno-prześmiewczej, celnie punktując fanbojów BSD dla których sensem życia jest narzekanie na GPL. A konkluzja powinna być taka, że niech każdy używa tego, co chce 😉

          @Ktos: ok, tak mi się skojarzyło.

        13. Awatar trasz
          trasz

          @Reddie: Analogicznie, (bodajze) Ballmer powiedzial to, co powiedzial – o Free Software i komunizmie – w formie ironiczno-przesmiewczej, celnie punktujac fanbojow Linuksa, dla ktorych sensem zycia jest narzekanie na Windows.

        14. Awatar Poldek
          Poldek

          Odpiszę zbiorczo.

          Nie mam zamiaru, jak i nikt z developerów Linuksowego kernela, nikomu nic odbierać. Tak się składa że całkiem nieźle znam sprawę tych sterowników i *NIE POPIERAM* tego co zrobił Jiri i to na kilku płaszczyznach. Uważam to za *błąd*. Jednakże:

          – informacja o autorach NIGDY NIE ZNIKNĘŁA, a jak się okazało była i tak niepełna: http://lwn.net/Articles/252542/
          – informacja o tym że sterownik bazuje na kodzie BSD pojawiła się bodajże następnego dnia, chyba również dodana przez Jiriego,
          – wątek wskazany przez blinkkina to tragifarsa

          Co do licencji dual: mają one bardzo duży sens, m.in. ze względu na czasami przykry fakt istnienia bibliotek GPL-only (przykład pierwszy z brzegu – Cygwin) oraz fakt istnienia projektów akceptujących tylko kod GPL. Ten dualizm jest przykładem tak ponoć wyznawanego przez fanów BSD racjonalizmu i podejścia wolnościowego.

        15. Awatar Reddie
          Reddie

          @Edek: z tego, co Ballmer powiedział, nijak nie wynika, jakoby nie mówił tego poważnie.

          W wypowiedzi Poldka wskazują na to takie odzywki jak „OMG” i „!!111oneoneone”, które – jak widać po dalszym ciągu komentarza – nie stanowią stałego elementu jego wypowiedzi.

        16. Awatar trasz
          trasz

          @Poldek: Biblioteki GPL-only mozna linkowac z kodem na BSD; nie trzeba BSD licencjonowac podwojnie. Projektom akceptujacym tylko kod na GPL mozna wytlumaczyc, jak dziala licencja – jesli nie zrozumieja, prawdopodobnie i tak niczego uzytecznego nie stworza.

          @Reddie: W przypadku Ballmera mozna spokojnie zalozyc, ze cokolwiek, co mowi, jest dla jaj.

        17. Awatar jarek
          jarek

          > co to w ogóle za pomysł że modyfikując coś na BSD muszę to udostępnić na BSD?

          Bredzisz, to jest wlasnie fundamentalna roznica miedzy
          GNU a BSD, biorac cos na licencji BSD nie musisz tego
          dalej udostepniac na BSD.

        18. Awatar Poldek
          Poldek

          @jarek: LOL! Powiedz to Theo, a nie mi.

        19. Awatar Poldek
          Poldek

          Widzę że mój poprzedni komentarz się nie ukazał, może jest jeszcze okazja do szybkich sprostowań:

          1) chłopaki od BSD – mega szacun bez ironii, jak mogę wyrazić wdzięczność? Może macie jakąś stronkę z prezentami które chcielibyście dostać?
          2) chłopaki od Linuksa – keep up the good work, i pamiętajcie o punkcie pierwszym i copyrightach.
          3) wszyscy niezaangażowani: to taki folklor. BSD jest fajne, ale czasami GPL jest fajniejsze. Jeżeli napisaliście coś, co powinno być standardem, to wszystkim będzie miło jeżeli będzie to BSD. Jeżeli jest to coś naprawdę innowacyjnego i bez odpowiedników, to zdania będą pewnie podzielone, ale i BSD i GPL może być dobrym wyborem. Jeżeli natomiast budujecie biznes wokół swojej różnicy od innych, to (A)GPL lub nawet licencja własnościowa pewnie będzie najfajniejsze. I tyle.

        20. Awatar jarek
          jarek

          @Poldek: LOL! Powiedz to Theo, a nie mi.

          Ktory to jest argument „LOL” czy „powiedz to Theo”?

        21. Awatar Poldek
          Poldek

          W chwili gdy to pisałem mojego poprzedniego komentarza jeszcze nie było :-). Ot, uroki moderowania (spoko, rozumiem),

          @blinkkin: Mimo iż jestem zatwardziałym linuksiarzem, jestem bardzo pozytywnie nastawiony do BSD. Znajdziesz mój kod w projektach GPL i BSD. Ponadto:

          @trasz: Biblioteki GPL-only mozna linkowac z kodem na BSD; nie trzeba BSD licencjonowac podwojnie – ja się z Tobą zgadzam, naprawdę! Nie chodzi jednak tylko o literę prawa, ale również odbiór w community. Jak sądzisz, co można znaleźć na listach dyskusyjnych Cygwina? I czy warto kogoś przekonywać? W imię czego, skoro nasze poprawki są i tak kosmetyczne? W naszym przypadku nie ma to większego sensu, zwłaszcza jeżeli udostępniamy na BSD/GPL narzędzie referencyjne wręcz *przeznaczone* do dalszej rozbudowy przez OEMów.

          @blinkkin: jestem zdania, że prawnicy wkraczają tam gdzie zawodzą obyczaje. Jak już wspomniałem, zgadzam się że Jiri popełnił w tym względzie błąd, niemniej jednak cały przytoczony przez Ciebie wątek odnoszący się do podwójnego licencjonowania nie ma kompletnie żadnej wartości logicznej – nie można nawet z czystym sumieniem powiedzieć że to same brednie, bo zdarzają się sensowne opinie ginące pod stosem innych komentarzy.

        22. Awatar Poldek
          Poldek

          @jarek: Jak już mówiłem, nie popieram tej akcji. Cytując Theo:

          That means (at some ethical or friendliness level) you probably do not want to put a GPL at the top of a BSD or ISC file, because you would be telling the people who wrote the BSD or ISC file: „Thanks for what you wrote, but this is a one-way street, you give us code, and we take it, we give you you nothing back. screw off.”

          At some ethical or friendliness level, to ja się zgadzam, jak już wielokrotnie w tym wątku wspomniałem. Ale co to ma do licencji, to w dalszym ciągu nie wiem.

        23. Awatar koniar
          koniar

          Zagadka z cyklu licencje – Mamy aplikacje napisana w QT(LGPL) skompilowana MinGW (w zaleznosci od kompentow GPL i Public Domain). Wszystko dynamicznie linkujemy. Pytanie – czy można zamknąć kod aplikacji ? biblioteki Qt oczywista sprawa, a co z tymi z MinGW (
          libgcc i mingw10) ??

        24. Awatar blinkkin
          blinkkin

          @koniar: libgcc posiada wyjątek na linkowanie (GPL linking exception). Natomiast biblioteka uruchomieniowa MinGW jest domeną publiczną. Więc nie powinno być problemów z zamknięciem kodu aplikacji. Dla pewności możesz zapytać się na liście dyskusyjnej MinGW.

        25. Awatar koniar
          koniar

          „You as a software manufacturer are free to use the MinGW runtime in your proprietary and OpenSource software as you see fit.” <- z MinGW
          ps. libgcc – tylko dynamicznie mozna ? dobrze to rozumiem ?

        26. Awatar blinkkin
          blinkkin

          @koniar ps. libgcc – tylko dynamicznie mozna ? dobrze to rozumiem ?

          Nie jestem pewien, ale chyba masz rację. W każdym razie lepiej użyć dynamicznego linkowania na wszelki wypadek. Zawsze o konkrety możesz zapytać się na liście dyskusyjnej GCC.

        27. Awatar koniar
          koniar

          …i tak linkuje dynamicznie
          … przeczytałem jeszcze exception i jest tam wyraźnie „the header files and runtime libraries covered by this Exception”, wiec inaczej sie nie da.

  2. Awatar Reddie
    Reddie

    @michuk: tak gwoli ścisłości, czy na AGPL jest kod źródłowy Filmastera z implementacją algorytmu, czy sam algorytm też jest gdzieś opisany i zlicencjonowany?

    1. Awatar Reddie
      Reddie

      Aha, poklikałem w linki i widzę, że jest dokumentacja algorytmu. Jednak wg. opisu, jedynie kod jest licencjonowany AGPL.

      1. Awatar michuk
        michuk

        Nie rozumiem. A co jeszcze oprócz kodu chcesz licencjonować? Dokumentacja jest na Creative Commons 3.0 Uznanie Autorstwa.

        1. Awatar Reddie
          Reddie

          @michuk: licencja AGPL dotyczy tej konkretnej implementacji. Czyli jeśli ktoś napisze sobie implementację w Ruby to licencja już go nie dotyczy.

          W zasadzie to chodzi mi o to zdanie:

          Wdrożenie było możliwe, gdyż algorytm stworzony przez zespół Filmastera opublikowany jest na licencji Affero GPLv3.

        2. Awatar michuk
          michuk

          Algorytmy nie mogą mieć licencji. Mogą co najwyżej być opatentowane. Ale w Polsce i UE nie obowiązują patenty na oprogramowanie. I bardzo dobrze.

        3. Awatar Reddie
          Reddie

          @michuk: jak już są opatentowane to mogą być udzielane na pewnych zasadach, i te zasady to właśnie licencja. I nie mówię czy to dobrze czy źle, tylko odnoszę się do konkretnego zdania z którego wynika właśnie, że algorytm _jest_ zlicencjonowany. Dzięki za wyjaśnienie 😛

        4. Awatar michuk
          michuk

          Nie są opatentowane. Przynajmniej w Polsce. Jeszcze raz: u nas nie da się opatentować algorytmu.

        5. Awatar Reddie
          Reddie

          @michuk: a czy ja mówiłem, że u nas?

  3. Awatar trasz
    trasz

    Chcialbym zauwazyc, ze wykorzystanie tego kodu zrodlowego jest niemozliwe m.in. w jakimkolwiek portalu wykorzystujacym kod WordPressa – WordPress jest na GPLv2, ktore jest niekompatybilne z AGPLv3.

    1. Awatar blinkkin
      blinkkin

      WordPress nie korzysta z tzw. „GPLv2-or-later”? W tym przypadku każdy może prze-licencjonować kod z GPLv2 na GPLv3. Co więcej nawet dodanie małego patcha na licencji GPLv3 spowodowałoby, że kod WordPressa efektywnie stałby się GPLv3.

      Tak, więc wszystko zależy czy WordPress posiada zapis „GPLv2-or-later”? Jeśli posiada to nie ma problemu z AGPLv3, jeśli nie to rzeczywiście jest niekompatybilny.

      Zresztą ciężko mi sobie wyobrazić przypadek, kiedy kod Filmasterowego „skryptu” napisanego w Pythonie, miesza się z PHP WordPressa. Tym bardziej, że Django (i inne Pythonowe frameworki) to popularne rozwiązanie.

      1. Awatar michuk
        michuk

        @blinkkin Kod rekomendacji jest w C++, nie w Pythonie. To samo w Pythonie działało ok 100 razy dłużej.
        @trasz Rekomendacje są na tyle oddzielone od reszty Filmastera, że nie jest problemem wziąć ten kod i w swoim projekcie wydzielić jako jako zewnętrzny moduł. Tak właśnie zrobiło LubimyCzytac, z naszym błogosławieństwem, co oznacza, że nie muszą całości swojego kodu udostępniać na AGPLv3, a jedynie poprawki do algorytmu.

        1. Awatar blinkkin
          blinkkin

          @michuk: Dzięki za sprostowanie. Nie sprawdziłem kodu, a przez sporą ilość statusów na identi.ca/blipie związanych z Filmasterem do głowy wbiło mi się Django 😉

  4. Awatar sadi
    sadi

    Postanowiłem zarejestrować się w serwisie i zobaczyć jak rzeczywiście działa ten algorytm.

    1. Awatar Ło$
      Ło$

      Jesteśmy z Ciebie dumni…

      1. Awatar sadi
        sadi

        To fajnie…

        A na serio algorytm działa, choć właściwie trudno mi powiedzieć jak dobrze. Akurat zaproponował mi samych autorów i książki, o których nigdy nie słyszałem.

  5. Awatar ptr
    ptr

    Wolę biblionetkę 🙂

  6. Awatar demaio
    demaio

    Nie do końca rozumiem zbitek ostatnich trzech słów tego wpisu. Otwarty kod algorytmu ? Algorytm to algorytm, a jego implementacja to już inna para kaloszy. Czy nie chodzi o to, że na bitbukecie można ściągnąć przykład implemntacji algorytmu, który jest oparta o liberalnej licencję, co może oznaczać, że fragmenty lub całość implementacji, podobnie jak sam algorytm, można wykorzystać we własnym projekcie ?

    Jeżeli się czepiam do wybaczcie, ale serio ostatnie zdanie jest dla mnie nieco niejednoznaczne.

    pozdrawiam
    S.Wojnowski
    wojnowski o wordpresie

    1. Awatar michuk
      michuk

      Tak, oczywiście chodzi o kod implementacji, a nie algorytmu. Algorytm nie ma kodu, bo to koncept. Ostati akapit to skrót myślowy po prostu.

      1. Awatar demaio
        demaio

        Borys,
        dzięki za słowo wyjaśnienia.

        Sorry za literówki w moim poprzednim komentarzu.

        Pozdrawiam
        S.Wojnowski

  7. Awatar vffdb
    vffdb

    LubimyCzytać.pl nie istnieje. Istnieje LubimyCzytac.pl a to różnica, dlaczego news jak i sama strona wprowadza w błąd?

    1. Awatar marcin
      marcin

      Domena lubimyczytać.pl wskazuje na tem sam serwis co domena lubimyczytac.pl tylko posiada polski znak w adresie. To jedno i to samo.

      1. Awatar vf
        vf

        Nieprawda. lubimyczytac.pl wskazuje na 178.63.65.137, natomiast lubimyczytać.pl NIE wskazuje na 178.63.65.137.

      2. Awatar vf
        vf

        Nieprawda. lubimyczytac.pl wskazuje na 78.63.65.137 a lubimyczytać.pl nie wskazuje na 78.63.65.137. To kolejny nieinternacjonalizacyjny adres do serwisu.

  8. Awatar marcin
    marcin

    Poczytaj: http://www.dns.pl/IDN/ lubimyczytać.pl to xn--lubimyczyta-vlb.pl. Jeżeli Twoja przeglądarka nie obsługuje konwersji to nie używaj adresu z „ć”.

  9. Awatar guitar
    guitar

    I’m impressed, I should say. Genuinely hardly ever before do I encounter a web site that may be both educative and entertaining, and allow me to let you know, you’ve hit the nail about the head. Your assumed is excellent; the problem is one thing that not adequate persons are talking intelligently about. I am really blissful that I stumbled all through this in my look for one factor referring to this

  10. Awatar Stop Dog Barking
    Stop Dog Barking

    I don’t normally comment on blogs.. But nice post! I just bookmarked your site

  11. Awatar Best Headphones
    Best Headphones

    Hey, Thanks for the info!

  12. Awatar Best Headphones
    Best Headphones

    Yeah i agree.

  13. Awatar Best Headphones
    Best Headphones

    Thanks! I was a little confused on the topic. Great post.

  14. Awatar Best Headphones
    Best Headphones

    Hello, glad i found your site. It helped me to understand the topic a bit better.

  15. Awatar Mohamed
    Mohamed

    Thanks for your information regarding this. You really helped me comprehend some things I didn’t before.

  16. Awatar Friendly Aquaponics
    Friendly Aquaponics

    I was more than happy to find this web-site.I wished to thanks to your time for this excellent read!! I positively enjoying every little little bit of it and I’ve you bookmarked to check out new stuff you blog post.

  17. Awatar disney lovers
    disney lovers

    One more thing. I think that there are numerous travel insurance web pages of reputable companies that permit you to enter a trip details to get you the prices. You can also purchase the particular international holiday insurance policy on the net by using your current credit card. All you need to do should be to enter the travel particulars and you can understand the plans side-by-side. Only find the package that suits your capacity to pay and needs and use your bank credit card to buy the idea. Travel insurance on the internet is a good way to check for a reputable company for international holiday insurance. Thanks for giving your ideas.

  18. Awatar Jewel Cordel
    Jewel Cordel

    Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *