mgrebenets / mgrebenets-profile

Profile

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Maksym Grebenets

Personal Details
Location Sydney, Australia
Mobile 0415 048 805
Blog https://mgrebenets.github.io
Medium https://medium.com/@maksymgrebenets
GitHub https://github.com/mgrebenets
LinkedIn https://au.linkedin.com/in/mgrebenets
HackerRank https://www.hackerrank.com/mgrebenets
StackOverflow https://stackoverflow.com/users/1095277/i4niac
Coursera https://www.coursera.org/user/i/66b48af35b7a3e54fdf15aff3da8a918
Email mgrebenets@gmail.com

Summary

I've been iOS developer for more than 11 years now. What started as a hobby in 2007 is now my full time job and main area of expertise.

I strongly believe that best practices are essential for successful development and collaboration and therefore need to be established, followed and oftentimes enforced. Warnings are Errors is an axiom for me. I've been using tools like SwiftLint, SwiftFormat, Danger and other linters and formatters with great results. I even had a go at implementing a Swift regactoring action.

One of my key strenghts is designing modular architecture and building reusable native frameworks. I have experience with using various dependency management tools and applying right design patterns while building software.

I've got great passion for build and automation tools. Digging deep into Apple code signing process led me all the way into Fastlane core contributors team. Recently I've been using Buck to build a dozen of internal frameworks.

To be able to apply all the tools, I've worked hands on with continuous integrations solutions, such as Jenkins, Bamboo, TeamCity and Xcode Bots.

I blog about things I learn.

Professional Skills

  • Programming Languages & Technologies
    • Swift, Objective-C/C++, C, C++, Java, Ruby
    • HTML, XML, HTTP(S), JSON, XMPP, REST, UML 2.0, Smart Cards, etc.
    • Google App Engine, Google Web Toolkit, JDO
    • Scripting skills with Bash, Ruby, Python, Perl
    • Build systems: Buck, Bazel
  • Platforms & Operational Systems
    • iOS – strong development experience (11+ years), App Store Apps
    • Android OS - fair development experience (~3 years), Google Play Apps
    • Embedded OS: pSOS, ThreadX, VxWorks, Embedded Linux – strong development experience (6+ years)
    • Google App Engine and Google Web Toolkit - strong development experience (~2 years)
    • Mac OS X, Linux OS, MS Windows - experienced user and developer
  • Tools & Applications
    • IDEs: Xcode, Eclipse, MS Visual Studio, etc.
    • Source control: git, SVN, CVS, Clear Case
    • Continuous Integration: Hudson, Jenkins, Bamboo, Team City, Travis CI, Circle CI, Xcode Bots
    • Debugging tools, bug tracking, build environments, etc.
    • IBM Rational Software CASE-tools: Clear Quest, Rational Rose
    • Math software: Maplesoft Maple, Octave

Work Experience

Specialist Software Engineer - iOS

Commonwealth Bank of Australia

February 2017 - Present | Sydney, CBD

Senior Software Engineer - iOS

Commonwealth Bank of Australia

September 2015 - February 2017 | Sydney, CBD

After joining CBA iOS team I have worked on a number of features for CommBank Tablet app and CommBank iPhone app.

Currently I am part of a core team developing reusable native iOS frameworks for core banking functionality.

I have also set up continuous integration pipelines for dozens of iOS framework projects and a handful of iOS app projects using Fastlane tools and TeamCity job templates. Pipelines include such jobs as:

  • Standard CI jobs: build, test, code coverage, lint, analyze, report, etc.
  • Resigning builds for App Store distribution
  • Automatic uploads to App Store Connect
  • Creating iOS simulator and device builds for UI automation tests

Senior iOS Developer

Fairfax Media

October 2014 - August 2015 (10 months) | Sydney, CBD

Working on new versions of iPad apps, such as

  • Australian Financial Review
  • Brisbane Times

Developing native iOS apps full-time I work with core iOS technologies and frameworks, including Auto-Renewable iTunes Subscriptions and Push Notifications.

I was also responsible for setting, configuring and managing Continuous Integration and Delivery for iOS apps. This job involved managing Jenkins instance, supporting builds for multiple branches and pull request, uploading builds automatically to HockeyApp, TestFlight and for Over The Air distribution.

Developer in Test for Mobile

News Corp Australia

April 2013 - October 2014 (1 year 7 months) | Sydney, CBD

Working as Developer in Test for Mobile was a new step in my career development as iOS (Mobile) Developer.

This was an excellent opportunity to see the "dark side" of mobile development, in particular, get a hands-on experience with such tasks as continuous integration and deployment, build automation, automated unit and integration tests, code coverage reports, UI tests automation, static code analysis, test reports and integration with issue tracking systems.

Build Automation

  • Setup and configure Bamboo/Jenkins build server
  • Configure AWS Linux instance to build Android apps
  • Create and configure build plans for iOS, Android and Ruby applications
  • Use Atlassian CLI plugin for integration with JIRA
    • Automatically create, release and archive project versions in JIRA
    • Automatically create issues for failed tests
  • Build, package, archive and distribute iOS and Android applications
  • Use command line tools like xcodebuild, xcrun ..., codesign, xctool, nomad-cli, iTMSTransporter, aapt, Atlassian CLI Client, etc.
  • Create app manifest for OTA (Over the Air) distribution of enterprise iOS builds
  • Run static analysis (clang, OCLint) for iOS projects
  • Generate and publish source code documentation (appledoc, yard, javadoc)

UI Tests Automation

  • Use Calabash framework for iOS and Android
  • Design and create cross-platform (iOS and Android) test suites using Cucumber, Ruby and shell scripts
  • Run UI automation tests automatically as part of continuous integration process (on iOS Simulator, Android Emulator and real devices as well)
  • Contribute to iOS and Android app source code by adding accessibility labels and identifiers

Gained Experience

In this role I got to improve and learn a number of skills.

  • Setting up and configuring build environment for mobile apps
  • Getting to know the guts of iOS app signing and packaging process
  • Learned a new programming language - Ruby
  • Writing shell scripts to automate day to day routine tasks
  • Get more iOS and Android experience from interacting with the dev team
  • Learn about setting up and managing AWS cloud instance

Senior iOS Developer

Tata Consultancy Services (TCS)

October 2012 - April 2013 (7 months) | Sydney, CBD

Worked for TCS clients.

Senior iOS Developer

Fuji-Xerox Australia

October 2012 - April 2013 (7 months) | Sydney, CBD

Developed an iOS application for Fuji-Xerox Image Gateway enterprise solution. http://appstore.com/igamobileforenterprise

App Features
  • Universal iPhone/iPad app
  • Print documents from iOS device
  • Print documents from Document Management System (DMS)
  • Print pictures from iOS device albums and camera
  • Upload documents from iOS device to DMS
  • Upload album pictures and camera snapshots to DMS
  • Scan documents directly from Multi-Functional Device to iOS device

Lead iOS Developer

Monkeybars Inc.

December 2011 - September 2012 (10 months) | Sydney, CBD

Developed mobile client application for social platform (http://appstore.com/monkeybarsinc).

App Features

  • Universal application running on iPhone and iPad
  • Integration with social networks
  • Upload and preview content (audio/video streaming)
  • Rate and comment on content

Senior Software Engineer

Samsung Electronics, HQ

October 2004 - October 2011 (7 years 1 month) | Suwon, South Korea

Department: IT Solutions Division (500+ people)
Team: Multi Functional Printer (MFP) System Firmware

Major Duties

  • Meet with clients to discuss system requirements, specifications and schedules
  • Assemble and lead development teams working on new features and components
  • Design, develop, implement (C, C++, Java), test and support new applications
  • Troubleshooting analysis and client on-site support

Projects and Features

  • Google Cloud Print (HTML, JSON, C, Java, Google API) - design and implement firmware component for Cloud-Aware printers (current project)
  • Designed and implemented Common Access Card solution for MFP (compliant with FIPS, NIST and DoD standards)
    • Worked with PKCS#11 API, CCID class, APDU commands, PIV/CAC cards
  • Designed and implemented Job Queue Management features: promote, hold/release, interrupt/pause/resume job, secure/sample/delay/stored print job, broadcast/batch/priority/delay/poll fax jobs
  • Worked on support for Internet Printing Protocol (IPP), Common UNIX Printing System (CUPS), Web Services on Device (WSD for Windows Vista, 7)
  • Being involved in a number of Xerox projects. Working with Xerox Extended Interface Platform (EIP), Xerox Common Application Domain Interface (CADI)

Gained Experience

  • Analyzing and managing software requirement specifications
  • Defining projects work scope and timeline
  • Assembling and leading development teams working on new features and components
  • Designing, developing, implementing, testing and supporting new applications
  • Working and communicating in a big group (100+) of developers
  • Taking part in all stages of product’s life cycle

Research Student

Intel Student's Teaching and Research Lab at MSU

September 2003 - June 2004 (9 months) | Moscow, Russian Federation

Developed components for Open MPI debugging tool.

Internship as Software Test Engineer

"SAIR", Privately Held Company

September 2003 - June 2004 (3 months) | Sevastopol, Ukraine

Developed automation tests for XML generation software created by EDIFECS.

Education

Coursera Online Education

2011 - Present | Online

Homepage: http://www.coursera.org

  • Design and Analysis of Algorithms (Part I)
  • Design and Analysis of Algorithms (Part II)
  • Game Theory
  • Machine Learning
  • Functional Programming Principles in Scala
  • Cryptography (Part I)

Lomonosov's Moscow State University

1999 - 2004 (5 years) | Moscow, Russian Federation

Homepage: http://www.msu.ru/en/

  • Bachelor of Computer Science & Mathematics
  • High Hons

Personal Skills & Interests


  • An open minded team player willing to communicate and learn
  • Approaching stressful situations with a bit of humor, but never backing out
  • Enjoying various activities like table tennis, pool, foosball, volleyball, board and card games, and more

About

Profile