New IoT Project

I’ve kept this under wraps for a few months now, but I’m currently working on a new project. I’m not ready to make any announcements just yet, but I’m happy to say that the the Illinois Hispanic Chamber of Commerce ( and Chicago’s premier center for technology and entrepreneurship, 1871 ( have selected my group to be part of their technology incubator program. Press release linked below.

Press release from 1871 –

Press release from IHCC –


Screenshot of IHCC press release
Screenshot of IHCC website with third cohort incubator participants

Summer reading and training – The Memory Book

Many years ago, I bought and read this book:

Memory Book

It was written years ago by Harry Lorayne, a well known memory expert and magician. It’s a great book full of practical tips on how to improve your memory, and also shows you memory training exercises. With some training, anyone should be able to remember long lists of words, long numbers, the order of a deck of cards… almost anything you want! I remember that on my first read I found it very interesting, but I didn’t follow the exercises. I did learn and briefly used some of the mnemonic techniques, but after a long time of  not using them- most of it has been forgotten. After recently seeing a few demonstrations of memory stunts, I think it’s time I revisit this book- and this time follow through some of the exercises.

Should be fun!

Master’s project – done!

Just yesterday I finally presented my final project for my Master’s degree. I think it deserves a separate post to explain in more details what it is and how it works, but for now I’ll show you a picture of the poster I created for the poster session.

Resuminer project poster
Resuminer – Project Poster

The project is titled – Resuminer: A Resume Recommender System for Job Seekers using Cluster Analysis.

That’s all I’ll say for now, more details later. I’m glad it’s finally done!

BPDM & KDD 2016

This year once again I was lucky to be part of the BPDM (Broadening Participation in Data Mining) team ( and I had a chance to go once again to the ACM SIGKDD (KDD for short) conference in data mining, this year held in San Francisco. More information about the conference at

Welcome to KDD 2016!

It was a packed schedule, filled with multiple keynote speakers, panels, paper presentations, poster sessions, and of course, meeting new people.

Thanks to the people at Zynga, we also spent a day at their headquarters getting a few additional talks organized by BPDM.

BPDM talk

All in all, great fun, great talks, and great memories.


I recently participated at a Hackathon at my alma mater, UPR Mayagüez. I wanted to play round with a telephony API and see what I could come up with. My first idea was short lived. It was too complex for the limited time and I also realized that Plivo, the cloud API provider I was using, doesn’t support SMS for virtual numbers in other countries- which I planned to use (there seems to be a beta program, but I found out too late)- so I went with plan B. I’ve had this idea for a while, so I worked on a solution to my problem.

Hackathon badge

Here’s my idea and some background

I’ve had the same cell phone number for close to 15 years now. It’s also attached to more web services than I care to count for. The telephone industry has also changed a lot in the last 20 years, and many of the long distance imaginary barriers inside the US don’t exist any more. Except for Puerto Rico (and possibly other US territories). Puerto Rico phone numbers don’t work with many US services, including Google Voice, Uber, several phone conferencing services, Square, and many others I’m sure. I haven’t been able to find any logical reason for this, so I’m attributing this to the creaky backends of the telephone systems. It’s been a while since cell phone providers have considered Puerto Rico as a national number for phone calls. If you are a telephony guru and know why this is, feel free to chime in!

One of the things I’m planning to do at some point is get a new phone number from the continental US. I don’t want to lose my old phone number, but I wouldn’t like to pay two phone bills just for this. Enter MPhone. My plan is to port my old phone number to the cloud, and I’ll pay a fraction of what an extra phone bill would cost. I can then forward phone calls and SMS to my new phone number.

Building the backend for MPhone was fairly simple. I did spend a lot of time trying to debug why the caller ID was not showing correctly. After a lot of testing, it turned out to be on issue on Plivo’s side (already contacted them, waiting for a response). I used PHP for this because it was the lowest friction for me and time was limited (I have my eye on you Node.js and Heroku!). All I needed to do was to assign a script to each action (e.g. incoming call, incoming SMS) and dynamically generate an XML file with all the required attributes (e.g. incoming phone number, outgoing phone number). I got it all working the way I wanted, but I think I’ll add some new features in the following days.

Twilio seems to be what all the cool kids are talking about. Why did I go with Plivo instead? Pricing. Twilio charges 8X for a Puerto Rico phone number compared to a US phone number, while Plivo “only” charges 4.4X what they charge for a US phone number. Plivo turns out to be 45% cheaper (that’s only for renting the phone number, but phone call costs and SMS were also marginally less expensive). Twilio seems to have more features (Plivo doesn’t currently support MMS, Twilio does), so I might also give it a try at some point.

Pricing comparison
Plivo vs Twilio


Turns out my plan was flawed all along. I did all my testing using a virtual US phone number (a price consideration, since I was using a test account with only $5 credit), and while writing this post I went back to check pricing at Plivo, and they don’t fully support SMS for Puerto Rico phone numbers. All is not lost however, I can still do the inverse of my original plan. I can get a US phone number in the cloud and forward it to my Puerto Rico number. I already contacted Plivo to see if there’s any possibility of fully supporting SMS for Puerto Rico phone numbers in the future, but I’m not holding my breath. In the mean time, I’ll probably add a few extra features (I’m working on adding a database backend) and I’ll also research other possible providers.

Code coming soon, will update the post when it’s ready!

The Good, the Bad, and Javascript

Javascript, not unlike PHP and Perl, is one of those languages people like to bash. Myself included. I should point out that the last time I took a serious interest in Javascript was in the mid 1990s, when I copied and pasted some code to add to my Angelfire webpage. It made an annoying pop-up window show up and it asked you for your name. Javascript was never designed to be an ambitious language, it only ran inside the browser, it made everything slower, and it was not meant to be secure. As of today, there are frameworks that allow you to write native iOS and Android apps in Javascript. Javascript is here to stay for the next few years, and I’m embracing it.

In the Javascript episode of my podcast (listen here:, Omar made a good point. Javascript has become popular because it has a low barrier of entry, it’s easy. You only need a browser and an editor (which can also be a browser plugin). Remember what made Perl popular? It was easy. What about PHP? It was easy. It’s the ease of use and flexibility that sometimes causes lazy habits and unmaintainable code. Ever heard programers talking about how elegant Smalltalk is, or how the simplicity of Lisp makes it beautiful? I don’t doubt they are right, but those languages also require a different way of thinking. A different paradigm. I think imperative programming is what most people can immediately relate to (unless you’re an Emacs person 😏). Javascript is still evolving, and the sooner I start working with it the easier it will be to keep up with it.

For the next few months I’ll give Javascript another try. Watch out for what comes out of it. Also subscribe to my podcast (Go Code Yourself), there’s a new episode coming soon!

I’m back!

I’m not going to make up excuses. I’m running way behind on the blog, but I’m still here. I spent about a month traveling, but now I’m back home. What am I working on? Mostly on getting up to speed and back to my goal of weekly blog posts, status reports, and podcasting. I’ve also been working on some stuff behind the scenes. Last week I interviewed Adam Cheyer. You may not know the name, but you probably know his work.

Adam is the co-founder of Siri Inc, the start-up that was later acquired by Apple and became something that is currently bundled with every iPhone sold. It’s very interesting to hear him tell the story of the evolution of Siri, and how it originally had many more features but they had to cut back. You can see the whole interview here:

Why was I interviewing Adam Cheyer? Well, for the past few years I’ve been a volunteer for the Broadening Participation in Data Mining group (BPDM for short), and we are starting a series called Data Mining Innovators- where we want to reach out and interview influencers in the Data Mining field. Adam was kind enough to be our first guest in the series. The interview focuses on his thoughts and experiences in Artificial Intelligence, Data Mining and the related fields. We talk briefly about Siri, but the whole interview is very interesting and worth watching. If you want to know more about BPDM, you can visit You can also follow us on Twitter @BPDMprogram and join our FaceBook group at If you have any suggestions for people we should interview, let me know!

Now back to our scheduled programming…

Follow me on Github!

Are you following me on Github? You’ll be able to see what I’m working on before I write a blog post about it:

I haven’t forgotten about updating the blog, but I did forget to mention that I’m currently traveling for a few weeks. My Internet usage has been limited and most of it has been through my phone or tablet and I haven’t had the chance to do as much work as I originally thought. 

Stay tuned, we’ll be back to our regular programming real soon!