Ivan Rublev

I’m an Elixir Engineer

I make backend services in Elixir and use Phoenix as a Web framework. I apply contemporary technologies like a LiveView to implement interactive Web-sites.

I follow Test-first Development and Domain Driven Design principles in functional programming and prefer to build backend software using the Hexagonal Architecture by Alistair Cockburn.

I used to be an iOS and macOS developer and consultant

And as one can tell — there are no former iOS developers. I wrote apps in Swift and Objective-C with the XCode and used the CocoaPods as the package manager.

In imperative object-oriented programming, I follow SOLID principles and prefer to build software using Clean Architecture by Robert C. Martin.

As for me, following the business value is one of the possible recipes for good software. I prefer to use an Agile software development process.

I’m keen on sharing knowledge and taking part in IT conferences and meetups regularly. Some examples are ElixirConf EU, and hh.ex Hamburg Elixir Meetup.


  • LinkedIn
  • GitHub

Elixir works

Twitter Wall

A microservice in Elixir that displays liked and posted tweets from a specified account.

It aggregates liked and posted tweets, sorts by date, take first N, and renders them into Html to be displayed. The source code can be found on the GitHub.

An example of the microservice's output with a mix of four tweets from the author's Twitter account is presented below.

Methodologies

Test Driven Development, Hexagonal Architecture, Heroku's Twelve-Factor App.

Tools

Elixir 1.9.x, Erlang 22, Phoenix 1.4.x, Mix, Git, VSCode, Coveralls (for the test coverage), Credo (for syntax analysis), Sobelow (for security static analysis), direnv (for environment variables management), Dialyzer, Bash, Docker, TravisCI, Gigalixir (hosting).

Hex packages and technologies

Tesla HTTP client, Twitter API 2.0, oauther OAuth 2.0, joken JSON Web tokens, GenServer Cache output, OTP Supervisor Cache keep alive, timex Time calculations, corsica Cross-Origin Resource Sharing headers, mox Mocks generation, knigge Dependency injection

Accomplishment

I made this backend application to aggregate tweets from two Twitter API endpoints authenticating with OAuth 2.0, to process aggregated tweets, and to serve the result in two forms. First, in the form of a Web-page, and, second, in the form of a microservice HTTPs endpoint. The microservice endpoint requires the authentication header value to be set to a JWT token signed with a defined secret. Two GenServers are used to keep the processing result cached in memory, and to refresh the cache on set period of time appropriately. Erlang OTP Supervisor is used to make the Caching GenServers to survive unpredicted crashes. The outcome is a secure highly available web-service with the average answer time of 142ms.


iOS works

Ringer app

Universal app for iPhone and iPad. Made it just for fun.

It’s like repeating timer app but for only one most important thing. In contrast to the native Timer app, it alarms with sound and then repeats the countdown automatically unless the Auto Stop time comes.

Ringer app

Methodologies

Clean Architecture, SOLID principles.

Tools

Objective-C, XCode, iOS 9.x-10.x SDK, CocoaPods, HockeyApp (for crash reporting), GoogleAnalytics, Unit Tests via Quick/Nimble.

iOS frameworks and technologies

Local Notifications, UserNotifications, Background Content Download, Background Execution, CoreSpotlight, MediaPlayer, AVFoundation, GCD, NSOperationQueue, NSURLSession, CallKit, CoreTelephony, StoreKit, State Restoration.

Accomplishment

In this app I’ve implemented the Clean Architecture by Robert C. Martin. As consequence new features can be inserted faster, the code was covered with unit tests easily.


macOS work

Video recording app

App for my client working in macOS 10.9-10.11.

This app records video and uploads it to Amazon AWS S3.

Video recording app

Methodologies

Model View Controller approach, SOLID principles.

Tools

Swift 2.3, XCode, OSX 10.11 SDK, CocoaPods, HockeyApp (for crash reporting), Unit Tests via Quick/Nimble.

macOS frameworks and technologies

AppKit, Alamofire, ObjectMapper, REST, JSON, AmazonS3RequestManager, AVFoundation, CoreMedia, GLKit, GCD, NSOperationQueue, Darwin level file reading, Custom Framework with UI controls.

Accomplishment

This is a production app mostly written in Swift with small portions in Objective-C.

In this app I made video stream to be resized on the fly via OpenGL during recording. I’ve written the multipart file uploader to Amazon AWS S3. It uploads video file chunk by chunk during the recording. So at the end of the recording video is almost there.


Inquires

Please, send work requests via personal message on LinkedIn.