Davert Michael Bodnarchuk

What Tools Does The PHPrince Of Persia Use In His Daily Adventures?!

I actually like building stuff and PHP helps me with that.

— Michael Bodnarchuk
Tweet this

Function Of This Interview | The 3rd One

This is the third edition in a collection of “It’s The Tools Talking”. Something which I kickstarted right on the first of Jan to start out off the yr 2016. I am persevering with with it, breaking my 1yr Hiatus as I announced final week.

For this episode #three, I’m honored and much delighted to host tonight The PHPrince of Persia a.okay.a Michael Bodnarchuk (also called @Davert online). I have had the priviledge to satisfy Davert in individual and enjoying the bgphp trip within the particular PHP Bus during our stick with The Superb @bgphpconf 2016 in Sofia. I need to say Davert is an unimaginable human being, filled with creativity, very pleasant, all the time prepared to assist and above all very very very enthusiastic about what he does, specially testing with @codeception – a php testing software which he created and gaining a lot traction through the current years.

I can’t say more about this (PHP)Prince of Persia, as I shall be introducing him once more in one other #7PHP PHP Interview soon enough. So let’s dive straight into what tools he tames for his every day coding adventures.

» Hi Michael, Please inform us a bit about yourself and your involvement with The PHP Group

My identify is Mykhailo Bodnarchuk (that’s how the Michael is spelled in Ukraine) or simply Davert.

I’m working on Codeception testing framework, which is a framework that simplifies testing of complicated purposes.

I began Codeception in 2011 as a result of I needed to put in writing checks effectively with out spending time on configuring, and writing bolierplate code for my checks. PHPUnit was the preferred device. Nevertheless it was not efficient for something greater than a unit: there was no efficient option to write a single check for an software with controllers, database, and all of the inside items. Nevertheless, such checks appear to be probably the most environment friendly, as a result of one check can indicate the visibility of the appliance.

Additionally, I needed my checks to be readable so my CTO might learn them, so I asked him for every week to work on a testing framework alone. After I constructed the prototype I started to assume the best way to scale this answer for browser exams, framework exams, to make it usable for others. That’s how I started to work on Codeception. I hope PHP developers take pleasure in using it, plenty of good builders help to develop it and make it better. I need to say I’m so thankful for our core staff, with out them, I’d in all probability misplaced in all the issues and pull requests 🙂

I actually like building stuff and PHP helps me with that. Unfortunately, I’m not so lucky to sell my products, so I do it totally free 🙂

» How does your workstation seem like

The workstation of Davert

Proper now I’m utilizing Lenovo S440 as my main pocket book. And this massive one laptop for music, TV collection and Unreal Event. You realize, I discovered that enjoying 20 minutes in UT earlier than working makes me extra productive. Fast deathmatch makes me concentrated, targeted, and I can work higher with out procrastinating.

Additionally, I have to say I favor moveable workstation so I can work from anywhere. Typically I transfer from my room to kitchen to get quicker connection to the teapot 🙂

» The OS that you’ve used & which one you favor to work with

I labored with Home windows but now utterly switched to Ubuntu. Making PHP, Ruby, MySQL, and different stuff work on Home windows make you so god damn cool hacker that MacOS and Linux customers can’t even imagine. Nevertheless, being a Windows hacker is just not so profitably nor cool. In this case, Ubuntu is a lot better (esp for last 5 years) for improvement. Linux is cool since you develop in the identical surroundings as your server can be. No have to study virtualization or “brew” magic. Every part you want could be installed by apt-get, what can’t be achieved with apt-get is definitely retrieved with docker pull. And sure, having native Docker containers is a killer function of Linux.

Also, I really like the UI of Ubuntu, the software can also be fairly good. Every part I’d in all probability want for improvement is already there. I feel with the rise of Electron apps we’ll get increasingly cross-platform apps concentrating on Linux platform as nicely. For example, I’m actually proud of Nylas Mail app. I exploit Vivaldi browser which I like to recommend to everyone, it’s always enhancing and highly customizable because it is a browser constructed inside a browser.

» What VM software you employ or have used.

VM is a ache. I used Vagrant however I hate it. For most setups, I can get it operating on Linux natively. If not – in Docker container.

Proper now I’m using Android Emulators to test the cellular testing of my side-project CodeceptJS.

» Your database administration software

Emma (easy stuff on Ubuntu)

» Your Testing Software (Unit testing & useful testing)

Codeception 🙂

However I work not solely with PHP so I’d prolong this to: Mocha in JavaScript and Minitest in Ruby.

» Your Debugger / Debugging Tools arsenal

var_dump, console.log, places, WTF, screaming, hitting partitions, voodoo dolls with a curse to all software program developers, and If nothing of these helps I configure PhpStorm debugger.

» Your deployment instruments

Capistrano (for Rails), Ansistrano (with Ansible) and Robo for my opensource tasks.

» Version Control Methods you employ & which you are likely to want

S… V.. GIT! Does it sound unexpectedly?

» Frameworks that you simply use & which you are likely to want probably the most

Rails (that sounded unexpectedly, proper?). I favor Rails as a result of it has secure ecosystem and API, its concepts didn’t change dramatically since Rails 3 launched 7 years in the past. A lot of the options for widespread problems are already solved and packed into gems. Massive opensource tasks like GitLab or Discourse provide a strong information base of present good practices. For startups, SaaS software I’d undoubtedly choose Rails.

For a current venture (through which I work with a staff of PHP developers) we’ve chosen Laravel Spark. I have to say Laravel is very inspired by Rails, so it’s pretty straightforward to get in with it. We also had experience working with Symfony however no one knew methods to start fast with Symfony. Yes, Laravel is a lot better for startups.

I needed to study a bit of Symfony, Zend, Yii, Phalcon and different frameworks because Codeception helps all of them. They’re all pretty good, however they are simply translating HTTP requests into the enterprise code. So I want framework-agnostic business code. That’s what makes PHP totally different from Ruby. PHP by itself, its frameworks, tools are always altering so it’s higher not to depend on current framework realization.

» IDEs that you’ve used or Your “Programmer’s IDE” of selection

PhpStorm (for PHP), SublimeText (for Ruby), Visible Studio Code (for JavaScript). Sure, I want to have an editor per language.

» Your Documentation Device?

I exploit GenerateMarkdown process from Robo. It translates all docblocks into markdown information. This is used by Codeception, AspectMock, and Robo challenge itself.

» PHP Code Beautifier?

I don’t actually hassle about it. I simply run robo code:repair every now and then.

» In-Browser Tools (Firefox or Chrome add-ons)

I exploit Voblet to save lots of fascinating GitHub tasks. I began to make use of Grammarly to quick-fix my writing.

» Net Internet hosting service you could have used and which one you advocate/want

@DigitalOcean is the perfect.

» Do you employ any software program you employ for the following:

»> time administration
»> todo record management
»> managing your calender & occasions

I’m so irrational individual so nothing helps me to handle time and duties. I hold every part that’s essential in my head, as well as necessary occasions. Nevertheless, I work only on issues I really feel enthusiastic about. Each time I attempt to begin utilizing ToDos I’m putting into it probably the most boring tasks, and consequently, I never open that todo app again. I can’t plan my time as nicely because my life is just not my work: I like spending time with buddies, I like climbing, and If somebody calls me to some unusual adventure, I’d in all probability drop every part and go for it. Luckily I all the time return as a result of I like PHP and its group.

» Your instruments for communicating / dealing with communication?

Skype is my main device for enterprise communication, for some tasks I exploit Slack. But to be trustworthy I don’t like Slack as it’s pretty arduous to keep up with plenty of chat windows. I’d really wish to take part more in group chats (like in these on Gitter or in IRC), however I all the time really feel like they drain my time and power.

I really like the WebDriver implementation by Fb. Once Facebook revealed it I used to be so joyful to discover its API. It was so good and absolutely suitable with Java shoppers. Lastly, PHP becomes a first-class participant for writing browser exams with it. I actually hope increasingly more individuals would discover that PHP isn’t just about WordPress or web pages. PHP can be used for acceptance testing, for scripting, for deploying… You identify it!

And I can’t not point out Composer. That’s impressive and well-made answer. Because of Jordi and Nils for making it. Thanks for making it secure and low cost, without vendor locking. I really hope they’ll turn their Personal Packagist into a worthwhile business, as they really deserve this.

» The software that has given you the more severe experience

VIM 🙂 I might handle to give up it however I couldn’t stay with it 🙂

» The device that has given you one of the best experience or been your life-savior / has impacted your DEV life.

PhpStorm (thanks, JetBrains), Visible Studio Code, Docker, Ansible, Capistrano. A lot of those!

» Some other instruments you employ that you simply need to share with us?

I’d really wish to advocate Robo process runner. It could actually easily exchange bash scripts, deploy situations and a few primary asset management. Robo helps me to run all my tasks. Look how this code is best than widespread bash-scripts! Yes, that is true PHP!

public perform publishFrontend()

$this->taskExec(’ember build’)
->dir(‘frontend’)
->printed(false)
->run();

$this->_copy(‘frontend/dist/belongings/frontend.js’, ‘backend/app/belongings/javascripts/frontend.js’);
$this->_copy(‘frontend/dist/belongings/vendor.js’, ‘backend/app/belongings/javascripts/vendor.js’);

$this->taskGitStack()
->add(‘backend/app/belongings/javascripts’)
->commit(‘updated frontend scripts’)
->push()
->run();

Your Questions On Twitter

That’s it people. Hope you’ve discovered some new stuffs in the present day. When you’ve got any question, direct them on Twitter by mentioning @7php & @davert

Credits

  • Fundamental featured pic credit score goes to @bgphpconf
  • All other pics on this posts are from Michael aka @davert