How to Create a Positive and Productive Remote Work Culture

At OmbuLabs, we love remote work. While other companies are asking employees to come back into the office, we are continuing to lean into the remote-first work culture that we had even before the pandemic. In this article, I will discuss the reasons why remote work is essential to the culture of our company. I will then outline how we create a culture that is both remote-friendly and productive.

Read more »

Design Sprint Day 3: Decide

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 will assess which parts of our designs are most successful and create a storyboard to show the steps that our target customer might take towards achieving the goal.

Remember your sketches from Day 2? It’s time for the team to see them. The purpose of this activity is for the entire team to see each other’s work and get to pick out all the best pieces for our next activity.

Read more »

Unit Testing our Design Patterns exercise

So, our little exercise in design patterns is getting quite messy. Which is ironic, considering it’s an exercise in design patterns.

The reason is that I’m mostly trying to be very focused on the Design Patterns book and just fleshing out the example implementations they provide.

Therefore, in order to organize things, I believe this is the right time to add unit tests. As a plus, I also get to test my little gem in an automated fashion.

Here I’ll only go through the RandomMazeBuilder class since it would be quite lengthy to go through every single file. To see all the other specs, just checkout the repo.

Read more »

How to run old code - an introduction to virtualization

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 running bundle install - there are many ways that setting up projects is not always straightforward. Add to this several projects and your development machine becomes a mess of hard to diagnose issues due to mismatched system dependencies. Virtualization to the rescue!

Read more »

Advanced Forms (No JavaScript!)

When working with complex forms, it’s really easy to immediately start adding JavaScript to implement non-common behaviors. But there are some hidden gems in the HTML standard that allow us to do a lot of that without adding a single line of JavaScript!

Read more »

Apdex score - One score to rule them all!

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 your application. What would you say?

I would say the apdex score is 0.98 and that’s pretty awesome. Now, if you are wondering what is this apdex score and what does the 0.98 value tell us, you have come to the right place.

Continue reading to understand this better.

Read more »

Burnout Survival Guide

“Your body aches. Your brain feels like a mouldy wrung-out dishcloth. You can barely get anything done and, hang on, why are you even doing this job anyway? Is there something wrong with you? Nope. You’re just burning out.” Imogen Dall. If you are experiencing or would like to avoid any of these then this post is for you.

Read more »

Design Patterns in Ruby - The Builder

In the last part of this series, we left our little maze game gem generating random mazes that had random kinds of rooms using the abstract factory pattern.

While that was good enough, in the case of the our maze game, it turns out mazes can be pretty complex objects, being a collection of rooms, doors and walls of many types. And even though I didn’t add too much variety of these components, things could get pretty convoluted.

It turns out there’s a pattern just for these cases: the Builder Pattern.

Read more »