Projects



  • SageMaker Studio for Team Collaboration

    AWS SageMaker Studio is a very compelling choice as a development platform for Data Scientists and Machine Learning Engineers, but it is not easy to set up and it is heavily geared towards using AWS services for everything.



  • Generating music using images with Hugging Face’s new diffusers package

    Now integrated in Hugging Face’s diffusers package!

    I have been astonished by the recent improvements in Deep Learning models in the domains of image generation (DALL-E 2, MidJourney, Imagen, Make-A-Scene, etc.) and text generation (GPT-3, BLOOM, BART, T5, etc.) but, at the same time, surprised by the relative lack of progress with audio generation. Two notable exceptions come to mind: MuseNet treats sheet music as sequential tokens (similar to text) and leverages GPT-2, while Jukebox and WaveNet generate music from raw wave forms. Even so, is audio generation a laggard because there is less interest in it, or because it is intrinsically more challenging?



  • Deej-A.I. App

    A couple of years ago I created a deep learning model to automatically generate playlists, which I deployed as a webpage using Flask, PHP and JavaScript and as a simple WebView app on iOS and Android. I decided to put into practice what I have learned about web programming and deployment since then and rewrite the whole thing as a responsive ReactJS / React Native application served on a Kubernetes cluster.



  • Web scraping with a proxy pool (the cheap way)

    Probably the hardest thing about Data Science is getting hold of the data. Companies are willing to give away “free” services in return for the data they collect on how you use them, and this gives them an edge over their competitors. It is not surprising then, that they don’t take too kindly to people relentlessly scraping data from their websites and employ a number of sophisticated detection algorithms to deny requests that come from the same IP address, are too similar or simply look fishy. While it is immoral (and sometimes illegal) to download unreasonable amounts of data, without data, the development of models is monopolized and therefore stifled. I’m not going to condone or decry web scraping, but I am going to show you a useful trick.



  • 101 ways to deploy your services on AWS

    Even limiting ourselves to AWS, there are a baffling number of ways to deploy services. To understand more deeply the pros and cons of each, I put together some Terraform scripts to build the most simple web application with backend I could think of using various different architectures. They can easily be adapted to more complex cases. I have included a table comparing the latency and cost of each service.



  • Cross platform Tensorflow deployment with Python

    Python code to run inference with Tensorflow Lite that works on Android, iOS, Windows, MacOS and Linux.



  • Deej-A.I.

    There are a number of automatic DJ tools around, which cleverly match the tempo of one song with another and mix the beats. Deej-A.I. is more of a radio DJ than a club DJ and pays more attention to what to play next than to how to play it by matching similar sounding music and not just beats.



  • Aventuras con textos / Adventures with text

    This is a set of Jupyter notebooks I have created (in both Spanish and English) to accompany classes I give in Masters in Artificial Intelligence on the latest developments in end-to-end NLP (Natural Language Processing) with neural networks.



  • Trumpy

    Trumpy is a bot that tweets in the style of Donald J. Trump using a fine-tuned GPT-2 model.



  • Goto Error

    When programming in Python, it can be quite overwhelming when you hit an error deep down in a stack of nested function calls. Inspired by Google Colab, I wrote a Jupyter notebook extension that takes you to the relevant line of source code by clicking on the item in the stack trace.



  • Chat

    I put this together for two reasons. For some time now, I have been looking for a way to communicate with my teenage sons while they are in the midst of some online gaming experience (which seems to be most of the time these days). It had got to the point that they wouldn´t answer their phones or check their WhatsApp messages, and I would have to resort to speaking to them via Discord. Or, in the case of the younger one who is at least still in the same house, I would have to go upstairs and switch the light on and off a few times so that he would take his headphones off. This little web application allows me to send text and audio messages, so I can effectively broadcast when it is “Time for dinner!”.



  • Me la Sudoku

    I discovered Sudoku on holiday in Lanzarote in 2005 and became so obsessed with it that I spent my first couple of days back at work writing a program to solve and generate new Sudokus. I was fascinated by the fact that it was impossible to tell the difference between a trivial and a fiendishly difficult Sudoku just by looking at it. The name “Me la Sudoku” is a play on the Spanish phrase “me la suda” which is better left to your imagination.



  • WordPro

    A Professional Word Processor ;-)


subscribe via RSS