Elixir is a functional language built on top of Erlang VM. Therefore it uses Erlang mechanism for communication with nodes. Erlang has one simple rule: everyone connects to everyone. It provides a simple authentication mechanism by tokens called cookie. In this article I want to show how to use remote …
Railsware Blog
on product management, engineering, design, culture and many more...
Creating and using Clang plugin with XcodeThis tutorial describes how to create Clang plugin and covers the next things: environment setupbasic plugin setupsetup Xcode project for plugin developmentwarnings reportingerrors reportingXcode integrationinteractive hints for errors/warnings riddance tl;dr Clang Rocks!!! You can find the plugin here. Intro While working on BloodMagic, I realised that it’d be nice to …
This tutorial describes how to create Clang plugin and covers the next things: environment setupbasic plugin setupsetup Xcode project for plugin developmentwarnings reportingerrors reportingXcode integrationinteractive hints for errors/warnings riddance tl;dr Clang Rocks!!! You can find the plugin here. Intro While working on BloodMagic, I realised that it’d be nice to …
iOS acceptance testing with Calabash and RspecWhile investigating existing automated tools for mobile TDD, we have run into a well-documented and supported library by Xamarin. It’s called calabash, comes with iOS and Android support and has a wide scope of supported user actions, gestures and expectations.The only drawback we found significant is lack of native Rspec …
While investigating existing automated tools for mobile TDD, we have run into a well-documented and supported library by Xamarin. It’s called calabash, comes with iOS and Android support and has a wide scope of supported user actions, gestures and expectations.The only drawback we found significant is lack of native Rspec …
Criteria pattern applied for organizing complex filteringWhen a complex filtering solution is required to be built, the code becomes a mess more often than not. Filtering records is a straightforward task on its own: just apply the required ActiveRecord scopes based on certain conditions of the given parameters. However, when dealing with intricate systems, such as …
When a complex filtering solution is required to be built, the code becomes a mess more often than not. Filtering records is a straightforward task on its own: just apply the required ActiveRecord scopes based on certain conditions of the given parameters. However, when dealing with intricate systems, such as …
Capistrano recipe for your favourite CIThe quality of features going to production is very important; and to guarantee the highest quality we use Continuous Integration in our everyday workflow. In one of his recent posts Sergii Boiko has described how to check Travis CI build status before delivering new code to production. Afterwards, we’ve also …
The quality of features going to production is very important; and to guarantee the highest quality we use Continuous Integration in our everyday workflow. In one of his recent posts Sergii Boiko has described how to check Travis CI build status before delivering new code to production. Afterwards, we’ve also …
Organizing stylesheets in Ruby on Rails projectsThe asset pipeline in Ruby on Rails is a very powerful, but somewhat confusing feature. By default, Rails scaffold generates a stylesheet per controller so that your styles were organized according to your application’s domain model. Which is not really convenient when you are building a modular codebase and reusable …
The asset pipeline in Ruby on Rails is a very powerful, but somewhat confusing feature. By default, Rails scaffold generates a stylesheet per controller so that your styles were organized according to your application’s domain model. Which is not really convenient when you are building a modular codebase and reusable …
Speed up your Ruby on Rails application using WebP imagesHello my dear friends. Today we will speed up our ruby on rails applications using webp images. What is WebP? WebP is an image format that employs both lossy and lossless compression. It’s been developed by Google and, as we can see on this page, so far only Google Chrome …
Hello my dear friends. Today we will speed up our ruby on rails applications using webp images. What is WebP? WebP is an image format that employs both lossy and lossless compression. It’s been developed by Google and, as we can see on this page, so far only Google Chrome …
Working with Auto Layout in iOSThe story behind my post below is that I’ve seen a lot of developers avoid using Auto Layout and the reason for this is that they don’t know it really well. Since I personally like exploring new stuff, this feature looked quite interesting to me and I decided to master …
The story behind my post below is that I’ve seen a lot of developers avoid using Auto Layout and the reason for this is that they don’t know it really well. Since I personally like exploring new stuff, this feature looked quite interesting to me and I decided to master …
Object Oriented Thinking in CSS: ModulesIn one of our previous blog posts, we’ve already described Object Oriented Thinking and objects theory. But what if indivisible objects are not enough to have decent organization and structuring? Assembling application together from the huge set of atomic objects is not so easy. If your app has a quite …
In one of our previous blog posts, we’ve already described Object Oriented Thinking and objects theory. But what if indivisible objects are not enough to have decent organization and structuring? Assembling application together from the huge set of atomic objects is not so easy. If your app has a quite …
Google spreadsheet scripts: useful functions. Copying with custom conditionsProblem You need to copy a bunch of data from one spreadsheet to another with the following custom conditions: limited range and filters on different cell values. This is a very boring task to perform manually, but the good news is that it can be automated. Solution In order to …
Problem You need to copy a bunch of data from one spreadsheet to another with the following custom conditions: limited range and filters on different cell values. This is a very boring task to perform manually, but the good news is that it can be automated. Solution In order to …
Object Oriented Thinking in CSSMost modern methodologies like OOCSS, BEM, SMACSS are all about learning to think about your UI and CSS in terms of objects. Which appeared to be really useful and flexible approach to organize and reuse code-base leaving it simple and DRY. Objects are simple independent and indivisible components that are …
Most modern methodologies like OOCSS, BEM, SMACSS are all about learning to think about your UI and CSS in terms of objects. Which appeared to be really useful and flexible approach to organize and reuse code-base leaving it simple and DRY. Objects are simple independent and indivisible components that are …
Rails configuration in the proper wayUsually Rails application has multiple environments – production, development, test and staging; and quite often application behaves differently in each environment. Rails provides a simple way to inspect current environment: > Rails.env => “development” > Rails.env.development? => true But abusing Rails.env for adjusting application behaviour leads to serious issues with …
Usually Rails application has multiple environments – production, development, test and staging; and quite often application behaves differently in each environment. Rails provides a simple way to inspect current environment: > Rails.env => “development” > Rails.env.development? => true But abusing Rails.env for adjusting application behaviour leads to serious issues with …
Dependency Injection in Objective-C with Blood and MagicMVC is not sufficient Every day iOS apps become more cumbersome and bulky, which makes MVC approach not sufficient. We are seeing more and more classes for different purposes: app logic extracts into services, models extends with decorators, view separates into partials and so on. And – what is more …
MVC is not sufficient Every day iOS apps become more cumbersome and bulky, which makes MVC approach not sufficient. We are seeing more and more classes for different purposes: app logic extracts into services, models extends with decorators, view separates into partials and so on. And – what is more …
Better Ruby: choosing convention for class methods definitionRuby doesn’t have procedural module akin to Python or Perl module. Usually, one uses class methods as a typical way to mimic this functionality. Class methods in Ruby are also very handy for supporting instance methods with fabrics and other common-for-class functionality. This is clearly seen in ActiveRecord::Base with dozens …
Ruby doesn’t have procedural module akin to Python or Perl module. Usually, one uses class methods as a typical way to mimic this functionality. Class methods in Ruby are also very handy for supporting instance methods with fabrics and other common-for-class functionality. This is clearly seen in ActiveRecord::Base with dozens …
Custom VCR matchers for dealing with mutable HTTP-requestsVCR is a powerful beast which makes HTTP-request mocking a real no-brainer. If you haven’t tried it before, just do it, it will make your life much easier. VCR works in really simple manner – when you issue request via some HTTP API, at first it records them and on …
VCR is a powerful beast which makes HTTP-request mocking a real no-brainer. If you haven’t tried it before, just do it, it will make your life much easier. VCR works in really simple manner – when you issue request via some HTTP API, at first it records them and on …
Taming The Git-Daemon To Quickly Share Git RepositoryI was once in a hurry to share GitHub repository with a colleague who didn’t have access to it and we decided to use local git-daemon. However, handling all the little quirks that would make it work took a lot more efforts than just dropping a repository archive via Skype. …
I was once in a hurry to share GitHub repository with a colleague who didn’t have access to it and we decided to use local git-daemon. However, handling all the little quirks that would make it work took a lot more efforts than just dropping a repository archive via Skype. …
Useful Google Spreadsheet Script TriggersIn my previous blog post, I’ve provided a brief intro to Google Scripts and with this article, I’d like to share several useful code examples that might come handy. Problem ‘Exceeded maximum execution time’ error message appears while executing a Google Spreadsheet scripts. It usually pops up when a 6 …
In my previous blog post, I’ve provided a brief intro to Google Scripts and with this article, I’d like to share several useful code examples that might come handy. Problem ‘Exceeded maximum execution time’ error message appears while executing a Google Spreadsheet scripts. It usually pops up when a 6 …
iOS Integration Tests With AppiumI came from the RoR web development and – as we all know – Rails community loves tests. Personally, I am a fan of acceptance testing and using mostly capybara for it. So, when I shifted to the iOS development, it was essential for me to find some decent acceptance …
I came from the RoR web development and – as we all know – Rails community loves tests. Personally, I am a fan of acceptance testing and using mostly capybara for it. So, when I shifted to the iOS development, it was essential for me to find some decent acceptance …
Capistrano recipe for checking Travis CI build statusUsing Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it’s easy to forget about checking build status before issuing “cap production deploy”. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a …
Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it’s easy to forget about checking build status before issuing “cap production deploy”. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a …
Intro to Google ScriptsDid you ever know that you can create custom scripts for Google Spreadsheets? The ones that would allow you easily manage your data, i.e. copy it, move between spreadsheets, calculate complex cases and create specific functions for further re-use in other projects. Do almost anything you want… just like in …
Did you ever know that you can create custom scripts for Google Spreadsheets? The ones that would allow you easily manage your data, i.e. copy it, move between spreadsheets, calculate complex cases and create specific functions for further re-use in other projects. Do almost anything you want… just like in …