Archiwum Praktyki

Nie ma darmowych obiadów

Przeglądam zaległe RSSy i trafiłem na grudniowego (sic!) newsa o wypuszczeniu stabilnej wersji 2.0 Railsów. Prześliznąłem się okiem po liście ficzerów, a ponieważ wyżywałem się już na niej napiszę o pewnym bardziej ogólnym spostrzeżeniu które przyszło mi do głowy…
Przeczytaj cały wpis »

[]

Komentarze (4)

Gemino.pl - First In First Out

gemino.plPanuje powszechne przekonanie, że sukces biznesu działającego w sieci w sposób szczególny zależy od przewagi uzyskanej z racji pierwszeństwa (first mover advantage). W rzeczywistości wcale nie musi być to prawdą.
Dziś mam przyjemność zaprezentować Wam wywiad, jaki przeprowadziłem z twórcą pierwszej porównywarki cen w polskim internecie. Porównywarki która ostatecznie zakończyła swój żywot kilka miesięcy temu nie odnosząc sukcesu. Jak już kilkukrotnie podkreślałem uważam takie historie za szczególnie pouczające - odnosząc sukces zwykle nie bardzo wiadomo co było jego przyczyną, ale też nie ma po co zawracać sobie tym głowy. Porażka odniesiona mimo zaangażowania i włożonej pracy zawsze zmusza do przemyśleń, dlatego jak sądzę takie historie są szczególnie cenne. Warto też pamiętać, że porażka to nic wstydliwego, Henry Ford zwykł mawiać:

Failure is only the opportunity to begin again more intelligently.

Zapraszam do wywiadu z Markiem Berkanem twórcą gemino.pl.
Przeczytaj cały wpis »

[]

Komentarze (3)

Nie ma róży bez twarzy?

Co ma wspólnego róża polarna z rozpoznawaniem twarzy? Jak to jest gdy odchodzi się z corpo do startupu? Jak finansowane są inne startupy w Europie? O tym wszystkim rozmawiam z Tomkiem - jedną z pierwszych osób w Polsce zaangażowaną przez startup Polar Rose.
Przeczytaj cały wpis »

[]

Komentarze (11)

Największy kawałek kodu…

Dziś w webankiecie miał premierę nowy moduł pozwalający na zmianę wyglądu ankiety samodzielnie przez użytkownika. Projektując ten moduł doszedłem do wniosku, że aby dać prawdziwą moc w ręce ludu będę zmuszony stworzyć szereg małych edytorów pozwalających na zmianę parametrów poszczególnych atrybutów CSS. Dopiero te edytory mogą utworzyć coś co będzie można nazwać edytorem szablonów. Aby pokazać co mam na myśli mówiąc o edytorach oto rysunek z instrukcji prezentujący edytor dla obramowań:

Edytor obramowań

Zadanie było o tyle ambitne, że zwykle rozwiązania szumnie nazywane edytorami szablonów sprowadzają się do możliwości zmiany kolorów tła (mam na myśli oczywiście rozwiązania w aplikacjach webowych). Planowane przeze mnie rozszerzenie interakcji użytkownika ze stroną wymagało dosyć rozważnego podejmowania decyzji dot. sposobu implementacji.

Na pierwszy ogień poszedł RJS, wkrótce jednak okazało się, że w tym przypadku jego zalety stają sie przekleństwem. Konieczność ‘konsultowania’ z serwerem każdej akcji wykonanej w UI przez użytkownika wiązała się z przesadnie wielką liczbą gadek klient-serwer, a w efekcie cały edytor sprawiał wrażenie niemrawego. Przy okazji sprawdziłem w praktyce, że przy bardziej skomplikowanych konstruktach RJS ma poważną wadę - wymaga ciągłego przełączania kontekstu mentalnego pomiędzy Ruby a JavaScript. Wydaje się, że helpery dostarczane przez railsy eliminują tą konieczność - praktyka pokazuje, że jednak nie. Gdy do tego dołożymy potrzebę sporej elastyczności na etapie projektowania interakcji (nie wszystko da się zasymulować na kartce papieru - czasem trzeba też poklikać) - RJS wypada niestety słabo.

Na czym stanęło? Na banalnie prostym podziale - niech każdy robi to na czym się zna najlepiej. Przeglądarka rysuje html do którego dopinane są JavaScriptowe kontrolery - razem tworząc żywe i reagujące na zmiany kontrolki. Poszczególnymi edytorami zarządza jeden główny kontroler, którego zasadniczym zadaniem jest wymiana danych z serwerem. Przez dane rozumiem tu już tylko gotowe informacje o parametrach szablonu, któresą przesyłane na serwer jako JSON. Serwer zajmuje się więc tylko zamianą otrzymanego JSONa na CSS (za pomocą zwykłego szablonu ERb). Takie naturalne rozdzielenie zakresu obowiązków spowodowało znaczne uproszczenie w pracy nad modułem - nie było potrzebne choćby ciągłe przełączanie kontekstów mentalnych :) Po przygotowaniu części serverside i otestowaniu generacji CSSa spokojnie mogłem przesiąść się na pracę tylko z częścią klienta.
A końcowy efekt? To największy spójny (w sensie poświęcony temu samemu zadaniu) fragment kodu w JavaScript jaki napisałem :) źródła mają w sumie ok. 120kB.

Jak mój wypasiony edytor szablonów działa w praktyce? Zapraszam do wersji demo webankiety.

[ ]

Komentarze (2)

Druga twarz Blipa

Co zrobił ze swoim milionem za Blipa ;)? Czy GG jest “imperium zła”? Jak testuje kod i jakich narzędzi używa? Oraz o to co radzi przyszłym założycielom startup’ów zapytałem “drugą twarz” Blipa.
Przeczytaj cały wpis »

[]

Komentarze (6)

« Poprzednie wpisy · Następne wpisy »