January
29th,
2023
I went to a meetup in my city last week and a guy I just met there popped a question after a while of conversation: with my experience, would I go for mobile software development again or pick a different area?
career
mobile
android
ios
flutter
April
4th,
2022
Tech Proposals są mniej formalnym sposobem na wewnętrzną dokumentację przed implementacją i usprawniają podejmowanie decyzji technicznych.
documentation
tech proposal
September
3rd,
2021
Android 11 (API 30) zmienia korzystanie z zewnętrznych serwisów aplikacji. Korzystając z `compileSdk 30`, bez odpowiedniego wpisu w Manifeście aplikacji `bindService()` zwróci `False`, mimo że z `compileSdk 29` będzie działać poprawnie. Chcę się podzielić rozwiązaniem, po zdecydowanie zbyt długiej walce z tym problemem.
Android
rant
fix
August
22nd,
2021
Wzorzec Command polega na opakowaniu żądania w konkretny obiekt, posiadający wszystkie informacje niezbędne do wykonania swojego zadania. Można o tym pomyśleć jak o kolejnym etapie refaktoryzacji, gdzie najpierw wydzielamy kod do osobnej metody, a następnie do osobnego obiektu, przyjmującego w konstruktorze argumenty potrzebne do wykonania żądania.
kotlin
Command Pattern
design patterns
August
6th,
2021
Podczas pracy nad pewnym projektem nie mogłem korzystać z 'Opcji Deweloperskich' Androida — nie miałem dostępu do logów. Gdyby tylko dało się wysyłać logi Logcata, np. przez websocket i potem łapać je na swoim komputerze... Nie znalazłem takiego narzędzia, więc je sobie napisałem i opisałem proces w tym poście.
tools
Android
Logcat
July
17th,
2021
Zadaniem Mediatora jest organizować komunikację między bliskimi klasami. Wzorzec `Mediator` uwalnia zależności pomiędzy komponentami. Przejmuje na siebie interakcję między nimi, stając się głównym hubem komunikacyjnym dla grupy klas. Odwracamy sterowanie, ponieważ komponenty zaczynają informować tylko 'co się stało', zamiast nakazywać innym, żeby 'coś zrobiły'. Można go spotkać np. pod postacią `ViewModel` w Androidzie, gdzie oddziela interakcje UI od zmian modelu danych.
kotlin
Mediator Pattern
design patterns
July
3rd,
2021
`Dekorator` stosuje się tam, gdzie tworzenie osobnych klas będących kombinacją wszystkich możliwości skończyłoby się ich eksplozją. Wzorzec ten skupia się na stworzeniu warstw obiektów w celu transparentnego i dynamicznego uzupełniania obiektów o kolejne zadania. Dekorator dostarcza obiekt, o takim samym interfejsie co obiekt dekorowany.
kotlin
Decorator Pattern
design patterns
extension methods
Wrapper
June
26th,
2021
Adapter lub Wrapper pozwala `przetłumaczyć` jeden interfejs na inny, oczekiwany przez klienta. Jest to szczególnie przydatne, gdy adaptowany obiekt pochodzi z niezależnej biblioteki i nie chcemy uzależniać naszego systemu od jego interfejsu, tworząc tzw. `anticorruption layer`. Zmiany interfejsu obiektu wpłyną tylko na `Adapter` a nie na resztę kodu.
design patterns
Kotlin
Adapter Pattern
structural design pattern
June
21st,
2021
IntelliJ IDEA całkiem sprawnie radzi sobie z obsługą LaTeX. Śmiem twierdzić, że jest to nawet lepsze doświadczenie niż TexStudio czy Texmaker, które są dedykowane do tego typu projektów. Jednak siła IntelliJ nie polega na możliwościach `out of the box` ale na plugin-ach i ręcznej konfiguracji procesu budowania.
IDE
plugins
IntelliJ
LaTeX
June
5th,
2021
Fasada pozwala a ukrycie szczegółów modułu przed klientami. Zapewnia przestrzeganie `Prawa Demeter`, a użycie ogólnego interfejsu i różnych implementacji znacząco ułatwia testowanie. Dobrze łączy się z innymi wzorcami takimi jak `Strategia`, `Metoda Szablonowa` czy konstrukcyjnymi pozwalającymi na konfigurację obiektu udostępnianego klientom. Fasada dobrze nadaje się na punkt wejścia dla bibliotek, dając klientom dostęp do wysokopoziomowych funkcjonalności i chowając całą wewnętrzną logikę i klasy.
design patterns
Kotlin
Facade Pattern
structural design pattern