O usłudze
PrzetłumaczoneJestem programistą Clojure i tworzę funkcjonalne usługi backendowe oraz aplikacje do przetwarzania danych działające na JVM. W centrum mojej pracy leżą niemutowalne struktury danych, czyste funkcje i kompozycyjny styl, w którym program budowany jest z małych, jasno nazwanych elementów, nad którymi można rzeczywiście rozumować. Ponieważ Clojure jest Lispu, moim głównym narzędziem jest REPL: rozwijam program interaktywnie, oceniam wyrażenia bezpośrednio na żywych danych i udoskonalam projekt w miarę postępu, zamiast zgadywać wszystko z góry i debugować później. To odrębna dyscyplina, w przeciwieństwie do pracy z Javą, Scalą czy Elixirem, i podchodzę do tego jako do rzemiosła, a nie Javy z nawiasami.
W wielowątkowości używam szczerze narzędzi, które daje język: atomy, refs, agenci i kanały core.async — według zadania, a nie mody. Zbudowałem usługi REST i strumieniowe HTTP na Ring i reitit, opisałem dane za pomocą spec i Malli, pracowałem z Postgres za pomocą next.jdbc i HoneySQL, przetwarzałem duże wolumeny za pomocą transduktorów i leniwych sekwencji, aby pamięć pozostała płaska. Dbam o staranną integrację z otaczającym ekosystemem JVM, sensowne obsługiwanie błędów i nudne w dobrym sensie wdrożenia. Jeśli kod rozwinął się w splątany stan, przywracam go do czystego rdzenia i cienkich krawędzi z efektami.
Jeśli masz usługę, która musi być poprawna pod obciążeniem, potok danych, który musi pozostać łatwy w utrzymaniu, lub projekt Clojure utknął w połowie drogi, podejmę się tego i poprowadzę go dalej. Piszę testy, które naprawiają zachowanie, dokumentuję złożone miejsca i zostawiam zdrowy proces REPL, aby następna osoba była produktywna od pierwszego dnia.
— Usługi backendowe w Clojure i ClojureScript dla JVM
— API REST i strumieniowe na Ring, reitit i core.async
— Modelowanie danych i walidacja za pomocą clojure.spec i Malli
— Praca z Postgres za pomocą next.jdbc, HoneySQL i puli połączeń
— Wielowątkowość z atomami, refs, agentami i kanałami
— Transduktory, leniwe sekwencje, przetwarzanie dużych wolumenów
— Rozwój napędzany REPL, testy i refaktoryzacja do czystych funkcji
W wielowątkowości używam szczerze narzędzi, które daje język: atomy, refs, agenci i kanały core.async — według zadania, a nie mody. Zbudowałem usługi REST i strumieniowe HTTP na Ring i reitit, opisałem dane za pomocą spec i Malli, pracowałem z Postgres za pomocą next.jdbc i HoneySQL, przetwarzałem duże wolumeny za pomocą transduktorów i leniwych sekwencji, aby pamięć pozostała płaska. Dbam o staranną integrację z otaczającym ekosystemem JVM, sensowne obsługiwanie błędów i nudne w dobrym sensie wdrożenia. Jeśli kod rozwinął się w splątany stan, przywracam go do czystego rdzenia i cienkich krawędzi z efektami.
Jeśli masz usługę, która musi być poprawna pod obciążeniem, potok danych, który musi pozostać łatwy w utrzymaniu, lub projekt Clojure utknął w połowie drogi, podejmę się tego i poprowadzę go dalej. Piszę testy, które naprawiają zachowanie, dokumentuję złożone miejsca i zostawiam zdrowy proces REPL, aby następna osoba była produktywna od pierwszego dnia.
— Usługi backendowe w Clojure i ClojureScript dla JVM
— API REST i strumieniowe na Ring, reitit i core.async
— Modelowanie danych i walidacja za pomocą clojure.spec i Malli
— Praca z Postgres za pomocą next.jdbc, HoneySQL i puli połączeń
— Wielowątkowość z atomami, refs, agentami i kanałami
— Transduktory, leniwe sekwencje, przetwarzanie dużych wolumenów
— Rozwój napędzany REPL, testy i refaktoryzacja do czystych funkcji