RailsConf 2018: Communication 101

The punchline is that I’m writing about Communication: 101 here at RailsConf 2018, but there is no joke. In “Harry the Hedgehog Learns you a Communication”, Laura Mosher presented examples of common pitfalls we encounter in our daily lives as software engineers and 5 tips to mitigate those pitfalls. All of these tips are both helpful in the world of consulting when interacting with a variety of clients and coworkers, but also very personally valuable from the perspective of a parent—I want to exemplify strong communication skills to my children as they absorb everything around them, the little sponges that they are. Here are the tips that Laura went over:
Think, Then Speak
This is the foundation of good communication, and seems pretty obvious, but in the age of chat, direct messages, and instant email responses, it’s easy to fall into the trap of responding immediately with emotion and/or without thinking about what you are going to say. First, consider what you want to say, who your audience is, and how to best explain to that audience.
In consulting, I find this applicable in a couple of scenarios:
- When hearing unsettling or harsh words from a client over dissatisfaction on a …
rails ruby conference
RailsConf 2018: Day One

It’s day one of RailsConf 2018, and I’m in Pittsburgh with baby Ingrid (daycare FTW!). This is my 8th time at RailsConf and third time with a kid (SELECT DISTINCT kid FROM skardals). In my first few years of attendance, starting in 2009, I absorbed much more on the technical side, but the talks that have struck a chord in recent years of attendance have been more on the side of the human element of software and software engineering.
Concept Compression
DHH started the day with the opening keynote, and I perceived the main focus of his talk to be the idea of “Concept Compression”. Ruby on Rails has spent many years compressing concepts (e.g. ORM) to lower the barrier to entry. In theory, this should allow more diverse people to enter the software field, but the problem is that while we’ve been compressing concepts along our way, we’ve also added significantly to the list of things that developers ought to know before they start coding.
DHH has always been focused on developer happiness in Rails, so to me, this topic was another extension of developer happiness in talking about the progression of Rails over the years. If Rails isn’t careful, we’re bound to repeat mistakes of the …
rails ruby conference
Using FFI in Ruby
Ruby for many years has been proving to be an amazing language. It’s one of the most popular for creating web applications but also DevOps / systems administration tools.
It seems that languages are naturally finding their own niches. For Ruby it’s what I listed above, while Python seems to work well for computer vision and machine learning.
For performance reasons, some code should never be coded in either one. Topic boundaries are being crossed typically though. You might be working on the web app that does some high performance math in the background. To marry the two worlds, people were successful with creating compiled “extensions”. These extensions are typically coded in C. Both languages along with their interpreters are able to use those using native-to-language constructs.
One good example of this is the great numpy
package. It brings high-performance linear algebra constructs that would be impossible to code in pure Python with the same performance.
In the Ruby land, a similar example is the nokogiri
gem. It allows very fast XML / HTML processing thanks to the core of its functionality being coded in C.
You might also be working on a Ruby app having a …
ruby c
Ruby on Rails: Russian Translation and Pluralization

Russian is Hard
Translation to Russian is tricky, and what’s even more tricky is coding logic to handle localization and pluralization of Russian (especially when you can’t read it). Here, I’ll explain some of the complexities and approaches I used for localization of a Ruby on Rails application.
Pluralization
In general, Rails claims to have good localization and pluralization support, but I found that the support for handling more complex translations required customization. The first thing to note is that pluralization in Russian is not quite as simple as it is in English.
English
In English, we are familiar with pluralization of regular nouns to be appending an ‘s’ to the end of the noun (except for those nouns ending in ‘y’ and ‘o’). Pluralization is irregular in some cases, e.g. “octopus” becomes “octopi”, and Rails can handle some of these special cases for English but may not necessarily understand rules for other languages. See:
pry(main)> pluralize 1, 'user'
=> "1 user"
pry(main)> pluralize 2, 'user'
=> "2 users"
pry(main)> pluralize 1, …
rails ruby localization
Shell Command Outputs Truncated in Python
Recently I was working on a Python script to do some parsing and processing on the output of shell commands in Ubuntu. The output that showed up was truncated.
The below sections will walk through the debugging process to identify the root cause and implement a solution with detailed explanation, using Python 2.
Problem
The following code block shows the output of a shell command which lists the installed packages, name and version, in Ubuntu.
# dpkg -l | grep ^ii | awk '{print $2 " " $3}'
accountsservice 0.6.35-0ubuntu7.3
acl 2.2.52-1
adduser 3.113+nmu3ubuntu3
ant 1.9.3-2build1
ant-optional 1.9.3-2build1
apache2 2.4.7-1ubuntu4.18
apache2-bin 2.4.7-1ubuntu4.18
apache2-data 2.4.7-1ubuntu4.18
apache2-utils 2.4.7-1ubuntu4.18
apparmor 2.10.95-0ubuntu2.6~14.04.1
The same shell command executes in the Python console but the output shows truncated values for a few packages’ versions, for example, accountsservice, adduser, apache2, etc.
>>> import subprocess
>>> installed_packages = subprocess.check_output(['dpkg -l | grep ^ii | awk \'{print $2 " " $3}\''], shell= …
python shell environment
Start basic application with Vue.js 2 and Drupal 8

Introduction
The purpose of creating this post is to show how fast can you build web applications with Vue.js on the front-end and Drupal on the back-end side.
Let’s call our project “Awesome Nerds”.
What do we need?
- Debian/Ubuntu system
- Internet
- 30 minutes
- Vagrant & VirtualBox
- Git
- Vim
- Yarn
Step by step
Here’s what we’re going to do:
- Install Vagrant, VirtualBox, and Git
- Setup a new Drupal 8 project that will be our back-end project
- Setup a new Vue.js project that will be our front-end application
- Let’s code
Install Vagrant, VirtualBox, and Git
Open your console and run:
$ sudo apt-get install software-properties-common
- getting some common libraries
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
- installing Ansible
$ wget ‘https://releases.hashicorp.com/vagrant/2.0.2/vagrant_2.0.2_x86_64.deb’ && dpkg -i vagrant_2.0.2_x86_64.deb
- installing Vagrant
$ sudo apt-get install dkms
$ deb https://download.virtualbox.org/virtualbox/debian <mydist> contrib
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | …
vue drupal javascript php open-source
Designing for SEO from the Start
Search engine optimization (SEO) is critical to the success of your website, and therefore critical to the success of your business. A high Google ranking means more page views—and more conversions. Google rewards websites that are user-friendly and easy-to-navigate, with fresh content and frequent updates. At End Point, we design with SEO in mind from the beginning of the project to help you get the most value from your online presence.
These are the five main areas that we focus on to improve your ranking:
-
Content Strategy—You want to provide your users with quality content. We can provide a content strategy to help ensure that your site stays on target, with clear copy, focused messaging, and consistent branding. We’ll help you put together a site that gets visitors where they want to be—and you’ll reap the rewards with an increase in traffic to your site.
-
Sitemap, Keywords, and Semantic Markup—We dive into the nuts and bolts of your site to make sure that it can be crawled and indexed easily by Google. We produce a prioritized XML sitemap, relevant, long-tail keywords and metadata, descriptive page headings, titles, and URLs. Your site’s code will utilize HTML5 …
design seo
In-House to Consulting, Rinse and Repeat
Photo by Matthew Henry of Burst
Hi! I’m Steph. I’ve been working 10+ years now as a software engineer, and I’ve spent ~4 years of that as an in-house developer at 2 different companies and 7+ years as a consultant here at End Point and as an independent contractor. Whenever I’ve started a new position, I get asked “What’s it like on the other side?” or something along the lines of “Is the grass greener?” I thought my answer to this was good blog fodder, so here we are.
If you google “in-house vs. consultant”, much of the results are written from the perspective of a company looking to hire either in-house engineers or looking to outsource to consulting companies. Here’s my approach to answer the question as it relates to employee happiness, skill development, and job satisfaction.
Working as an in-house engineer
- Working as an in-house engineer can mean that you may focus on one technology (or one web stack) and even one main codebase, although this isn’t necessarily true. When I worked for Backcountry.com a while back, the main application was an ecommerce application running on Interchange, and that’s where I spent most of my dev time. But as my experience grew, I began working …
tips software