Na wyspach
Na początku marca tego roku poszedłem do baru mlecznego na naleśniki. Zmieściłem tylko dwa i pół z zamówionych trzech. Więcej tam nie pójdę, ale nie dlatego, że mi nie smakowały. Kilka tygodni temu przeprowadziłem się do Londynu, więc niestety będę mógł się regularnie opychać żorskimi naleśnikami.
Powodem przeprowadzki była nowa praca. Jeszcze trzy lata temu, gdy wybrałem Clojure jako mój następny, główny język programowania, nie za bardzo wierzyłem, że będę kiedyś używał go w pracy. A dzisiaj używam Clojure pracując dla jednego z wielkich banków.
Dzielnica Londynu, w której pracuję, robi wrażenie. Jeszcze kilka miesięcy temu nie wiedziałem o istnieniu Canary Wharf, a stolica UK nie kojarzyła mi się nigdy ze szklanymi wieżowcami. Na jakieś szersze impresje z miasta jeszcze za wcześnie, muszę uporządkować parę spraw, dopiero wtedy włączę tryb turysty.Co ostatnio porabiałem?
Od września siedzę w Polsce, w swoim starym mieszkaniu. Nie mam za bardzo ochoty pisać o Danii. Poznałem mnóstwo fajnych ludzi itd. A pogoda wcale nie jest tam taka straszna.
Ostatnie kilka miesięcy spędziłem głównie na nauce; zacząłem pracę na pewnymi projektami. Jeden z nich powinienem skończyć niebawem. Drugi, którym jestem bardzo podjarany, zajmie mi co najmniej kilka miesięcy. Chciałbym też dobrze udokumentować jego develompent i rozważam kilka opcji (coś w stylu literate programming). Pod koniec zeszłego roku dołączyłem też do grupy tworzącej moda do Crysis'a. Jest to nieoficjalny sequel do Outcast'a, dobrze wspominanej gry wydanej pod koniec lat 90-tych (do kupienia na GOG.com). To, co do tej pory ten team wypuścił wygląda świetnie, zobacz sam. Zdradzę tylko, że w chwili obecnej pracuję nad narzędziami dla game designerów i zaznajamiam się z API CryEngine'u. Na koniec pro tip: kawa z odrobiną cynamonu smakuje lepiej.Bo ja w Danii siedzę
I bawię się całkiem nieźle.
Czasami ma się wrażenie, że to inna planeta. Jeden z moich kolegów ujął to w ten sposób: chciałbym, żeby moje dzieci tu dorastały.
Processing i Clojure
Skończyłem dzisiaj dziubać wrappera Processing w Clojure. Miałem go umieścić na githubie, ale ssh robi mi problemy (mam WinXP Home i nie mogę zmienić uprawnień kluczy...).
Update: Ok, pod linuksem push githuba poszedł bez problemu:
http://github.com/rosado/clj-processing/
MathTalker Wystartował
Parę dni temu wystartował MathTalker, mała web aplikacja postawiona na Google App Engine. Do czego to służy? MathTalker to chat room, ale z pewnymi bajerami, tzn. można używać składni podobnej do składni TeX-a, aby wprowadzać formuły matematyczne (TeX to narzędzie, którego używają m.in. matematycy do składania książek, artykułów i prac). Wprowadzone wzorki zostaną wyświetlone tak jak trzeba.
Są jednak pewne wymagania: Firefox 3 i specjalne czcionki matematyczne (szczegóły na stronie).
Jeśli interesują cię techniczne detale, zajrzyj na mojego anglojęzycznego bloga.
Funkcjonalnie
Ostatnio próbowałem przepisać pewien algorytm na generowanie permutacji w funkcyjny sposób. Oryginał napisano w C#, więc pełno tam efektów ubocznych. Moje pierwsze podejście użycia Clojure do odtworzenia tego algorytmu poszło mniej więcej tak:
Jak widać, zgubiłem się w połowie drogi. Ale to właśnie dostajesz,
gdy próbujesz pisać proceduralny/OO kod w funkcyjnym języku,
przy użyciu niezmiennych struktur danych. Zazwyczaj właściwą drogą
na wydostanie się z bajzlu, jak ten powyżej, jest użycie map lub
jej syntaktycznego brata: list comprehension (czyli makro forw Clojure).
Zabawa zakończyła się leniwie wartościowaną listą permutacji, przy czym leniwość kosztowała mnie zero wysiłku - dostałem ją za darmo od języka.
Pisanie w Clojure wciąż nie idzie mi zbyt płynnie, ale nie jest ani w ćwierci tak strasznie, jak wtedy, gdy próbowałem napisać coś sensownego (czyli nie "Hello world") w F#. Prawdopodobnie pomogło zaznajomienie się ze Scheme w ciągu zeszłych 2-3 miesięcy.
MGR
W środę obroniłem tytuł magistra. Poszło bardzo dobrze.
Dzisiaj wyprowadziłem się z akademika i pożegnałem ze studenckim życiem.
Przez najbliższy miesiąc będę kończył dwa zaczęte projekty (jeden w Javie, drugi w Pythonie+JavaScript). Muszę też podszkolić się z algorytmów (zwłaszcza grafy). No chciałbym znaleźć trochę czasu dla mojej nowej miłości: Clojure.
Status Update
Uczelnia
Mimo tego, że jestem na ostatnim semestrze, wciąż mam zajęcia na uczelni, kolokwia, referaty i inne atrakcje. Z tego powodu musiałem odstawić pisanie pracy na prawie 2 tygodnie. Ale od jutra biorę się za wprowadzanie poprawek.
BSG (bez spojlerów)
Próbuję przebrnąć przez trzeci sezon. W USA właśnie emitowany jest czwarty (i ostatni). Zaczęło się nieźle, nie licząc grubego Lee Adamy - co to miało być? Jakiś wątek, z którym scenarzyści nie wiedzieli co zrobić, lecz mimo tego nie wyrzucili go ze scenariusza.
Trochę Linuksa
Nie pamiętam jak to się zaczęło, ale w ciągu kilku ostatnich dni pracowałem głównie pod Linuksem. Unikam tego, bo nie działa hibernacja ani wstrzymanie systemu, czyli dwie podstawowe funkcje laptopa. Wiem, że przyczyną tej usterki są sterowniki ATI - trochę z tym powalczyłem, użyłem jakichś innych i hibernacja + resume zaczęły działać. Szok - nie myślałem, że dożyję tej chwili. Niestety ceną był brak akceleracji sprzętowej grafiki. Chwilowo nie było mi to potrzebne, więc nie musiałem restartować maszyny. Aż do wczoraj.
A gdy chciałem przywrócić poprzednią konfigurację, wszystko zaczęło się chrzanić: np. gdm nie chciał się uruchamiać przy starcie. Ostatecznie pomógł upgrade do nowej wersji Ubuntu, to jest 8.04. Oficjalne wydanie w czwartek, czyli za kilka dni, więc nie powinno być jakichś śmiertelnych bugów.
Rzeczy, które uprzyjemniły mi pracę pod Linuksem: ubuntustudio-theme (widok poniżej), gnome-do oraz schemat kolorów Oblivion dla edytora gedit.
Kolory
Prawdopodobnie TextMate dla Maca rozpowszechnił ciemne kolory w edytorach. Odkąd wypróbowałem podobnego schematu dla VisualStudio, nie mogę znieść "tradycyjnego", białego tła i czarnego tekstu. Za bardzo męczy oczy. gedit używa następujących kolorów:
tło: #2e3436 tekst: #d3d7cf
Update: jest podobny schemat dla vima: darkspectrum
Update 2: Nie mogę w to uwierzyć; teraz suspend i resume działa nawet z driverami ATI.








