Validating YAML Files in Ruby

YAML stands for “YAML Ain’t Markup Language”. YAML is a data serialization language that is often used for writing configuration files.

In simple terms YAML is like XML or JSON, but for human beings rather than computers. I feel this is getting overlooked a lot, programmers need to understand that. Another human like configuration language I like is TOML (Tom’s Obvious Minimal Language).

In a static language (like crystal) you need to define the structure of a YAML or JSON file. Defining the structure also act as validation of its schema. Validating the schema is a good idea because it ensure’s that all the required data is present. Its better to know data is missing when your program starts rather than while it is running.

For dynamic language like ruby you can load a yaml file, and ruby will dynamically initialize it. It does make your life easier as a programmer. You don’t need to define the schema, and remember to update the schema when you add a new variable to your file.

But defining the schema has its benefits -

  1. For the User: It reminds then to have the configuration filled before running their program
  2. For the Developer: It helps us to eliminate the configuration file as a possible reason for the program not running.

Which Language Should I Build This Software In

Which Language Should I Build This Software In? or Which language should I have this software developed In?

This is a question that software devs gets asked a lot. By there friends/colleague , usually by who are not part of the software industry. This is my answer to them:

If you had an idea for a novel? or a poem? which language will you write it in. Italian, Tamil, Bengali? Would you try to learn a new language because there are a lot of similar novels (anime) in Chinese or Japanese.

The best language to write your novel is the language you know the most.

Getting Started With ESP 32 Development

ESP 32 is a series of low-cost, low-power system on chip micro controllers with integrated Wi-FI and Bluetooth. SoC or system on chip is an integrated circuit that integrates all or most of the component of a computer. Example the CPU, RAM, IO interface, GPU, etc. This form is becoming more and more popular thanks to growing smartphone and computing industry. Apple M1 chip is a good example on the direction in which SoC’s are going.

The ESP 32 is really low cost it cost like 350 in India, and less than 10$ in the US. Now when you buy this you don’t buy the chip alone, but a chip on a development board. There are several articles ( on that. The board that I bought from amazon was this, i also bought one with OLED display as well

In this article I will be talking about how to get started. We will basically will be setting up Aurdino IDE in linux, followed by flashing few sample programs like:

Amazing Emoji Keyboard in Linux

I am a developer who moved from Windows, to Linux, to macOS, to Linux. A typical developer’s journey 😆. So moving from windows to Linux was over 13-14 years ago. I didn’t do much from the windows world other than games and single executable files. But moving from macOS to Linux, has been a bit tough. KDE has been able to provide me with everything I want and more. The one thing that I missed the most was the emoji keyboard, with easy to launch shortcut.

My usage of emoji was at its peak during macOS days, I used emoji for my communications, commits, function name and even terminal aliases. 😈 Not everyone was a fan of my emoji usages, but I loved it.

Running Migrations From Console

Note: I am using Apartment gem to manage my multi schema database, and this article is written with expectation you know and use that gem.

When you have multiple schema in your rails application, it is important for them to remain consistent. Rails migration is run by keeping track of the timestamp prefixed in front of its file name. It stores the database. So when you restore a schema that hasn’t ran the migration, but rest of the schemas has it, rails thinks it has already ran the migration. Rails look at the main / default schema to know if it has ran the migrations and then follow up on the rest.