How to report a bug
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 that are useful for the project maintainers.
Read more »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 that are useful for the project maintainers.
Read more »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 someone submitted a pull request to add a Dockerfile to DatabaseCleaner
I thought it was a good idea, because the current version of DatabaseCleaner requires you to have Postgres, MySQL, Redis, and Mongo up and running before you run rake
.
Here are the steps:
Download the Docker Toolbox, a 176+ MB package.
Install the package, which will expand to 400+ MB in your filesystem.
In the terminal: docker-machine start default
Then within your project: docker-compose up
(before this I had to run eval "$(docker-machine env default)"
because of this issue). Get ready to wait for a few minutes while it sets up your virtual machine.
Finally: docker-compose run --rm gem
When integrating Backbone.js in your Rails App, you might face the problem of the inability to verify the CSRF-Token.
The CSRF Protection secures your app with a token. Rails makes sure that the person who is interacting with your app is someone who started a session in your site, not some random attacker from another site. So you should not turn it off, unless you know what you are doing.
Read more »The other day I was trying to interact with a hidden file input field:
<div class="col-sm-3">
<input class="btn btn-default" class="hidden" accept=".csv" id="geofence_file_input">
<a class="btn btn-default" id="textbox-for-geofencefile">Select File</a>
<span ng-if="LineItemForm.augmentations.geofence.file">{{selectedFilename()}}</span>
</div>
And the CSS:
.hidden {
display: none;
}
Which caused this problem:
Failed: Wait timed out after 100015ms
Workarounds include displaying it, interacting with it, hiding it again, which I didn’t like.
Read more »As of 2016, we will no longer work with clients on fixed bid projects. They are not a good fit for us and we are not a good fit for them.
All of our clients are startups. Fixed bids are counterproductive for startups. They give the client a false sense of security and they punish changing requirements.
Fixed bids make clients think that their project will be finished in a fixed period of time if their requirements don’t change while developing the project. That is a big if!
Read more »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 better than any other available platform of its kind. Slack provides WebHooks, which you can use to post messages to your team’s channels.
Read more »default_scope
is a method provided by ActiveRecord, which allows you to set
a default scope (as its name implies) for all operations done on a given model.
It can be useful for allowing soft-deletion in your models, by having a
deleted_on
column on your model and setting the default scope to
deleted_on: nil
On April 17th we discovered a security vulnerability in the Mercado Pago API. Before disclosing this information, we contacted Mercado Libre and sent them a detailed report of the security hole and how to reproduce it.
The vulnerability allowed anyone to get an access token without using the right secret for an account.
Read more »At OmbuLabs we like to split our time working on our own products, client projects, and open source code. We have embraced the Lean Startup methodology not only for our own products but also for our client projects.
It is easier to apply the methodology to our own products than to our client projects. With our products, we decide what goals we want to reach and what experiments we are going to run to validate our hypotheses.
Read more »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 like you’ve been working on this feature for a really long time? Maybe you have. Is it “done”?
That is a tough question, so I’ll write down our definition of done.
Read more »Often, Enumerable#select
is the chosen method to obtain elements from an
Array for a given block. Without thinking twice, we may be doing more work than
necessary by not taking advantage of another method from the Enumerable module,
Enumerable#grep
.
The other day my friend Juan Rossi reported a vulnerability in the Almundo billing system. Since then, the vulnerability has been fixed by Superfactura, their billing software provider.
Almundo is one of the biggest travel agencies in Argentina. Their site is among the 250 most visited websites in the country.
The vulnerability allowed anyone to download billing information about their clients by creating a pretty simple HTTP GET
request. No programming knowledge required.
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 some cool, useful tricks you can use on Github which can probably make your life easier:
Read more »