On the edge

Wpadł mi w oczy esej http://paulgraham.com/startupideas.html i zacząłem się zastanawiać nad pewną kwestią. Ponieważ nie znalazłem takiego wątku, to zakładam i może jakaś ciekawa dyskusja się rozwinie.
Otóż… jeden z wniosków autora jeśli chodzi o pomysły na startup jest taki, żeby “żyć na krawędzi” (w technologicznym sensie ;)). Co prawda ja pomysłu na startup nie szukam (no, jak się przypadkiem pojawi to też się bronił nie będę). Ale od czasu do czasu bywa, że jestem “early adopterem” chociaż zauważyłem, że w wieku 20 lat żyje się na krawędzi cały czas a potem z wiekiem się człowiek z wolna “konserwuje”, zaczyna wybierać rozwiązania sprawdzone, stabilne i w miarę możliwości dochodowe… kosztem funu.
Dlatego chciałem zapytać:

  • jakie rzeczy (technologie, języki, paradygmaty, zastosowania i co tam jeszcze) według was w tej chwili mogą być uznawane jako “on the edge” (jest hype wokół nich, albo się zaczyna, albo wydaje się, że będzie niedługo), ograniczamy się w miarę możliwości do IT albo i jeszcze węziej, do webu.
  • czym się zajmujecie z tych rzeczy i w jakim stopniu jest to jazda po krawędzi :slight_smile:

Ja ze swojej strony mogę wskazać hype na języki funkcyjne (np. Clojure), język Go (http://www.golang.com), node.js to jest technologia krawędziowa ale z dużym szumem, nie wiem co jeszcze… pewnie Rails 4 też przez pewien czas będzie tylko dla odważnych :slight_smile:

Może Scala? Co odważniejsci już jej używają, ale jeszcze nie weszła do mainstreamu (btw niedługo kolejna edycja kursu scali na courserze). No i pewnie Ember.js, który jest wybierany przez bardziej ogarniętych i odrzucany przez innych wobec dość słabej jeszcze dokumentacji lub/i mniejszego skomplikowania (przy mniejszych aplikacjiach) innych frameworków.

Paul Graham to gość który napisał jeden (acz drogo sprzedany, fakt) startup w jednym z najstarszych języków programowania (lisp).
A wybrał akurat lispa nie dla oryginalności czy “życia na krawędzi”, tylko po prostu ponieważ ten język znał najlepiej i w nim najsprawniej się poruszał.

Nie odbieram mu mądrości ani autorytetu, ale warto zachować zdrowy dystans do wszystkiego co się czyta w internecie.

Oczywiście, że warto, nikt nie mówi że trzeba bezkrytycznie wszystko łykać. Ani tym bardziej, żeby się uczyć lispa z tego powodu :slight_smile:

O Scali słyszałem dużo sprzecznych opinii - poczynając od takich, że to totalna rewolucja po takie, że to odgrzewany kotlet bez narzędzi.

Sprawa jest prosta, opcje są dwie.

  1. Robisz serwis który rozwiązuje jakiś realny problem.
    Im bardziej serio to robisz, tym lepiej trzymać się technologii które jak najlepiej znasz. Będziesz miał do rozwiązania dość realnych problemów, ekhem, biznesowych, będzie głupio jeśli czas i siły trzeba będzie dzielić na rozwiązywanie problemów wynikających z wyboru technologii.

  2. Robisz serwis który ma służyć Twojemu poznaniu danej technologii.
    To nie wyklucza rozwiązywania realnych problemów, po prostu oznacza wyższy poziom trudności.

Punkt 2. lepiej realizować za pomocą małych i hobbystycznych projektów.

[quote=Tomash]Sprawa jest prosta, opcje są dwie.

  1. Robisz serwis który rozwiązuje jakiś realny problem.
    Im bardziej serio to robisz, tym lepiej trzymać się technologii które jak najlepiej znasz. Będziesz miał do rozwiązania dość realnych problemów, ekhem, biznesowych, będzie głupio jeśli czas i siły trzeba będzie dzielić na rozwiązywanie problemów wynikających z wyboru technologii.

  2. Robisz serwis który ma służyć Twojemu poznaniu danej technologii.
    To nie wyklucza rozwiązywania realnych problemów, po prostu oznacza wyższy poziom trudności.

Punkt 2. lepiej realizować za pomocą małych i hobbystycznych projektów.[/quote]
offtop: Ten post powinien być przyklejony i prezentowany wszystkim początkującym developerom z duszami startupowymi. Powaga - ile bym zaoszczędził czasu, gdyby mi to ktoś powiedział 5 lat temu… :slight_smile:

Z obydwoma punktami się zgadzam w 120%.

Ale przypominam - nie jest to wątek o startupach, ale o ciekawych technologiach, których się (nie)warto uczyć (bo wszyscy mówią, że to zabawki).

Uderzaj w zaawansowany javascript, w tym rich-client apps (backbone, ember, angular). To jest, to działa, tego będzie coraz więcej, niesie też ze sobą mnóstwo korzyści technologicznych.

Czego nie można powiedzieć o Scali (analogią ze świata muzycznego jest Sting który “dobrze się zapowiada” czwartą dekadę) i node.js :wink:

Trochę też zależy co chcesz robić poza webem. Jeśli mobilki, to oczywiście C# i/lub Java w wydaniu androidowym. Pojawienie się javascriptu jako języka pierwszej klasy na tych platformach jest oczekiwane trzeci rok i raczej nieprędko nastąpi.

Tomash to idealnie ujal - pokaz mi startup, ktorego przewaga technologiczna jest uzywanie technologii X zamiast Y. Bardziej chodzi o zastosowanie sprawdzonych technologii w nowym kontekscie biznesowym - z wyjatkami firm jak Basho, ktorych produktem JEST nowa technologia, ktora sami stworzyli (Riak)

Edge to rzecz mocno wzgledna. Uber korzystal z node.js 2 a moze i 3 lata temu. Ja od 1,5 roku pracuje przy projekcie zorientowanym na Scale - zorientowanym, bo calosc to hybryda napisana w Scali i w Javie (Spring + JPA) i dla mnie to juz nie jest zaden ‘edge’. Z wlasnych obserwacji dodalbym:

  • Cassandra / HBase / Redis / Riak - nie tyle jako technologie same w sobie, co jako element wiekszej calosci. Manning ma ksiazke w fazie ‘in progress’ pt. Big Data, ktora opisuje jak polaczyc te i kilka innych narzedzi do zbudowania (super)skalowanego :wink: systemu i (jak dla mnie) to mocno ciekawa lektura,

  • Backbone.js / Marionette itp. - w ramach innego projektu, uzywam tego jako bazy do… implementacji rozszerzenia do Chrome :slight_smile:

  • RabbitMQ i Storm - tu rowniez jako czesc wiekszej calosci zorientowanej na przetwarzanie szybko duzej ilosci danych.

  • Erlang - BO uzyty do napisania Riaka, bo uzywany przy RabbitMQ; jezyk na 1szym miejscu z mojej prywatnej listy ‘do nauki’ jeszcze w tym roku,

  • D3.js - zdecydowanie na fali, wg. mnie glownie dlatego ze nie jest to kolejna biblioteka do robienia wykresow w html5/js (vide raphaeljs), ale o wiele bardziej ogolne narzedzie z bardzo dobrym API. Ktore ladnie wspolgra z np. jQuery.

Ale mam inna recepte na poznawanie nowych rzeczy - zamiast hobbystycznych projektow lepiej poszukac komercyjnego, ktory postawil na kilka (albo choc jedna) nowa rzecz/technologie. Poniewaz jest nowa, nikt nie wymaga doswiadczenia w tej konkretnej, licza sie umiejetnosci nabyte wczesniej - i to jest wg. mnie najlepsza metoda na nauke/praktyke. A po 6ciu tygodniach ‘nowe’ przestanie byc ‘nowe’ :wink:

  • Redis - tak, tym się akurat bawię w swoim prywatnym projekcie. Początkowo wszystko miało być na Redisie ale potem jednak część danych przeniosłem na MySQL, z uwagi na wygodę (ORM). Do railsów jest fajny mapper (https://github.com/soveran/ohm) ale jak zacząłem w php to już tak zostanie. Za to zacząłem pisać swojego ORM-a do Redisa na wzór tego z Kohany.

  • JavaScript to już gdzieś pisałem, że lubię i staram się przyglądać tym nowym rzeczom. Problem jest tylko w tym, że jest mega hype na node.js + tysiąc innych bibliotek i frameworków cośtam.js, można się w tym pogubić :slight_smile: Chociaż z drugiej strony skoro wszystkie są na JS, to przynajmniej ze składnią nie ma problemu, tylko ściąga z API i można robić :slight_smile:

Byłbym daleki od nazywania języków funkcyjnych technologiczną krawędzią, bo nie mamy wtedy jak nazwać rzeczy, które powstały marne 15 lat temu.

Pamiętaj, że jak wybierasz technologię, nawet do projektu hobbistycznego, to warto, żeby była stosowana zgodnie z przeznaczeniem, redis się zasadniczo słabo nadaje do tego, żeby być główną bazą dla projektu. Zależy oczywiście od tego co to za projekt, ale jak sam napisałeś, przeniosłeś część rzeczy do MySQLa.

Na pewno można znaleźć takie projekty, źle dobrana technologia potrafi zaboleć w pewnym momencie. Co też bardzo dobrze pokazał hype node’a. Część ludzi zaczęła pracę nad projektami, do których node się zupełnie nie nadaje (stndardowe, ale spore, aplikacje internetowe) i znam przynajmniej 2 historie przerzucenia projektu z node’a na railsy, bo się okazało, że o ile do websocketów i asynchronicznych tasków, to node jest fajny, to jak trzeba napisać kilka tysięcy linii kodu dla zwykłej aplikacji, callback spaghetti zaczyna boleć.

Byłbym daleki od nazywania języków funkcyjnych technologiczną krawędzią, bo nie mamy wtedy jak nazwać rzeczy, które powstały marne 15 lat temu.[/quote]
Bardziej mi chodziło o sam powrót paradygmatu funkcyjnego. Technologie jak moda, przychodzą i odchodzą falami, za każdym razem przynosząc coś nowego. Przykład - Clojure (2007).

Pamiętaj, że jak wybierasz technologię, nawet do projektu hobbistycznego, to warto, żeby była stosowana zgodnie z przeznaczeniem, redis się zasadniczo słabo nadaje do tego, żeby być główną bazą dla projektu. Zależy oczywiście od tego co to za projekt, ale jak sam napisałeś, przeniosłeś część rzeczy do MySQLa.[/quote]
Tak jak Drogomir napisał. Inaczej będzie potem płacz że Redis ssie, bo nie nadaje się jako główny silnik do persystencji danych.

Wg. niektorych nadaje sie i to bardzo:

Wg. niektorych nadaje sie i to bardzo:

http://moot.it/blog/technology/redis-as-primary-datastore-wtf.html[/quote]
Ale przecież oni sami napisali, że generalnie nie powinno się stosować redisa jako głównego silnika bazodanowego, a ich use case jest specyficzny. Zobacz ile rzeczy trzeba zapewnić, żeby to działało dobrze.

Wg. niektorych nadaje sie i to bardzo:
http://moot.it/blog/technology/redis-as-primary-datastore-wtf.html[/quote]
Przeczytałeś cały tekst czy tylko tytuł i leada? :wink:

Ja chciałbym mieć czas na realizację hobby-projektu w celu zgłębienia Erlanga. Nie jest to może edge, bo jest obecny od wielu lat, ale ostatnio obserwuję hype w tym kierunku. Sami kiedyś w firmie zrealizowaliśmy jeden z kluczowych serwisów w Erlangu, ale wyleciał, bo zmieniły się wymagania biznesowe :).

Wg. niektorych nadaje sie i to bardzo:
http://moot.it/blog/technology/redis-as-primary-datastore-wtf.html[/quote]
Przeczytałeś cały tekst czy tylko tytuł i leada? ;)[/quote]
Przeczytalem - owszem, zaimplementowali mechanizmy extra zeby ‘zapewnic’ to co trzeba; ale podejscie uwazam za odwazne i godne uwagi :slight_smile:

[quote=mark][quote=Tomash][quote=mark]
Wg. niektorych nadaje sie i to bardzo:
http://moot.it/blog/technology/redis-as-primary-datastore-wtf.html[/quote]
Przeczytałeś cały tekst czy tylko tytuł i leada? ;)[/quote]
Przeczytalem - owszem, zaimplementowali mechanizmy extra zeby ‘zapewnic’ to co trzeba; ale podejscie uwazam za odwazne i godne uwagi :)[/quote]
Może i odważne, ale produkt niedopracowany. Założyłem konto i musiałem zresetować hasło. I nie mogę. Dla mnie to działa prawie tak dobrze jak nasze forum przeniesione na Rails/JS.