Be it for our own internal tooling or on our client’s projects, we’ve used a variety of package managers. When building our newest tool, we...
Uv
Python
Heroku
In 2023, Ciera Jaspan and Collin Green, as part of the Engineering Productivity Research Team at Google, published a paper titled Defining, Measuring, and...
Tech Debt
Technical Debt
Maturity Model
As a company, one of our core values is to be “open by default.” At the same time, one of our goals is to...
Open Source
Hacktoberfest
Learning
This is part of our series on design sprints. If you haven’t read our previous articles, I encourage you to read more about our...
User Experience
Product
UX
UX Research
You’ve signed a contract with an agency, awesome! At this point you already know that agencies like ours offer expertise and resources that can...
Project Management
Best Practices
Tips
This is part of our series on design sprints. If you haven’t read our previous articles, I encourage you to read more about our...
User Experience
Product Design
Design Sprint
In my previous post, I mentioned how I was having issues with populating my random maze. The main problem is that there isn’t...
Data Structures
Graphs
Maze
Design Sprints lend themselves nicely to a virtual format, and digital tools can enhance this widely-used process developed by Google Ventures.
…
UX
UX Research
Product Design
Design Sprints
Day 3 is all about picking a direction and going forward with it. Over the course of the third day of the Design Sprint, we...
Product Design
UX
UX Research
Design Sprint
So, our little exercise in design patterns is getting quite messy. Which is ironic, considering it’s an exercise in design patterns.
The reason...
Ruby
Design Patterns
Unit Testing
As a consultancy specializing in upgrades, dealing with legacy code is our bread and butter. Incompatible versions of Ruby, different version managers, C errors while...
Devops
Docker
Virtualization
Have you ever wondered what the values on the request queue graph in the APM tool meant or whether a certain value indicated good or...
Performance
Monitoring
Request Queue
If I were to ask you: tell me in one word or a number here, how satisfied are your users with the response times of...
Performance Monitoring
Performance
Apdex Score
Upon integrating any performance monitoring tool for your application, you must be observing p95, p99 response times on the dashboards. If you are wondering what...
Performance
Response Times
P95
P99
P50
Web Sockets are an integral part of a lot of modern-day systems. But have you ever wondered how a Web Socket actually works? Or does...
Systemdesign
Websocket
Rails
Frontend development is so exciting nowadays! There is a wide spectrum of opportunities in each particular project. There can be tons of different interesting cases...
Software Development
Open Source
Testing
In the last part of this series, we left our little maze game gem generating random mazes that had random kinds of rooms using...
Ruby
Design Patterns
Best Practices
Since 2016, the company has invested in native-to-mobile civic experiences to encourage political engagement among its users—whether it’s by learning what’s on your ballot, or...
Case Study
Snap Minis
Product Development
Have you ever wondered how does Medium recommend blogs to read or how does a platform with millions of users tells if a username is...
Systemdesign
Ruby
Bloom Filter
No, not that Meta
What most developers call JavaScript frameworks (React, Vue, Svelte, etc) can more accurately be thought of as UI Libraries. While they...
Javascript
Meta Framework
Framework
In my last article I introduced this series and here’s the first pattern: the Abstract Factory
Design Patterns
Abstract Factory
Ruby
Be it for our own internal tooling or on our client’s projects, we’ve used a variety of package managers. When building our newest tool, we...
Uv
Python
Heroku
In 2023, Ciera Jaspan and Collin Green, as part of the Engineering Productivity Research Team at Google, published a paper titled Defining, Measuring, and...
Tech Debt
Technical Debt
Maturity Model
As a company, one of our core values is to be “open by default.” At the same time, one of our goals is to...
Open Source
Hacktoberfest
Learning
This is part of our series on design sprints. If you haven’t read our previous articles, I encourage you to read more about our...
User Experience
Product
UX
UX Research
You’ve signed a contract with an agency, awesome! At this point you already know that agencies like ours offer expertise and resources that can...
Project Management
Best Practices
Tips
This is part of our series on design sprints. If you haven’t read our previous articles, I encourage you to read more about our...
User Experience
Product Design
Design Sprint
In my previous post, I mentioned how I was having issues with populating my random maze. The main problem is that there isn’t...
Data Structures
Graphs
Maze
Design Sprints lend themselves nicely to a virtual format, and digital tools can enhance this widely-used process developed by Google Ventures.
…
UX
UX Research
Product Design
Design Sprints
Day 3 is all about picking a direction and going forward with it. Over the course of the third day of the Design Sprint, we...
Product Design
UX
UX Research
Design Sprint
So, our little exercise in design patterns is getting quite messy. Which is ironic, considering it’s an exercise in design patterns.
The reason...
Ruby
Design Patterns
Unit Testing
As a consultancy specializing in upgrades, dealing with legacy code is our bread and butter. Incompatible versions of Ruby, different version managers, C errors while...
Devops
Docker
Virtualization
Have you ever wondered what the values on the request queue graph in the APM tool meant or whether a certain value indicated good or...
Performance
Monitoring
Request Queue
If I were to ask you: tell me in one word or a number here, how satisfied are your users with the response times of...
Performance Monitoring
Performance
Apdex Score
Upon integrating any performance monitoring tool for your application, you must be observing p95, p99 response times on the dashboards. If you are wondering what...
Performance
Response Times
P95
P99
P50
Web Sockets are an integral part of a lot of modern-day systems. But have you ever wondered how a Web Socket actually works? Or does...
Systemdesign
Websocket
Rails
Frontend development is so exciting nowadays! There is a wide spectrum of opportunities in each particular project. There can be tons of different interesting cases...
Software Development
Open Source
Testing
In the last part of this series, we left our little maze game gem generating random mazes that had random kinds of rooms using...
Ruby
Design Patterns
Best Practices
Since 2016, the company has invested in native-to-mobile civic experiences to encourage political engagement among its users—whether it’s by learning what’s on your ballot, or...
Case Study
Snap Minis
Product Development
Have you ever wondered how does Medium recommend blogs to read or how does a platform with millions of users tells if a username is...
Systemdesign
Ruby
Bloom Filter
No, not that Meta
What most developers call JavaScript frameworks (React, Vue, Svelte, etc) can more accurately be thought of as UI Libraries. While they...
Javascript
Meta Framework
Framework
In my last article I introduced this series and here’s the first pattern: the Abstract Factory
Design Patterns
Abstract Factory
Ruby
Hello everyone, this is my first blog post on the ombulabs.com blog. I am so excited to have joined the company and to have...
Software Development
Open Source
Community
The second day of the Design Sprint is about finding inspiration, looking back at the decisions made during Day 1, and starting to assemble possible...
UX
UX Research
Product Design
Design Sprint
Have you found yourself in the fortunate position of being the only designer in an organization that doesn’t have any design assets or previous research?...
UX
UX Research
Product Design
Let’s deep-dive into what happens on the first day of a Design Sprint. On Mondays, we understand the problem.
I want to give credit to...
UX
UX Research
Product Design
Design Sprint
At OmbuLabs, we have some projects where multiple teams work at the same time on different features or fixes. We started using Heroku’s Review...
Heroku
Github
Review Apps
Do you know what the most successful apps and digital products have in common? An idea. An idea that was challenged, tested, recalibrated, and validated...
Product Design
Design Sprint
Products
“You can have a little imperative React, as a treat.”
When building modern applications with React, Function Components and Hooks are the de facto way...
React
Javascript
forwardRef
It’s been a few months now that we’ve been toying with Elixir here at OmbuLabs. Particularly with Phoenix. However, I like to toy a bit...
Elixir
Testing
Unit Testing
The title says it all, but how does one actually implement object oriented design patterns in Ruby? If you’re like me and always struggled with...
Design Patterns
Ruby
Learning
To the seasoned developer this may seem like a silly question, but to developers who are self-taught, bootcamp trained, or even just have never come...
Javascript
Typescript
Programming
Open source powers many of the tools that we rely on daily for our work. As developers, we have the privilege of being able to...
Learning
Open Source
Tips
Today we will discuss the I in SOLID which, you may or may not know, represents the Interface Segregation Principle (ISP). This is the fourth...
Learning
Software Development
Best Practices
This post is the third one in the SOLID principles series. The first post discussed the single responsibility principle and in the second...
Learning
Software Development
Best Practices
In a previous post we considered the practical value of the Single Responsibility Principle (SRP). This is the second post in this series where...
Learning
Software Development
Best Practices
“If you can’t measure it, it doesn’t exist” - Peter Drucker
Tackling technical debt can be a thankless task. You can spend hours...
Maintenance
Software Maintenance
Technical Debt
We agree with Sandi Metz when she describes Object Oriented (OO) design as a style guide for arranging code. The so called “OO...
Learning
Software Development
Best Practices
The impact of technical debt is obvious to developers. Devs are the ones that have to tackle the headaches of dependency issues and patch holes...
Maintenance
Technical Debt
Software Maintenance
Business Case
In keeping with the first part of this series, I’ll list a few interesting issues we found when making the apps work as similar...
Learning
Crossbrowser
Snap Minis
Javascript
Over the last few months, we developed a couple of Snap Minis. Minis are small static web apps that are run inside a webview...
Learning
Snap Minis
Javascript
At OmbuLabs our goal is always to smooth processes, and make work easier. Isn’t that what software engineering is really all about in the first...
Open Source
Agile
Points
Open Source is one of the things that we value as a company. Our philosophy is that “everything we do should be open by...
Open Source
Best Practices
Oss
Last month, Snap announced a new product during the Snap Partner Summit 2020, Snap Minis. Minis are bite-sized third-party experiences that live...
Software Development
Snap Minis
vue.js
Since starting at OmbuLabs as the Junior Developer I have had the incredible opportunity to pair with my teammates. A lot. Over the months we...
Learning
Pair Programming
Tips
One of the most fundamental tasks when writing or refactoring software of any kind is breaking the problem down into smaller parts. When you’re first...
Learning
Software Development
Coupling
Cohesion
Design Principles
Becoming the Apprentice, and then Junior Developer at OmbuLabs was both exciting and nerve racking. Learning a new company can be challenging, especially when the...
Learning
Remote
Tips
This is our first quarter report for open source projects, we will be releasing this report on each quarter of the year with the purpose...
Open Source
Report
Skunk
Bundler Leak
rubymem.com
Tough Love
One of the first things that a journeyperson programmer will have to learn when they transition from full time student to working...
Learning
Software Development
Career
At OmbuLabs we are firm believers of open source. We use open source but also like to contribute back to the community and we have...
Open Source
Best Practices
Tips
A few months ago I received the task of making the FastRuby.io sitemap refresh automatically after each deploy. That sounds like it would be...
Seo
Sitemap
Ruby
The last time we looked at Docker, we looked at the most basic and easy version of using it - building an image from...
Devops
Docker
Tutorials
No app is flawless. We all know that. Quality Assurance is an important part of any software development process and the better the tester, the...
Software Development
Software Quality
Testing
Manual testing is a necessary part of software development and quality assurance. And although it’s important to have a dedicated tester in your team, you...
Software Development
Software Quality
Testing
We launched FastRuby.io, our first productized service, back in June 2017. At the time, we had been doing Ruby on Rails upgrades since...
Fastuby
Design
Ui
UX
In my last article, I gave a brief tour of what Docker is, and basic usage. Once you’ve got your feet under you with...
Devops
Docker
Tutorials
I will not bore you by telling you the history of Vim, and the differences between vi and Vim and all of its philosophy…
…
Learning
Vim
Text Editor
If you’re like I was not too long ago, the DevOps world gives you a chance to experience what most non-developers probably feel like when...
Devops
Docker
Tutorials
Recently at OmbuLabs I had the mission of setting up Heroku Review Apps for one of our projects. Since the project is built...
Heroku
Review Apps
Multi Tenant
Contributing to open source might be scary, you might think that your pull request (PR) is not good enough; that people will judge you by...
Open Source
Contribute
Best Practices
Pull Requests let developers tell other team members about changes they’ve made to a project repository. Once a pull request is created, team members can...
Agile
Learning
Pull Requests
In a recent project for OmbuLabs, we were looking for a payment solution that allows users of our platform to easily start accepting online...
Rails
Stripe
Stripe Connect
In this series of code refactoring posts we are discussing how design patterns can be used to make our Ruby code beautiful, maintainable...
Code Refactor
Design Patterns
State Pattern
If you’ve been a web developer for any length of time at all these days, you’ve no doubt used at least a few web based...
Best Practices
Apis
Api Design
In our last article of the refactoring series we saw how design patterns can be used to make our Ruby code beautiful and clean....
Code Refactor
Design Patterns
Template Pattern
Ruby
Refactoring
Code refactoring can be defined as “the process of introducing small and incremental changes to leave the code in a better state than it was.”....
Code Refactor
Design Patterns
Ruby
Refactoring
Last month was the fifth edition of the Rails Girls Buenos Aires event, and the third time OmbuLabs participated as a sponsor and part...
Learning
Rails
Rails Girls
After reading introductory primers and watching instructional videos for beginners learning Ruby, I needed a program that would allow me to test out Ruby...
Ruby
Learning
Ruby Koans
Monit is a powerful tool for monitoring processes on Unix systems and sometimes it can be very useful to receive notifications about a...
Monit
Slack
Linux
A few weeks ago I had the opportunity to talk to Preston St. Pierre, CTO of Predictable Revenue. We worked with Preston and...
Case Study
Software Development
Scaling
Today we are happy to announce the launch of our first productized service: FastRuby.io - Speedy Ruby on Rails Upgrades by OmbuLabs.
We are...
Rails
Upgrades
fastruby.io
When you create IAM credentials and policies for your app, you should make sure that they have access to the resources that they need...
Aws
Carrierwave
S3
One of the hardest failing tests to debug are those which fail randomly, also known as “flaky” tests. You write your test cases, you run...
Rspec
Continuous Integration
Testing
We all know the importance of having a CI tool integrated in your project. It allows you to run your entire test suite every...
Continuous Integration
Circle Ci
Rails
I have been using the capybara-webkit gem for a while now since I first tried it out after making the switch from Capybara +...
Rails
React
Capybara
Testing
Getting started with a new project should be as simple as possible, even for someone who is not technical. As a maintainer, you must make...
Maintenance
Conventions
Project
There are a few agile practices that I really love. Pair programming is one of them.
We try to do it as much...
Agile
Pair Programming
Best Practices
A few weeks ago, I found an interesting project called Bumbler. If your project uses Bundler, Bumbler shows you your project’s largest dependencies. When...
Ruby
Performance
Bumbler
Hubot makes it incredibly easy to setup on a Heroku server, by taking advantage of its Procfile support. Simply running git push...
Hubot
Linux
Heroku
If you are working with open source or if you are going to open source a repository, you should ensure that none of your sensitive...
Open Source
Security
Git
The simplest way to contribute to an open source project is to file an issue. Here are a few steps for you to file issues...
Open Source
Bugs
Github Issues
As a maintainer of a few Ruby gems, I have to decide what is accepted and what gets rejected into the gems. The other day...
Docker
Rubygems
Open Source
The other day I was trying to interact with a hidden file input field:
<div class="col-sm-3">...
Protractor
Testing
E2e
We have been using Slack at OmbuLabs for a while now after switching from HipChat, and haven’t looked back. It looks and feels much...
Ruby
Slack
Slack Notify
On April 17th we discovered a security vulnerability in the Mercado Pago API. Before disclosing this information, we contacted Mercado Libre and sent...
Security
Vulnerability
Mercado Pago
Quality should be present in everything you do, but it should be balanced with the time you spend working on a feature. Does it feel...
Software Development
Software Quality
Best Practices
The other day my friend Juan Rossi reported a vulnerability in the Almundo billing system. Since then, the vulnerability has been fixed by...
Security
Vulnerability
Privacy
If you are using git in 2015, you are probably also using Github, unless you’re self-hosting or still betting on Bitbucket.
Below are...
Git
Github
Tricks