Mini-conference at Anadea

Anadea Inc. Internal Mini-conferences

Anadea Inc. internal mini-conference - December 19, 2014

Anadea Inc. had a small home-style conference in Dnipropetrovsk office on December 19, 2014.

Internal Mini-conference Anadea 2014

Two Senior developers shared their experience with Anadea team. Pavel Mikhailyuk spoke about Resque Ruby library. Andrey Kuteyko had a speech called “ReactJS or How I took a fancy for JavaScript”.

Internal Mini-conference Anadea - Pavel Mikhailyuk and Andrey Kuteyko

Anadea Inc. internal mini-conference - October 1, 2015

The new mini-conference was held in Dnepropetrovsk office of Anadea on Thursday, October 1st, 2015. The speakers were Alexey Derkach who reported about benefits of load testing with locust.io and Andrey Bakuta, who spoke about proper organization of CSS. This time everybody who attended the mini-conference and watched it in the online broadcast had a pleasure to enjoy a great sound quality thanks to the microphone and stereo-system. At 5:30 pm the hall was already full with the audience of about forty people.

Alexey Derkach: load testing with Locust

Alexey Derkach: Load testing with Locust

Alexey Derkach opened the conference with a salutatory address which smoothly went on to his report. He talked about the problems of load session with JMeter – about resource capacity of this tool, its unpredictable behavior, inconvenience of debugging, issues with BeanShell and poor customization. Then Alexey presented a list of possible alternatives and reviewed one of them – locust.io.

Locust attracted his attention because it is written in Python language and it has a name logical for load testing. He spoke about advantages of locust – that this load test is written in pure Python, it is extensible, easy to use and capable to run a large number of tests simultaneously. Alexey also reviewed cons of Locust. However, he also showed how to bypass them or convert to pros.

Andrey Bakuta: BEM methodology for organizing CSS code

Andrey Bakuta: BEM methodology

After allowing the audience to ask questions and answering them, Alexey handed the microphone to Andrey Bakuta. So the conference moved on from the testing topic to frontend. Bakuta highlighted the problem of loss of control in CSS and illustrated it by gif-animation where Peter Griffin struggles to open blinds.

Andrey talked about the fact that the correction of code in one place can break something in another, that it may be unclear where to put styles and often it’s easier to code the page from scratch than change an existing one. He found a solution in BEM methodology (Block – Element - Modifier). The details of this method can be found in an article published in Anadea blog on the eve of speech.

Party after conference

The conference was traditionally ended with a party with pizza and cola during which everyone could talk to speakers and discuss all interesting points.

Anadea Inc. internal mini-conference - November 5, 2015

Internal mini-conference at Anadea - November 5, 2015

On the 5th of November 2015, the 5th Anadea Inc. mini-conference was held. By half past 6 the stereo system was ready, slides uploaded and everybody took their seats. Traditionally, Aleksey Derkach opened the conference.

This time two speeches were devoted to testing: review of Calabash framework by Kirill Machuhin and testing iOS apps from the developer’s point of view by Daria Kovalenko. Also, our guru Dmitriy Kiriyenko shared with the audience some valuable insights on Ruby on Rails code refactoring.

Dmitriy Kiriyenko: let me refactor this for you

Dmitriy Kiriyenko gave a talk via Skype from Grodno. It was the first online report in the history of our mini-conferences. Dmitriy didn't only speak but also showed in practice how to make a Ruby on Rails application better.

He explained how to:

  • Move logic from controllers to models, so that only dispatching remains in controllers,
  • Add non-ActiveRecord models, especially in the cases when the controller operates with more than one model.

The main idea was that the problems should be addressed as they arise and by using the available means, e.g. without spending much time on searching for the right tool or the proper method.

Slides

Kirill Machuhin: Calabash Android and Calabash iOS - automated testing of mobile applications

After that, the talk about testing began.

Kirill Machuhin started his report with the question: What tool would you use for automated testing in the project? He specified all the requirements for such a tool and then introduced the framework that fully match them - Calabash.

Set of tools:

  • Calabash Android,
  • Calabash iOS,
  • Ruby,
  • Gherkin Syntax (Cucumber style),
  • Calabash Android last updated - 26 days ago,
  • Calabash iOS last updated - a month ago,
  • Launching on the real devices.

Kirill described how to get started with it: install, run and then reviewed the differences between Android and iOS versions. He showed that, till a certain phase, the same code should be written and suggested a way of avoiding the duplication. The solution is quite trivial and simple: install gems on the server side, i.e. extract Calabash out of our mobile projects; divide page_object into modules and glue together calabash_iOS and calabash_Android launchers.

The pros of such implementation:

  • we don’t have a duplicated code (*.feature, *_steps.rb),
  • we have an easy access to the objects via ActiveRecord,
  • emulation of the second client is working on the server side.

The cons:

  • different launch commands (cucumber, calabash-android run),
  • it is impossible to work in the debug mode provided by Calabash.

Also, he explained how to get rid of the implementation's cons.

Slides

Darya Kovalenko: testing iOS apps or how I fell in love with writing tests

When all the questions from the audience were answered, Kirill passed the microphone to Darya Kovalenko. Darya continued the topic about testing with her story about testing in iOS from the developer’s point of view. She talked about why the developers write the tests, about integration tests and why KIF best suits them.

Why KIF:

  • Syntax in Objective-C,
  • It is added via pod into current or new test target,
  • Opportunity of using OCMock stubs and expects.

Dasha told about the benefits of using integration tests:

  • One test executes several actions at once. Therefore, you can quickly cover a large amount of code with tests.
  • It saves your time when it is necessary to run the app to check how the main functions operate.
  • It is easy to catch the little things, especially at switching between screens that are difficult to check with unit-tests.

And about cons:

  • If the test-scenario fails on the half way, next ones will not pass because the application is not restarted.
  • It uses a private API, so some functions do not work after updating iOS.
  • Tests pass quite slow.
  • Tests may fail if showing of keyboard is turned off, if the system screens pop up, etc.)
  • It is connected to the accessibility labels.

It also was discussed, why it is better to write the tests first and than the code:

  • It allows to think through the structure of the class in more detail.
  • You can describe possible variations of the method's behavior in the tests and then write the code that meets all the requirements.
  • You have to split the methods into the smaller ones for testing.
  • Because it is difficult to make yourself to write the tests afterwards :)

Slides

When the last speaker received applause, pizza and cola replaced the projector and slides. As usually, in a friendly atmosphere the guys from our company continued to discuss the topics presented in reports. The record of the conference can be found here.

Anadea Inc. internal mini-conference, December 2, 2015

Internal mini-conference at Anadea - December 2, 2015

Holding the conferences has become a good tradition in Anadea. On the 2nd of December 2015, the sixth internal mini-conference was arranged.

This time all reports were made online via Skype: Sergey Lagutin gave a talk from Grodno and Mikhail Bilenko from Alicante. At 4 p.m. the audience gathered around the screens and everybody was looking forward to the interesting speeches.

Sergey Lagutin: Hibernate. Bad practices.

Sergey Lagutin explained how to avoid the most common mistakes when working with Hibernate:

  • how collection type, that describes relationship between entities, influences on the quantity of requests after collection updates;
  • pros and cons of greedy and lazy loading for related entities;
  • why you shouldn't use "Open session in view" pattern in real applications.

In addition, he emphasised that none of ORM frameworks may be effectively used without knowing SQL very well.

When all the questions from the audience were answered, Sergey finished his report and welcomed Mikhail Bilenko to continue the conference with his speech.

Mikhail Bilenko: what differentiates a good design from a bad one or where do carpets on the wall come from?

Mikhail reviewed such things as carpets on the wall, design of bearing-wall houses, interior of temples and benefits of images with beautiful ladies in bikini. That is truly possible when we are speaking about design. However, all the mentioned above is only the outward signs of target topic. Mikhail made an attempt to identify the criteria of good and bad design. He demonstrated examples of both really functional plain designs without frills and good (and not very good) looking but useless interfaces.

When the communication between audience and Mikhail was over, the conference turned into a traditional discussion of the presented topics with pizza and cola. That was a bright ending of this mini-conference.

Anadea Inc. internal mini-conference - January 20, 2016

Internal mini-conference at Anadea -January 20, 2016

Christmas and New Year holidays are over, all the champagne is gone, the tree is put away, the lights are taken down and the new working year has started. On the 20th of January 2016, the new Anadea Inc. mini-conference was arranged.

Maxim Romashchenko: why project managers are needed

The employees of our three offices gathered around the screens to listen to Maxim Romashchenko who spoke about the mission of project-managers and once again recommended to get acquainted with the book of Kent Beck. He mentioned some methods described in this book that come in handy for extreme programming. For example, at a project start, it is necessary to think it up in full scale and only after that proceed to the practical implementation.

Evgeniy Maslov: comparative analysis of SitePrism and PageObject for testing projects

Then, Evgeniy Maslov appeared in front of audience in Dnepropetrovsk, all other offices could see him on the screens. He compared such things as siteprism and page object pattern. To illustrate his speach, Evgeniy used slides that were kindly prepared by Aleksey Lavrukhin. In the course of the comparison the following pros and cons of tools were shown.

site_prism:

  • Capybara DSL +
  • Flexible driver selection +
  • Works with the logical elements +
  • Speed +
  • Simple integration with CI +
  • Selectors -

page-object:

  • Works with a real server +
  • Specifically suited for using with Cucumber +
  • Works with html-elements of the page +
  • Less dependencies +
  • Speed –
  • Doesn't work with headless-browsers –
  • Complicated integration with CI -

The conventional completion of the report was answering the questions of the audience. After the speakers left the stage with an ovation, the auditory turned to digesting the received information along with enjoying pizza and coke.