Archiwa kategorii: technikalia

Moja prywatna historia informatyki, cz. I – Atari

Wigilia Bożego Ciała, ten jeden środowy wieczór w roku ma dla mnie szczególnie znaczenie. To w taki właśnie wieczór, w środę 5 czerwca 1996 roku rozpoczęła się moja przygoda z informatyką. 3 dni wcześniej miałem Pierwszą Komunię Świętą i w tym ważnym dniu największą dla mnie radością – strach się przyznać – był fakt, że otrzymałem wystarczającą ilość pieniędzy by kupić sobie rower i komputer. Może raczej komputer i rower. To, dlaczego ten dzień był ważny z powodów bynajmniej niematerialnych, zrozumiałem nieco później… Ale wracając do adremu.

Maszyną jaką kupiłem od znajomego za przewrotną sumę 150 złotych polskich był wspaniały komputer Atari 65XE. W zestawie był magnetofon XC12, kupa kaset magnetofonowych, kilka książek i dwa numery czasopisma Tajemnice Atari. Być może niektórzy z P. T. czytelników potrzebują drobnego wyjaśnienia: przed masową inwazją dyskietek, nie mówiąc o płytach CD i DVD najpowszechniejszym sposobem utrwalenia programów i danych był zapis na kasecie. Zwykła magnetofonowa kaseta była jednakże nośnikiem (o takiego słowa się wtedy używało) dość zawodnym. Magnetofon należało często regulować (nazywało się to „dostrajaniem głowicy” i polegało na kręceniu śrubką), gdyż rozregulowany nie chciał odczytywać gier. Jaką to radością w tych strasznych czasach było poprawne wczytanie programu lub gry (trwało to około 15 minut, 15 minut stresu)!

Jednak owego pamiętnego, środowego wieczoru nie korzystałem z magnetofonu. Nie zapamiętałem niestety instrukcji, którą kolega mi podał, a do której należało się zastosować, chcąc uruchomić z kasety jakikolwiek program. W moje ręce wpadła jednak „dyskietka” (tak to wówczas nazywałem, choć poprawna nazwa to kartdridż – cartridge) z programem Atari Logo. Był to język programowania. Język dosyć niezwykły, trzeba dodać, gdyż jego ważnym elementem był żółw. Co więcej – żółw rysował. Ogrom instrukcji tego języka było instrukcjami, które kazały żółwiowi poruszyć się: do przodu, do tyłu, przekręcić się o X stopni w lewo lub w prawo, itd. Strasznie fajna zabawa dla dzieciaka i pozwoliła mi się zapoznać z tymi wszystkimi stopniami jeszcze zanim mieliśmy to w szkole. Na przykład, program rysujący trójkąt równoboczny o boku długości 40 mógł wyglądać tak:

RT 60
FD 40
RT 60
FD 40
RT 60
FD 40
RT - right turn, FD - forward.

Do kartdridża miałem książkę, która w przystępny dość sposób tłumaczyła tajniki programowania, a było to programowanie w paradygmacie strukturalnym – żeby narysować dom, najpierw uczyło się rysować drzwi, dach i okna – potem z tych gotowych kawałków składało się całość. Fajna sprawa.

Potem przyszedł kolega i nauczył mnie wgrywać gry z kaset. To była jazda. Grą, którą najbardziej zapamiętałem był genialny Robbo. Do dziś lubię sobie pokierować tym biednym robotem uwięzionym w obcym systemie planetarnym (jak to brzmi!). Wciąga i to mocno, nawet po, hmm… 19 latach od wydania.

Po pewnym czasie kupiłem nawet program pt. Robbo Konstruktor – umożliwiał on tworzenie własnych plansz do tej pięknej planszówki. Wiele godzin spędziłem nad zeszytem, w którym powstała plansza, wprowadzana następnie mozolnie do kompa. Świetna rozrywka, tym bardziej, że taką stworzoną planszę można było dać do przejścia kumplowi (który również wymyślał nowe plansze).

Wspomniałem jeszcze o gazetce Tajemnice Atari. Otrzymałem dwa numery wraz z kompem i wyczytałem je chyba do granic możliwości. Do dziś znam niektóry teksty z niej na pamięć i to było drugie (obok w/w książki o Logo i książki o Basicu) moje źródło o informatyce w ogóle. W chwili gdy kupiłem Atari, czyli w tym ’96 roku informatyka była już ostro do przodu, Tajemnice Atari były niewydawane od trzech lat, toteż nie miałem możliwości zdobycia kolejnych egzemplarzy – musiałem się zadowolić tym co mam. A w środku, obok artykułów i recenzji gier znajdowały się programy. Programy do przepisania. Niektóre – te napisane w języku Basic – miały postać czegoś, co przypominało nieco ludzką mowę. Tu i ówdzie pojawiał się jakiś for, jakiś return, data czy open. Gorzej było z programami napisanymi w języku maszynowym. Programy takie miały postać kilkustronicowych listingów składających się z linii takich jak poniższe:

1010 DATA ffffe002e102e0b1e0b150baa9
1020 DATA 0085e285e385e42049b2a9108d
1030 DATA d902a9038dda02a9218d2f02a9
1040 DATA 9b8d50baa98085f1a9ba85f2ad

Nie muszę mówić, że należało to przepisać bezbłędnie? Jednak nie było Internetu, nie było żadnych innych źródeł, co robić? Przepisywało się, czasem nawet to działało. Czasem tylko śniło mi się, że od kogoś udało się załatwić wszystkie numery Tajemnic Atari – było w to w rzeczy samej moje największe marzenie tamtego czasu. Spełniło się kilka lat później, dzięki Internetowi.

No, z tymi innymi źródłami może przesadziłem. W odległości 20 KM od mojej miejscowości był sklep, gdzie można było (za zawrotną sumę 5,90 zł) kupić kasety z grami. Gdy tylko udało mi się uzbierać tę wielką sumę, zaraz męczyłem rodziców, by udać się po jakąś nową grę. Gry czasem się wgrywały, czasem magnetofon odmawiał posłuszeństwa. Jednak te które się wgrały zapewniały rozrywkę na wiele godzin (bo nic innego nie było).

I tak się bawiłem tą Atarką, grałem i pisałem programy. Starałem się maksymalnie wykorzystać niewielkie możliwości mojej maszynki. Z ciekawszych rzeczy, to podłączyłem do komputerka silnik elektryczny (co umożliwiło sterowanie małym samochodem z Lego), czy też kilka kabli przy kubku z wodą pozwalało sprawdzić jej poziom i wyświetlić na ekranie. Nawet dziś nie robię już takich rzeczy ;).

Atari sprzedałem by kupić Amigę 600 (o której będzie następna część owego cyklu). Z czasem jednak sentyment zwyciężył – dziś jestem posiadaczem dwóch Atarek, z magnetofonem i stacją dyskietek! A jakie to dyskietki! Dorobiłem się także interfejsu, umożliwiającego podłączenie Atari do PC – mogę teraz ściągać gry z Internetu i przegrywać je na komputer, pamiętający jeszcze czasy, gdy U2 dopiero co obudzili się w Ameryce.

Linki i xkcd

Po prawej stronie dodałem listę blogów, które na bieżąco czytuję. Chciałbym polecić zwłaszcza stronę o niepozornej nazwie xkcd.com. Jest to internetowy komiks w klimacie romantyczno-ironiczno-matematyczno-językowym, z domieszką informatyki. Brzmi to dość dziwnie, ale klimat historyjek jest świetny – tak jak tej poniżej. Owszem – strasznie sentymentalna, ale ta domieszka fizyki sprawia, że wyznanie ma coś w sobie ;).

-Co robisz?

-Obracam się w kierunku przeciwnym do wskazówek zegara.
Każdy obrót zmniejsza moment pędu planety.
Spowalnia ją odrobinkę.
Wydłużając noc i odwlekając świt.
Co daje mi troszkę więcej czasu tutaj.
Z Tobą.

Widelec

Zdażyło mi się w życiu napisać już parę programów. Zwykle ważniejsze niż stukanie w klawisze jest tutaj stukanie się w głowę, by wymyśleć sposób, w jaki konkretny fragment otaczającej nas rzeczywistości przedstawić w jakimś miłym lub mniej miłym języku programowania. Zazwyczaj trzeba było ten fragment rzeczywistości rozłożyć na kilka elementarnych czynności, które po sobie występowały.

Programowanie strukturalne pozwoliło lepiej nieco te elementarne czynności przedstawić – najpierw można było napisać małe części – funkcje i procedury (np. „okno”, „drzwi”, „dach”), a potem z nich stworzyć większą całość – „dom”, np. każąc programowi stworzyć 4 okna i jeden dach. Nie trzeba było za każdym razem od nowa uczyć głupiego komputera, jak to okno ma wyglądać – wystarczyło zrobić to raz.

Kolejny krok – programowanie obiektowe – pozwala na jeszcze lepsze odwzorowanie rzeczywistości. Twórca takiego paradygmatu w programowaniu musiał być chyba zafascynowany platońską filozofią – ideami i przedmiotami je odzwierciedlającymi. Bo i w programowaniu obiektowym mamy idee (nazywane klasami) i przedmioty, które są namacalnymi tych idei przedstawieniami (nazywają się te przedmioty obiektami). Można więc stworzyć ideę – klasę okna, a później zrobić jedno okno drewniane, inne szklane, a wszystkie te obiekty są tego właśnie typu – okna.

Jednak prawdziwy przewrót kopernikański (w końcu w Toruniu) nastąpił, gdy poznałem funkcję fork. Funkcja ta nie jest bezpośrednio związana z paradygmatami o których wyżej, ale ma wielkie znaczenie, którego chyba sobie jeszcze do końca nie uświadomiłem. Otóż funkcja fork (z ang. widelec) sprawia, że program się rozwidla. Od momentu jej wywołania działają jednocześnie dwa programy, wykonujące te same instrukcje (jeden nazwany potomkiem, drugi rodzicem). No, może nie całkiem równocześnie, ale człowiek (ani program) i tak nie zauważy różnicy.

Każdy z tych dwóch programów jest w stanie sprawdzić, którą instancją jest, a nawet skomunikować się z tym drugim. Oczywiście byłem świadom istnienia takiej możliwości, a nawet tego, że jest dość często używana, ale co innego słyszeć, a co innego samemu użyć i zobaczyć, że to działa i jest dość proste. Już nie ciąg operacji następujących po sobie, ale dwa ciągi zdarzeń. Albo cztery. Albo 128. Wszytko naraz. W jednej chwili. Szok.

Synchronizacja PDA z Thunderbirdem

Wpis dość mocno techniczny, ale może się kiedyś komuś przyda. Na swoim laptopie korzystam z Linuksa. Do poczty używam programu Thunderbird (dostępnego zresztą także i pod Windowsy). Mój PDA (o którym gdzieś tam niżej) – czyli SPV M3100 vel HTC TyTN posiada możliwość synchronizowania kalendarza i listy kontaktów z komputerem. Niestety obsługiwany jest jedynie Windows z programem ActiveSync i MS Outlookiem. Wczoraj udało mi się znaleźć sposób na synchronizację z Linuksem. Oto ta metoda:

  1. Rejestrujemy się w ScheduleWorld.
  2. Na PDA instalujemy program Funambol, zapewniający obsługę protokołu SyncML.
  3. Na PC instalujemy plugin do Thunderbirda, zapewniający obsługę protokołu SyncML. Ten podlinkowany obsługuje tylko ScheduleWorld ale ma jedną zaletę – działa. Inne pluginy (Funambol i tsync) niestety nie działały.
  4. Konfigurujemy soft na PDA i PC do korzystania z naszego konta założonego w punkcie 1.
  5. Synchronizujemy.

W ten sam sposób można zapewne synchronizować książki adresowe innych urządzeń, obsługujących SyncML (np. większość nowszych komórek). No i mamy dostęp do naszych danych przez WWW – na stronie ScheduleWorld.

Mam PDA

Gdy byłem młodszy i oglądałem filmy przygodowe dla młodzieży (wiecie, te o grupce młodych ludzi którzy ratują świat przed globalnym zanieczyszczeniem, czy czymś jeszcze gorszym), często pojawiały się tam rozmaite gadżety. Jednym z najczęściej używanych był kieszonkowy komputerek z dostępem do jakiejś sieci (w chwili, gdy oglądałem te filmy, Internet nie był jeszcze chyba tak rozpowszechniony), pozwalający na przeprowadzenie telekonferencji. Bardzo chciałem wtedy mieć taki gadżet. Jakiś czas temu postanowiłem kupić sobie palmtopa (choć nie wiem, czy ma to związek z niezrealizowanymi dotąd marzeniami dzieciństwa).

Do tej pory miałem telefon Sony Ericsson P910i, który też jest już całkiem niezłym komputerkiem, ale to jeszcze nie to. Główną wadą był w jego przypadku brak WiFi – sieci bezprzewodowej, no i jego system operacyjny o dźwięcznej nazwie Symbian. Niestety jest na niego nieco mniej oprogramowania i ciężko jest (moim zdaniem) tworzyć własny soft, niż ma to miejsce w wypadku konkurencyjnego Windows Mobile.

Ponieważ nie chciałem nosić dwóch urządzeń jednocześnie (zabrakłoby w końcu kieszeni), postanowiłem rozglądnąć się za palmtopem, który miałby jednocześnie moduł GSM, czyli byłby między innymi telefonem. Szczególną uwagę zwróciłem na produkty firmy, która specjalizuje się w takich urządzonkach – mowa tu o HTC. Firma ta znana jest również jako SPV, a czasem jako MDA. Najpierw myślałem o M3000. Jest dość mały i sympatyczny, niestety ma już swoje lata. Jego wady to wolny procesor (200MHz) no i to, że wyszedł już ze sprzedaży oficjalnymi drogami dystrybucji. Ja i tak chciałem kupić model używany, ale brak wsparcia producenta oznacza w szczególności brak aktualizacji oprogramowania.

Rozejrzałem się więc za nieco nowszymi zabawkami. Bardzo zainteresował mnie M5000. Duży ekran (640×480), szybki procesor – super! Niestety duży ekran sprawia, że całe urządzenie jest dość duże. Nie ma tu mowy o noszeniu w kieszeni. Musiałbym więc nosić go w plecaku, a więc pewnie pozostawić sobie drugi telefon, by mieć go zawsze przy sobie. W pewnym momencie byłem o krok od kupna, jednak na Allegro wypatrzyłem w dość atrakcyjnej cenie model, który został w końcu moją własnością. Mowa tu o…

SPV M3100. Ten PDA ma mniejszy ekran (320×240), jednak dzięki temu mieści się bez problemu w kieszeni i jest w dodatku mniejszy od mojego poprzedniego telefonu. Ma szybki procesor (400MHz), dzięki czemu Windows Mobile się nie ślimaczy. Ponadto jest cały czas wspierany przez producenta, dzięki czemu od paru tygodni dostępny jest Windows Mobile 6 (poprzednie opisywane modele miały system w wersji 5). Fajnie, gdyby producenci komputerów również za darmo aktualizowali Windowsy ;).

Poza wspomnianymi wyżej cechami komputerek posiada pełną wysuwaną klawiaturę QWERTY. Ułatwia to bardzo pisanie SMS-ów, maili, czy korzystanie z innych aplikacji (w Windows Mobile jest Word, Excel i PowerPoint). Wbudowane są także dwa aparaty. Ten z tyłu ma 2 megapiksele i służy do nagrywania filmów/zdjęć (choć osobiście nie lubię korzystać z tej funkcji jakichkolwiek urządzeń, nie będących aparatami fotograficznymi). Kamerka z przodu może służyć do prowadzenia telekonferencji. Być może Skype będzie kiedyś obsługiwał to urządzenie?

Urządzenie posiada również interfejsy IrDA (może przy zainstalować oprogramowanie do sterowania domowym sprzętem RTV bezpośrednio z PDA – tak jak zwykłym pilotem), bluetooth oraz WiFi. Mnie najbardziej cieszy ten ostatni – przy dużej dostępności sieci bezprzewodowych, można rzeczywiście powiedzieć, że Internet jest wszędzie :). Tam gdzie nie ma WiFi, można się łączyć przez GPRS, Edge i UMTS. Jest również port mini-USB, do zasilania, słuchawek i synchronizacji. No i port kart – microSD (dość tanie, na Allegro 70zł za 2GB, z gwarancją).

Minusem są słuchawki. Nie ma tu normalnego wejścia słuchawkowego (mini-jack) a jedynie wejście mini-USB i trzeba wydawać kolejne pieniądze na odpowiednie przejściówki.

A jakie odczucia z samego użytkowania? Dość szybko przyzwyczaiłem się do Windowsa, telefon posiada fajny kalendarz i książkę adresową. Wszystko to można synchronizować z Outlookiem. Niestety, użytkownik Linuksa z Thunderbirdem nie będzie korzystał z tej opcji zbyt często. Poza tym możliwości są naprawdę ogromne – od gier (Worms World Party, Age of Empires, Tomb Raider – wszystko tak wygląda i brzmi jak na PC), aż po soft naukowy (są tu nawet poważne systemy Computer Algebra System – tak więc mój PDA może scałkować jakieś wredne funkcje za mnie ;).

Student informatyki może sobie również ściągnąć za darmo Microsoft Visual Studio 2005 (dzięki uczelnianemu programowi MSDNAA), odpowiednie dodatki i samemu pisać oprogramowanie na to cudeńko. Oczywiście skorzystałem z tej możliwości. Owocem moich 4-dniowych męk jest programik wyświetlający nazwę danego dnia z kalendarza liturgicznego (np. dziś jest to XXII Niedziela okresu zwykłego). Programuje się całkiem przyjemnie, po raz pierwszy pisałem coś większego w C# – nowym (no, parę lat…) języku Microsoftu. Pisanie dla PDA nie różni się niczym od pisania dla zwykłego komputera, do momentu, gdy chciałoby się wykorzystać jakieś szczególne funkcje, których na zwykłym PC się nie uświadczy. Na przykład korzystanie z tego ekranu, na którym są wyświetlone różne informacje (nazywa się to Today screen) to prawdziwa mordęga…

Gdyby ktoś chciał, to może sobie ściągnąć pliczek i zainstalować na swoim PDA. Dołożyłem wszelkich starań, żeby wszystko działało OK, ale nie odpowiadam za błędne działanie programu. Powinno działać pod Windows Mobile 6, jeśli ktoś chce, żeby mu skompilować pod wcześniejszy system, niech da znać.

Projekt w Ruby

Zafascynowany możliwościami Ruby on Rails, w tej właśnie technologii stworzyłem prosty serwis. Mini CMS+mini galeria. Rzeczywiście, pisało się to dość przyjemnie (zwłaszcza, że jest taki fajny edytor), jednak wydaje mi się, że RoR pokazuje w pełni swoje możliwości przy czymś większym.

Może by tak YAAP-a przenieść?

„Przerwa na reklamę”: expen.pl

Wczoraj swoją komercyjną działalność rozpoczął serwis expen.pl, który wykonałem na warszawskiej firmy Infostolica. Działalność serwisu polega na pośredniczeniu w konsultacjach telefonicznych między Klientami a Ekspertami. Przykładowo, ktoś może posiadać dużą wiedzę z zakresu prawa administracyjnego. Osoba taka rejestruje się w serwisie jako Ekspert, ściąga sobie program do obsługi telefonii internetowej (dowolny klient SIP) i czeka na telefony od żądnych wiedzy klientów. Klienci widząc, że Ekspert jest dostępny, mogą do niego zadzwonić używając telefonii internetowej. Mogą również nawiązać połączenie korzystając ze zwykłego telefonu (dokładniej wygląda to tak, że to expen.pl dzwoni wtedy i do Klienta i do Eksperta). Oczywiście wszystko to nie jest jedynie czynem społecznym – Klienci płacą za połączenie zgodnie ze stawką wybraną przez Eksperta, zaś expen.pl i Ekspert dzielą się zyskami z każdej rozmowy.

Oczywiście istnieje możliwość złożenia „reklamacji”, jeśli dana konsultacja nie spełni oczekiwań Klienta. Każda konsultacja może być oceniona przez Klienta. Każdy też może zapoznać się ze średnią oceną danego Eksperta jak i z ilością jego punktów (punkty te zależą nie tylko od oceny, ale również np. od szybkości odebrania telefonu).

Uczę się japońskiego języka

Wbrew pozorom, szyk wyrazów w tytule jest poprawny. Ale zacznijmy od początku.

Od pewnego czasu w różnych miejscach sieci migała mi nazwa rewolucyjnego – jakoby – frameworka o nazwie Ruby on Rails. Framework jest pewnym szkieletem, o który można oprzeć swoją aplikację – dzięki czemu nie trzeba się martwić np. o przejrzysty układ katalogów, o procedury obsługi bazy danych, etc. Do tej pory programowałem głównie w PHP i uważałem, że język ten jest całkiem przyjemny i dobrze nadaje się do zastosowań, do których go używam. Stosowanie frameworków PHP uważałem raczej za stratę czasu i ograniczenie elastyczności (chyba, że mój własny prosty schemat, wg. którego budowałem większość aplikacji, można nazwać frameworkiem).

Jednakże, jak już powiedziałem, buszując w Internecie zacząłem dość często natrafiać na strony poświęcone Ruby on Rails. Trafiłem tak na blog Jarosława Zabiełły, na polską stronę Railsów, wreszcie na stronę główną i na 15-minutowy filmik (screencast). Filmik ten przedstawiał ni mniej ni więcej, a tworzenie (od zera) systemu obsługi bloga. Zainteresowało mnie to – blog w 15 minut?

Poszperałem dalej. Zwykle z nieufnością podchodzę do sformułowań w stylu: „programowanie aplikacji internetowych nigdy nie było tak proste!”, jednak pewne argumenty (np. niesamowita szybkość i oszczędność kodu) powtarzały się we wszystkich miejscach poświęconych RoR.

Czym więc właściwie są te Railsy?

Jak już napisałem powyżej, Ruby on Rails to framework, znakomicie ułatwiający tworzenie aplikacji internetowych w języku Ruby. Język Ruby jest językiem stworzonym 12 lat temu w Japonii. Jest on w pełni obiektowy i pozwala dowolnie się modyfikować (można np. sposób, w jaki język obsługuje liczby całkowite). Railsy zostały stworzone kilka lat temu przez Duńczyka – Davida Heinemeiera Hanssona. Stanowią one kompletny i jednolity system, pozwalający tworzyć aplikacje w oparciu o architekturę (jak to strasznie brzmi!) Model-Widok-Kontroler (MVC).

Po zapoznaniu się z informacjami nt. RoR, pomyślałem, że jeśli wszystko co do tej pory przeczytałem jest prawdą, to jest to system nadający się idealnie dla mnie. Wizja systemu, który sam wykona za mnie najczarniejszą robotę (komunikacja z bazą danych na przykład) bardzo mi się spodobała. Tak bardzo, że postanowiłem zakupić książkę i po prostu się Railsów nauczyć. Niestety, w ofercie polskiego wydawcy nie znalazłem nic, co by mnie szczególnie zainteresowało. Znalazłem natomiast (już na innych stronach) opis książki Agile Web Development with Rails. Książka ta miała pochlebne recenzje. Jak jednak sprowadzić sobie tę książkę z zagranicznego wydawnictwa? Z pomocą przyszedł Empik.

Zamówiłem więc w niedzielę wieczorem. We wtorek rano dostałem informacje, że mogę odebrać książkę w wybranym punkcie. Tekst z tyłu okładki wyglądał zachęcająco: Twoim zadaniem jest napisać wysokiej jakości, pięknie wyglądającą aplikację internetową. Ma być gotowa na jutro, ale będziesz się nią opiekował przez lata. Chcesz użyć sztuczek takich jak AJAX by uczynić swoje aplikacje prostsze w obsłudze i lepiej odpowiadające potrzebom klientów. Chcesz również użyć technik takich jak REST, by Twoje aplikacje mogły łatwo współdziałać z innymi aplikacjami. Ruby on Rails może być tym, czego szukasz.

No i zacząłem czytać. Dawno nie miałem takiej frajdy. Pomyślałem, że jeśli chcę dobrze nauczyć się tego języka i tego frameworka, to będę sumiennie wykonywał krok po kroku wszystko tak, jak jest to zapisane w książce. Jest to strasznie fajne. W dzieciństwie lubiłem układać budowle z klocków LEGO, zgodnie z zamieszczonymi instrukcjami (by później rzecz jasna utworzyć coś własnego). Nauka RoR przypomina z Agile Web Development przypomina mi tamte zabawy. Czemu tak mi się te Railsy podobają? Otóż:

  • Pozwalają zachować porządek. Każdy element aplikacji ma tu swoje miejsce, nazwę i zakres działań – wszystko ustalone z góry. Nie muszę się martwić o wymyślenie struktury tego wszystkiego – Rails robi to za mnie.
  • Są jednolite i konsekwentne. Bardzo lubię, gdy coś jest konsekwentne. Tutaj wszystkie stosowane konwencje (np. nazwy obiektów) są ustalone i przestrzegane. W PHP panuje pod tym względem pełna samowola (do niektórych funkcji można się dostać jedynie tworząc odpowiedni obiekt, nazwy niektórych funkcji sanierozdzielone, inne są_rozdzielone_podkreśleniami).
  • Posiadają ActiveController. Od długiego czasu szukałem do PHP jakiegoś systemu, który odczytałby stworzoną przez mnie bazę danych i na jej podstawie stworzył odpowiednie klasy, ze wszystkimi zależnościami, z możliwością rozszerzenia, itd. ActiveController robi to wszystko przy minimalnym udziale użytkownika (dyrektywy w stylu belongs_to lub has_many). Żadnej dodatkowej konfiguracji!
  • Bajecznie prosta obsługa AJAX-a. Możliwe jest uzyskanie nieprzeładowujących się stron dzięki zamianie jedynie kilku linii.

Myślę, że takich takich pozytywnych cech jest więcej – zapewne coś jeszcze o RoR pojawi się na blogu. Polecam.