About

I’m a pragmatic software engineer with diverse experience. I like to write about Android, Design Patterns and everything else I learned on the way.

I have extensive experience with legacy code, as well as launching fresh green-field projects.

Furthermore, I enjoy task automatization with a CI/CD approach in mind and have previously designed and implemented release procedures for mobile apps.

In my spare time, you can find me strumming my guitar 🎸, buried in books 📚, enjoying movies 🎥, or indulging in computer games 🎮. I also have a penchant for outdoor adventures like camping ⛺, hiking 🌄, and cruising on my motorcycle 🏍️.

Contact me

Find me on Linekdin / Github or just say Hello with an email.

You can also check my resume

Mentoring

Interested in mentoring session? Check below:

Projects

Sometimes I build something just because I want to :)

Biedra

This project started as recruitment task. Since then I rewrote it completly about 3 times, just to play with various libraries. I was changing HTTP stack, databases, presentation layer, I think I even used RxKotlin at some point. But I always had CI, some tests and clean domain layer there, so changing parts of the app was pretty easy.

Remote Logger

I was once tasked with spiking a vendor library/SDK integration. The problem was - the library was working only in Android release app mode, where generally you don’t get debugger. And I couldn’t make it work. So I wrote a little tool, that gathers logcat logs and sends them via websocket to a listening service. The logs are then printed in HTML with some colors etc. Recently I rewrote the server thing in GoLanghttps://www.linkedin.com/in/aswiderski/ as purely CLI tool.

Notti

Every one knows how Builder pattern works. It produces a valid object with some default values that can be overwritten with setters, if something is required it goes to the constructor. Well Google engineers had bit different idea, and I wasted 2 days debugging why notification is not being displayed at all in my app. So I created a little library that would prevent me (and others) from making this mistake again.

Frida playground

Sample app and scripts used to hack it using Frida. I wanted to play with this tool after some conference, and I didn’t find a nice all-in-one guide, so I wrote one and used this project for it.

AirRide

Android app for controlling car suspension via Bluetooth. A pet project I did with my brother, he took the hardware part using Arduino and some valves, I did the Android app programming. The app allowed creating loops of commands that could be played from a playlist, using phone accelerometer to send suspension commands, or using more traditional on-screen buttons.

Technologies

Random ordered list of tech I like to use

  • Android
  • Kotlin
  • Flutter
  • Spring
  • BLE
  • Dagger
  • Koin
  • Espresso
  • ExpressJS
  • Firebase
  • Genymotion
  • git
  • Gradle
  • JavaScript
  • Jira
  • JUnit
  • Linux
  • MongoDB
  • NodeJS
  • Realm Database
  • Room Persistence Library
  • RxJava
  • SonarQube
  • Detekt
  • Mockk
  • Spock
  • GraphQL
  • TypeScript
  • Jenkins
  • Docker
  • Figma
  • Confluence
  • Jira
  • Miro
  • Slack
  • IntelliJ Idea
  • VS Code
  • Postman
  • Insomnia
  • Swagger
  • Vim
  • Mermaid
  • NeoVim
  • GoLang
  • Domain Driven Design