Introduction These are some of the lessons that I have learned over my 5 years at a Fintech startup that went from 0 to 100k customers and grew the team from 4 to 50 people. It would be hard for me to identify what we did to put us in this fortunate position; the market…
Category: Articles
Agile or Waterfall; a risk management perspective
Today Agile is the default choice for the software development life cycle (SDLC); every conference, book, or blog post is telling us we are doomed to fail if we don’t follow this established convention. But isn’t it surprising to think that we should use Agile for every possible company doing software out there? Are we…
A different take on validation using the dry-validation gem
If you are using Rails and you find yourself fighting validations more often than you would like to, then you should consider watching my talk I gave at the London Ruby User Group this February about on dry-validation. I will present the API surface which uses a schema based declarative approach and I will compare…
An Introduction to Event Sourcing for Rubyists
Event sourcing is a design pattern to build applications that are domain centric and easy to extend. The pattern is based on the usage of a persistent event log which substitutes the more classical relational database model for Rails applications. Last week I gave this presentation at the London Ruby User Group you can find…
To raise or not to raise exceptions, and the art of designing return values
Each time we call a function that’s meant to perform some operation that could succeed or fail we are always left with the same dilemma. What should be the return value? Should I return nil if a failure happened? Or I should throw an exception? What does failure means anyway? Like every interesting question, the answer is…
Learning to rank with Python scikit-learn
If you run an e-commerce website a classical problem is to rank your product offering in the search page in a way that maximises the probability of your items being sold. For example if you are selling shoes you would like the first pair of shoes in the search result page to be the one…
Introducing Hash#dig_and_collect, a useful extension to the Ruby Hash#dig method
In this blog post I will introduce Hash#dig_and_collect , a simple utility method that is built on top of Hash#dig to help you navigate nested hashes mixed up with arrays.
Dockerized Rails Capybara tests on top of Selenium
If you use Docker to deploy your Rails application you may want to use the same infrastructure to run your tests. However the setup of your Selenium browser tests is far from obvious with Rails and Docker and may generate some confusion . The short answer is available in this repository on Github. For the long answer keep reading this blog post…
How to isolate complex queries in an object oriented fashion
Building complex queries in ruby can make your code quite difficult to read, manage and reuse. In this blog post I’ll present a simple method to decorate active record objects to make your queries fun again!
Create isolated Jupyter ipython kernels with pyenv and virtualenv
Everyone loves isolation. Makes our life easier and our systems much more robust. Isolating Jupyter notebooks makes no exception. Maybe you want to try some cutting edge scientific library, or more simply your latest project dependencies are not compatible with your current system setup. Whatever is your situation, follow me in this simple tutorial on how to…