Sooner or later every front end developer comes to the conclusion that CSS has limited functionality. A few years ago when I used to work on a project I questioned myself a lot: why isn’t it possible to create one variable for block colour/width/height and then call it when necessary? When I acquainted with Less and Scss such questions disappeared. Let’s compare Less and Scss: There are many options to work with colours in Less and Scss. You can find them in the documentation for each preprocessor. Conclusion As it can be seen from the table above each...
Frontend Developer at iKantam
Some time ago I started using Ruby in my projects. Before that moment I had been mostly coding in PHP. So comparison of these two languages was quite inevitable when I switched to Ruby. On initial stage I used Codeacademy resources to learn more about language potential and its distinctive features. Even now having good command of the Ruby language I still keep comparing Ruby and PHP and come to new conclusions. In this article I would to make a quick comparative overview of Ruby and PHP based on my initial experience. Ruby as an object-base language Despite the fact that...
Ruby on Rails Developer at iKantam
Have you ever faced the problem when you lack React Native resources to implement certain functionality? Say you want to send iOS Local Notifications and process an event when a user clicks on Local Notification. React Native provides some API to send Local Notifications but it lacks API for their processing. There two ways to solve this issue: 1. Write a handler tool in a native language 2. Write API in a native language for javascript By default, a basic React Native project is written in Objective-C. At first, we will move the...
Senior Ruby on Rails Developer at iKantam
Web and mobile development is a complex process which requires a certain amount of preparation. Building prototypes is definitely considered to be such preparation. Let’s see why it is so and how to organize prototyping best. Prototypes help to understand the core of the project and walk in the right direction from the very start. Project estimate and deadline are often based on prototypes that clarify many initial project questions. We all know how it is important to be mutually agreed on requirements and expectations. I prefer Axure and Justinmind prototyping tools. For websites I use the...
UI Designer at iKantam
Many developers are often required to implement new functionality on the website. It is obvious that it is not possible to avoid CSS editing in this case. So how does it all happen? The developer finds a CSS file titled as “style.css”, “main.css” or “layout.css”. Then he scrolls it down and add his own styles. There is another example. Let’s imagine that it is necessary to modify a block which contains styles from different classes. Not giving it another thought the developer creates his own class with required styles and overlaps the previous code by adding “!important”. In the course of...
Frontend Developer at iKantam
We live in a busy world where we set goals and try to find the best use of our efforts to achieve them. Nobody likes time wasters who are unable to meet deadlines. It is true for all spheres of life but I would like to talk about deadlines in web development. It is obvious that every client cares about time and no agency wants to lose face. Douglas Adams, English writer best known for The Hitchhiker's Guide to the Galaxy, once said, “I love deadlines. I like the whooshing sound they make as they fly by.” So what’s wrong with deadlines? What hurdles may possibly prevent us...
Project Manager at iKantam
The use of Open Source Routing Machine is not always that straightforward and simple as it may seem at first. Very often additional factors should be considered. Server choice and its proper configuration are definitely one of them and we learned it from our own experience. We used to have a project to develop a logistic service for goods transportation. It was in Ruby and the main algorithm was Ruin And Recreate. We also used Amazon instance. During the development process we had to calculate transportation time. The best option was to use OSRM. So we created a gem to support OSRM API...
Ruby on Rails Developer at iKantam
I have recently finished working on a wonderful project. I enjoy creating design for small e-commerce stores so it was a great experience to take part in custom kids’ clothing website redesign project – The Patchery. They do cool stuff on the website: in a few simple steps you can design T-shirts, dresses, hoodies and other clothes for children. The clothes are tailored according to the design created and delivered right to customer’s door. My aim was to improve the current design concept. I tried to make UX simpler and more intuitive for both kids and their parents. Modern and...
UI Designer at iKantam
Sometimes it happens that we have a really big .csv (~100 MB) file and we need to import it to our RoR application database. We can try to use the built-in class: require 'csv' def import(file) CSV.foreach(file.path) do |row| product = Product.from_csv_row(row) product.save! end end However, it will take too much time for .csv files to be imported. What is more, you will have to import the .csv file again in case some rows are broken. So how to solve this problem? If your models are not linked you can just use activerecord-import as mass insertion is much faster...
Ruby on Rails Developer at iKantam
Working on the RoR project with ActiveRecord we noticed an increase in the number of models (more than 1000 lines). So it was getting more difficult to add new functionality. The project scope was increasing as well so we had to find a solution to the problem. We decided to spend some time on refactoring. After fat model code analysis we learnt that database query methods had taken 30% of the overall code. class FirstModel < ActiveRecord::Base # relations section # ... # query methods class << self # ... def custom_method_to_fetch_data joins(:...
Senior Ruby on Rails Developer at iKantam