x
This website uses third party cookies exclusively to collect analytics data. If you continue browsing or close this notice, you will accept their use. The EU now requires all sites to display this banner which confuses users and does nothing, actually, to improve your privacy.
Read more on why this law is ignorantLearn about this website's cookiesDisallow cookies
Carlos Fenollosa

Carlos Fenollosa

Engineer, developer, entrepreneur
This chip got me into computers

My projects

It's been years since I wrote a traditional CV. Though most of my professional life is on my Linkedin, this page connects many pieces into a big story.

Here you will find most of the technologies I've worked with and projects I've contributed to. Besides being a good complement to a professional portfolio, I hope it can help others to discover ideas and technologies that can be applied to self-learning projects.

If you want to read these cronologically, you can [jump to the bottom]

Summary

My main project is my startup Paradoxa, an AI company. We are working hard on Optimus Price, an e-commerce price recommender powered by AI.

I love science and the scientific process. I still keep a fossil from my PhD days, a compilation of funny papers.

As you may have guessed, I am a tech guy. I developed a blogging engine in Bash and it is probably my most successful public project. At the opposite side of the stack, I'm writing a tutorial operating system when time allows it.

I believe video is the future of education and programming will probably be the most requested skill for the next 50 years. I produced a series of videos aimed at kids and adults who wish to program but don't want to deal with all the computing complexity: Aprende a programar (in Spanish).

I've always been interested in journalism and, well, you have probably seen my blog. I started it in 2004 and reset it in 2008 with its current form. If you like reading about the linux terminal, scripting and automation, keyboard layouts and technology hacks, you should subscribe to it.

The Spanish podcasting scene is still very amateur but I jumped in at the beginning, in 2005. Those still relevant are Dame la voz (news magazine), 5 minutos con Carlos Fenollosa (tech, in a hiatus), and El Amuleto de Yendor (tech, now finished).

*****

Paradoxa (2014-)

For my 30th birthday I decided to take a Sabbatical and decide what to do with the next 10 years of my life.

I liked my job at the BSC, but I also had the opportunity to start a business with little personal risk. I decided that life is too short for regrets, so I left the BSC and took business courses at Barcelona Activa, Barcelona's public entrepreneur school.

First project: Puput

My first project was actually my partner Ramon's idea. It was a very simple concept: when you fly abroad and land, you usually want to call somebody to tell them you're ok. Furthermore, when we were teenagers with our first cell phones, we used to have a "missed calls" code with friends to save money: 1 missed call meant "I'm coming", 2 missed callt means "You go, I'll come later" and 3 calls meant "Call me, it's important and I don't have credit".

The association was simple: what if we could automate the process to send more complex messages?

Ramon and me co-authored a patent to send data without the internet, using missed calls. The patent was implemented into many products using DID numbers and an Asterisk server.

First we published a tech demo called Puput to listen to your emails using free voice calls. It was so surprising that it got us on TV!

Access emails without Internet Puput, access emails without Internet

The second one was called Xateja and it was literally a Whatsapp clone which auto-detected lack of Internet and sent messages using our patented protocol. I tested it on my honemoon while in the US and it worked, we approached Tuenti for a partnership, but we found it difficult to license the technology.

We also built other prototypes: An app to Tweet without the Internet which we presented to Twitter at the 2016 MWC, a weather app for travelers without internet which included radar images encoded in a single SMS, and many other twists around a technology which was cool but ultimately deemed to disappear along with roaming costs in the EU.

Tweet without the Internet Sending Tweets without the Internet

We learned three hard lessons: don't spend your money on lawyers and patents, selling is difficult, and never develop your product before talking with your potential customers as your assumptions will be wrong. Fortunately, in the end we applied Puput to a consulting job which helped us maintain the company afloat.

Second project: chat bots

While developing Xateja we included chat bots as contacts, like Telegram did back then. We continued exploring this path and found bots a very cool AI application.

Fortunately, until late 2016 there was an unofficial API to connect to Whatsapp and I built some Whatsapp bots that I tested with friends. The most critically acclaimed was "Roberto Bonio", which had many features such as event scheduling for groups, translating your dinner by using OCR on a picture of the menu, calling a pizzeria to place an order and, of course, mocking your Whatsapp group friends.

With the permission of my now wife, I built a special version of Roberto which DJ'd on my wedding by connecting to Spotify and accepting requests from guests via Whatsapp. DJ Roberto was built with Elixir which is an awesome language for robust webapp backends.

Jokes aside, we found bots easier to sell since it was very easy to tailor them for a customer. We created a chat bot for the fitness company of a very good friend of mine which onboarded new customers and provided personalized workouts for them.

Third project: Optimus Price

Learned: Molecular biology, personalized medicine, simulation techniques, supercomputing, Perl, Python, R

[Jump to Paradoxa]

*****

Barcelona Supercomputing Center (2007-2014)

I joined the Molecular Modeling group at the Barcelona Supercomputing Center. I was an intern at first, finishing my Master's thesis with a machine-learning software to determine promoter location

After finishing my thesis I joined as a Research Engineer, doing some R+D but mainly developing software to offer research services. I learned a great deal of supercomputing techniques and had access to the most powerful machines in Spain: the Mare Nostrum, then one of the fastest computers in the world and famous because it's located in an old chapel, and many dedicated machines, like an Altix with 1TB of RAM, or one with tens of thousands of GPU cores.

During this time I learned parallel programming techniques, applied Machine Learning for many problems, and also discovered many molecular simulation techniques.

My main contributions at the BSC were:

UNIX for scientists

As a research engineer, part of my job was to support other researchers and train them in the UNIX toolchain. I produced some content like a very popular bash cheat sheet ready to print and hang in your cubicle. The cheat sheet evolved into a text file with UNIX tricks that has been featured several times in HN and Reddit and that I still maintain.

Bash cheat sheet Bash keys cheat sheet
screen cheat sheet Screen keys cheat sheet

At some point I prepared a training workshop with basic UNIX tools (sed, awk, grep, ...), you can download the slides and a summarized cheat sheet

UNIX workshop slides UNIX workshop slides
Functional programming and MOOCs

I had the enormous luck to cross paths with Santi, a brilliant colleague who introduced me to Scala and functional programming.

I took the famous Odersky's Coursera class and found it fascinating. At the University we had been taught many techniques, but functional programming was new.

This was also my first MOOC, and I liked the experience, so I took a couple more, From the Big Bang to Dark Energy, just for fun because I like space (who doesn't?) and Computing for Data Analysis.

To date, I think MOOCs are a fantastic complement to traditional education, and I take online courses in high regard when I interview candidates for my company.

Learned: Molecular biology, personalized medicine, simulation techniques, supercomputing, Perl, Python, R

[Jump to Paradoxa]

*****

University (2001-2008)

I majored in Computer Engineering, a mixture of Computer Science with a heavy Engineering curriculum, not that much math, and lots of projects. It is a very thorough syllabus with hard classes on computation, networks, operating systems and processor architecture. We were taught mainly C/C++, Java, Assembler, and a few obscure languages.

It doesn't make sense to detail the many projects since it's a full University curriculum, though I want to highlight some of them. First, in our second year (2004) we implemented a Reversi game, using MiniMax for the computer player. It was extremely hard to do since we hadn't taken AI classes yet, but it worked, plus we learned a lot of Java. This turned to be my preferred language for a long time.

A Reversi game with an AI computer player A Reversi game with an AI computer player

In 2005, third year, we programmed a then-called domotics (now IoT) mobile app with Java+WAP and a REST interface to control home devices. Since we didn't have any smart home devices then, we simulated them too. The project was very successful and one member of our group did his PhD as a continuation of it.

While finishing the Engineering degree I enrolled for the Artificial Intelligence Master's program, so I defended both at the same time. The Master's was then brand new so we were few students per class and professors were very close to us. There were seminars from invited professors, interesting projects, opportunities to enroll on a PhD, it was a great experience.

First web sites, blog and podcast

University years are a great time for personal projects. This is when I created my first web page with Dreamweaver/Word, which I won't link here since it's a very embarrassing site full of GIFs and <blink> tags, then Humor Freak, a page with jokes and nerdy content to have something to read with lynx while Gentoo is compiling

Also while at the University I started my first blog (2004) and podcast (2005). Some years later, in 2008, I tried to launch a professional blog, ExtraExtra, with my friend Sergi. It evolved into a bigger project with some funding, Referenta, managed by external people. Our goal was clear and ambitious: to create the best technology blog in the Spanish language. Unfortunately, after a few months of producing critically-acclaimed content, some differences between management and the investors forced a closing. With it, ExtraExtra died, too.

ExtraExtra, a commercial blog project Announcing Android on ExtraExtra, a commercial blog project from 2007
University clubs: magazines and sysadmin

Since I spent almost all my waking hours at the campus and class schedules were not that great, I joined many clubs. That was definitely one of the best decisions I took. The dearest for me is L'Oasi, the Computer Engineers magazine. I was President for a few years, authored many articles and comic strips, and acted as sysadmin too.

In the Oasi mailing list we had great editor flame wars, and I decided to learn vim which, to date, is my editor of choice when no IDE is available.

I discovered Debian, my distro of choice since then, and set up a Jabber box for the whole campus with my friend Kiusap.

Another club I joined was the Fòrum FIB, which organizes a yearly fair for companies to approach the University world. And a fun one was Fiberparty, a computer LAN party which was very successful in an era when most people didn't have Internet at home — and we had to carry heavy CRTs and towers to the event!

Free software community

I got involved in the Free Software community by translating liferea, an RSS reader. Coincidentally, the 2006 GUADEC (Gnome international conference) was hosted in my home town, Vilanova i la Geltrú, so I volunteered with the organization. I joined the GNOME foundation and spent an insane amount of time proselytizing for Linux, especially Debian, and Gnome. I installed Linux on an old Libretto 50CT and got it signed by Stallman.

At a Stallman conference Stallman signing my Libretto

My first Debian was Woody (2002) and I've been using it in servers since. I was also a fan of Ubuntu for a long time, in L'Oasi we ordered hundreds of Ubuntus for distribution among students. Ubuntu was a great improvement for the Linux desktop at the time, though I've always preferred Debian on servers.

A cool anecdote from this era is that my friend Kiusap was working as a sysadmin an NGO also named Ubuntu. He observed that their server started bouncing a ton of e-mails sent to wrong addresses at @ubuntu.org instead of @ubuntu.com, and we wondered whether it would be a good idea to create an account mark.shuttleworth@ubuntu.org to email the actual Mark Shuttleworth as a practical joke.

Ubuntus for distribution We ordered Ubuntus from Canonical to distribute among students

Learned: Computer Engineering, Artificial Intelligence, Java, HTML, MySQL, Linux sysadmin, magazine editing, vim

[Jump to Barcelona Supercomputing Center]

*****

High School (1997-2001)

In my late years of high school I discovered Visual Basic 6. Now that was approachable by a teenager! In the computer science class we were supposed to learn MS Office, but a group of friends who already knew how to use computers joined together to learn VB.

At the end of the semester we had produced an Excel spreadsheet full of macros, an Access database and a VB interface to store results from La Liga, along with the team info (like PC Fútbol).

La Liga results Football and computers, a 16-year-old dream

Thanks to the La Liga program I got in contact with the University. In Spain, the year before the University all high school students must complete a mini-thesis. Of course, I wrote a computer program, in Visual Basic. It taught Math to high school students. This is the first time I remember spending many nights awake, programming, with the only help of a not so great VB book.

In the end it was worth it, I received a prize and a grant to study Computer Engineering.

my first real program Ingenium, a software for tutoring math
First Internet contact

My first time on the Internet was circa 1997 when we snuck into the home office of my friend's father at night. I remember downloading and printing like 20 pages of bad jokes and thinking that was awesome. Then we chatted with some guy from Sevilla, on the other side of Spain. It was an incredible feeling. A few days later I copied "the internet" from my friend's computer, turns out it only was the shortcut icon and it didn't work at home!

I tried all Windows versions of the 90's until I settled on Windows 2000. It was very stable, especially to connect to the internet using dial-up.

My first Internet experiences, besides the Web and e-mail, were Usenet (newsgroups), IRC and especially MUDs. It was the era of chats and I was an early ICQ user though I ended up preferring MSN Messenger as it was very popular in Spain.

BeOS and early Linux experiences

Meanwhile, I visited a friend who had a very strange software in his computer. It was like Windows, but not really Windows. It was called Linux. He gave me a copy and I tried to install it. I failed miserably. It was RedHat 5.2 and it kept asking me weird questions about some RAMDAC and telling me it may damage my monitor.

Some months later I bought a magazine with another weird OS named BeOS. It detected my "winmodem" perfectly and got much better performance from my AMD K6-II, so I used it almost exclusively, but I kept a Windows partition for playing Starcraft

Finally, I got a Mandrake 7 CD set on a magazine and managed to install it, set up X11, and connect it to the internet after going through much hell. It was so different, I loved it!

Learned: The Internet, MS Office, Visual Basic, Linux, BeOS

[Jump to University]

*****

Childhood (1992-1997)

Get ready for a nostalgia trip! I doubt this section has any professional value, but I guess it wraps up nicely my serious projects and provides a personal touch to complete the section.

my first computer My first computer

When I was a child my only access to technology were calculator watches, Game&Watch clones and a Game Boy.

I first used a computer around 1992. It was an obscure brand 386 laptop with 2 MB of RAM that I used to "borrow" from my father when he wasn't looking.

My friends and I exchanged diskettes and we quickly learned what a computer virus was and how to make backups.

My main stack was DR-DOS and later Windows 3.1, using office suites such as Lotus and Open Access. We had to use what our parents bought, usually cheap software and games, or software copied from friends.

Obviously we didn't have any Internet so the only way to learn was by reading library books and computer magazines. I typed numerous QBasic listings by hand and ultimately learned how to write my own programs.

a BASIC program A "guess-the-number" game in BASIC
Digital magazines and animation

I loved reading magazines and I published my own, a digital one named El Pincho (The Prickle) illustrated with Paintbrush and edited with Neobook for DOS. I sold two copies for 100 pts (0.60€) each.

El Pincho Quality journalism

Along with my friend Carlos —signing as Spoke, I was Feyon— we spent many hours crafting frame-by-frame animations that could only come from the mind of two 13-year-olds. We used Autodesk Animator. Since we only had grayscale screens, we couldn't distinguish color, that's why all colors look super weird.

Look at these outstanding masterpieces from two bored kids. No youtube then. Nowadays, making a video like this one may get you a trip to the school counselor.

Games

I gamed heavily with DOS, PC Fútbol and adventure games like Monkey Island, exchanging hints for difficult puzzles at school.

At some point we discovered the sci-fi themed turn-based game VGA Planets, registered two copies with a friend, and after a few weeks we got the diskettes from the US. We played with some people from different schools, and use the message boards to chat. It was a really cool experience, like a prelude of the Internet.

The game that I have wasted the most hours on is definitely Civilization. I vividly remember the first time experiencing the feeling of hours flying by. I was playing Civ and forgot I was supposed to go to football practice!

Learned: DOS, Windows 3.1, office apps, publishing, animation

[Jump to High School]

This has been a fun exercise of digging in my backups. Thanks to the magic of DOSBox and VirtualBox I keep identical copies of the many OS environments, games and files that I used as a child and I recommend you do it too if you're a nostalgic.

*****

This is the end. Thanks for reading!