Dissecting a Fresh Elixir Application

Introduction

In this post we will explaining some key concepts of the Elixir language using the code generated by the Phoenix project template and some handpicked examples.

The only previous knowledge assumed is basic Ruby. Elixir was designed to look like Ruby so most of Ruby’s datatypes are supported, there is one extra basic datatype that Elixir supports: tuples, basically a list of elements and it’s written just like lists but with curly braces eg: {:user, "Joe", "Doe"}.

CSS: From I Hate It, to I Actually Like This Thing

css, frontend

I remember on my early days as a web developer I’d get a task that sounded so simple “Hey Ignacio, we need to add a small red button bellow this form. It has to be aligned to the right. Oh, and btw vertically centered too”. I was doomed. A few hours spent breaking the site, fixing it and breaking it again with every CSS change I made. We have all been there…

Hopefully, after reading this post you’ll learn some tips to help you on your path to mastering CSS.

The Many Facets of Quality

development

Some time ago, in a talk, someone asked “What is software quality, what gives quality to software?”. My immediate half-joking answer was “Software shouldn’t get in my way, that’s quality!”. It was a half-truth, or a quarter-truth, because really, software quality is something with far too many sides.

We all want quality, but how can we tell what quality is?

Trapped by Transparency or Trapped by Culture?

agile, business, culture, transparency

Transparency has become one of the most popular demands in the recent years and for good reasons. Not so far ago, we went through one of the biggest global financial crisis, caused by large investment groups and credit rating firms hiding the real risk of financial products to their clients. Another example closer in time, just a few months before this article being written the ICIJ has revealed the Panama Papers scandal, exposing hundreds of world leaders, celebrities and businessmen’s dirty secrets.

Despite society’s urge for transparency, I believe there isn’t a clear understanding of what we mean and expect from it, specially when we discuss transparency outside of the public sphere: things turn more complex when we try to apply the same principles to the management of private corporations. Although some essays have been written on management theory regarding transparency on the organization, there is still a vague understanding of what exactly it implies and how it can be put into practice. When neither transparency, nor the conditions required for applying it, are properly understood, the expected benefits of increased productivity and more commitment from employees are not met. An interesting example of this misunderstanding is an article published a couple of years ago on the Harvard Business Review called The Transparency Trap.

From a Newbie, to a Newbie

best practices, learning

It’s been less than a year since I joined 10Pines, and a little more than two since I started working officialy as a programmer. I don’t like calling myself a junior developer because seniorities can be easily misused, as their meanings depend on what the person using these terms is looking for in a programmer and the context where they work at. What I can assure you is that I feel like a newbie developer. Maybe it’s all in my head, since my fellow team members treat me as an equal at all times, but sometimes the lack of experience in some scenarios just gets me as frustrated as a kid learning to ride a bike. To fight this, I have gathered a couple of life-savers that help me keep on track when I’m about to call it quits.

An Inverted Test Pyramid

tdd, tests

I believe that most of us are familiar with the concept of “Test Pyramid”, a simple heuristic originally described by Mike Cohn, that is that a project should aim to have a larger number of unit tests than end-to-end tests. But after working on a project suffering from an inverted pyramid, I think it’s worth mentioning some of the downsides that relying solely on end-to-end tests might have.

Collection Filters in Ruby

oop, ruby

Note: acknowledgements (and thanks!) to Máximo Prieto (our OOP guru) who had this idea and he implemented it on Smalltalk.

The problem

We want to have a collection that filters its elements as we add them using a given condition. For instance, we can have an Array that only allows even numbers.

First, and important, is to understand what a filter is. “filter” is a very overloaded word, and sometimes used in a technical way. Let’s say that a filter is someone with the single responsibility of deciding if something has to pass over or not.

A Little Bit of Color!

graphic-design

How to create a great palette for your app/web

You may have never paid close attention to the colors you pick for your web or app, but having a good palette helps organizinge information in your site.The idea behind this post is not to give an introduction to color theory but to offer a simple guide to help you create an harmonious and useful palette.

Svn to Git

git, github, svn

Svn to git, full migration

Finally you decided that git is more suitable than svn for your work. But, what happens when you have projects that where using svn for a while? All of that information represented in thousand of svn revisions is something that normally you don’t want to lose. For these cases I wrote this step by step guide to successfully migrate all the history stored in svn on a git repository, included all branches and tags no matter svn repository size. The only drawback is, more revisions you have more time you need to wait to get migration finished.