A Career in Programming

“If you are going through hell, keep going”.

A phrase attributed to Winston Churchill aptly describes the path a novice in the IT industry takes to become an Engineer of Distinction. This uphill struggle costs both money and time (measured in years), but the end result will hopefully prove worthy. In our latest series of blogs you’ll get a unique chance to find out how all the stages of a programmer’s career look like, beginning with the apprenticeship programme, through the various engineering jobs to become the Principal Engineer of the company and finally conquer the entire industry. But be aware from the very start, not all programmers get to the final stage!

At the beginning of their career many new Rails developers put complex presentation logic directly into the templates, that looks something like this:

<%= @player.first_name.capitalize + " " + @player.nick_name.capitalize + " " + @player.last_name.capitalize %>

At that point, that kind of solution seems reasonable, but after awhile they all ask the same question: Is this the right place for such a code?

Important Things You Need To Improve About Your Web Business.

Regardless whether your business is a thriving IT startup or you just run a small local business, you feel the need to make your presence felt online. Having a website or even trading online is a must today. However, merely having a web business is far from enough: you must improve it constantly, and here is a list of the first five things you can do to make your website better:

Desktop computers

So... You have just founded your own firm, defined the product or the service you are selling, and even did some market research to see who your potential buyers are. The only thing needed before the money starts pouring in is the trivial issue of web development. Well, things might just not be as simple as one might think, and your startup won’t be the first to misunderstand how web development functions. We have compiled a list of eight most common misconceptions about web development you are likely to have:

We created AxiomQ by merging two companies. Both of them had their own sites. To keep search engines happy we need to setup 301 redirects. Unfortunately, one site was running on Github Pages which doesn’t support 301 redirects.

The solution was to create a simple Rack app, use rack-rewrite gem to redirect traffic, and deploy it on Heroku.

Rack-rewrite is a nice gem which implements a rack middleware that acts similar to Apache mod_rewrite. Rewrite rules are simple to define. I encourage you to take a look at rack-rewrite docs.

We only needed the most simple 301 http redirect which redirects a page to new URL. Like this one redirecting about page to new team page:

Recently we were working on a Rails project where we needed to import data from legacy database. In the next few steps I will describe how we did it.

In database.yml we specified information for interaction with legacy data.

# config/database.yml
legacy_development:
  host: localhost
  database: legacy

Closure actions were introduced in Ember v.1.13.0 and they brought a lot of improvements over old action handling mechanism in Ember. These improvements enabled Ember to adopt new data flow model called - Data Down Actions Up (DDAU) that simplified communication between parent and child components.

What are closure actions?

Closure actions are based on JavaScript closures which are basically functions that remember environment in which they were created. So closure actions are just functions that remember context in which they were defined. Since they are just functions we can pass them as a value and call them directly as a callback. This enables us to pass them to inner components and call them directly from components. With the old approach we had to use sendAction() from component and call action on controller or route.

Most modern web app deployments have automated scripts that perform all tasks needed to deploy the app. They handle all the dirty details, while the developer just needs to do something simple like cap deploy. In other words, usually you don’t need to access the remote servers directly.

However, sometimes you run into one-time tasks (or less frequent tasks) that might not have been automated. For example, dumping production data and importing on local machine, syncing uploaded files between production and staging environments, etc.

These often involve transferring files between your local machine and remote server (or two remote servers). There are few ways you can handle this depending on what you need to transfer between servers. We are going to cover methods using wget, scp, and rsync.

While working on different projects and in different environments, we often need to export a dump from one database and then import it into another. A while ago Slobodan wrote how to export and import a mySQL dump, and here is a guide how do it for PostgreSQL.

Export a PostgreSQL database dump

To export PostgreSQL database we will need to use the pg_dump tool, which will dump all the contents of a selected database into a single file. We need to run pg_dump in the command line on the computer where the database is stored. So, if the database is stored on a remote server, you will need to SSH to that server in order to run the following command:

Starting with v9.2, PostgreSQL added native JSON support which enabled us to take advantage of some benefits that come with NoSQL database within a traditional relational database such as PostgreSQL.

While working on a Ruby on Rails application that used PostgreSQL database to store data, we came a across an issue where we needed to implement a search by key within a JSON column.

We were alredy using Ransack for building search forms within the application, so we needed a way of telling Ransack to perform a search by given key in our JSON column.

This is where Ransackers come in.