Who to take startup advice from

Everyone has an opinion on everything and a reason to think they are right and that you are wrong. Ironically enough, this post can very well be one of them, but I’ll let you make that decision yourself ;-).

When I was going through Wayra, the startup accelerator Toky was part of in 2014, the advisors hired to help us were coming mostly from the corporate world. They all had relevant roles and academic titles proving on paper that they made the time to learn what they came to advise, but the disconnection between how they did things at their jobs and how things can be done in a tiny startup that is more dead than alive, didn’t seem to be evident to most of them.

I remember being forced to make a huge spreadsheet with user acquisition projections, how much we were going to make in sales, and how things would look like in 5 years. It made complete sense to them that we should be spending time on multi year projections instead of on building a product and actually selling it.

In another occasion, I remember we were having meetings and attending law firms to meet Intellectual-Property lawyers who were helping us patent everything we built. The only problem was that we didn’t really have anything worthy of a patent at that time but they were following a timeline that I’m sure made sense on paper but in reality was completely useless and a waste of time.

Why weren’t we meeting product people and working all the time on user acquisition? Why no one was noticing that we didn’t have an infinite runway and that we should be focusing on improving our metrics to look more appealing to potential investors so that we can survive another year? Why was all advice assuming we had a huge budget of millions to pay people to come visit us and buy our product?

I’m sure everyone there had good intentions and really wanted to help. I met great people in there and I know one of the reasons we still exist as a business is because they gave us the seed money we needed to take off. The least thing I want is to sound ungrateful.

My point is that you should listen to every advice and opinion you can, but giving your maximum attention to the ones coming from people who had been in your shoes before or that are in a place where you would like to be in the future.

Like making charity with other people’s money, throwing startup tips from the comfort of a safe corporate salary, is just too easy to not do it. Always take them with a grain of salt.

Picking your startup idea

There’s plenty of advise out there about how to do it, but based on my own experience, it all comes down to two fundamental things: how much you love it and how are you going to make money with it.

The idea—the product you are going to build—is going to stay with you for years to come so you better feel passionate about it and be ready to think about it every day for years.

In my case, it felt natural to start a telecommunications startup because that’s what I have been doing for the past 6 years at that point. I liked it, I felt passionate about it and learning new things on the subject became like a hobby of mine.

Obsession is a strong adjective but it pretty much describes my feelings towards this industry and how much I like it.

My point is that your likelihood of succeeding with your startup increases significantly if you are building on top of something you truly love, being in an industry you find interesting and when working on your product doesn’t feel like a burden. You have to love doing it.

Then, there’s the ability of your idea to generate money. You must think about this early on even if you are living with your parents today or have no responsibilities with other people like significant others for example.

Doing it for the money as motivator is debatable and I’m not saying that. What I am saying is that the discussion about how you are going to turn your time and expertise invested in your idea into tangible wealth must be addressed since the very beginning with yourself and with everyone else involved in the risks you are going to take.

The thrill of starting something new and those days of working tirelessly with an excitement expression on your face are going to, undoubtedly, dry out some day and when that day comes you will want to have the assurance you can pay your rent, health and food while you rest and recharge energies.

In the perfect world, your skills, your idea and the industry where your product is going to exist all intersect at a point where making a sustainable stream of income is possible.

When we started Toky we were completely ignorant of how to run a business and we barely talked about how the product was going to make money. It seems like I didn’t follow my own advise and you are absolutely right to think that.

What saved us was that we picked the right idea where our combined skills made it possible to actually build something useful inside an industry that was growing at an accelerating pace. We basically jumped on top of a wave that carried us with it and that ended up compensating for the many things we disregarded during our early days as a company.

It wasn’t luck how we chose the idea, product and the industry—that we did well because it was an informed decision—but it was definitely luck how the industry was growing so fast that admitted so many products to coexist without saturating the customers and allowing us to make money in the process.

So don’t be us and don’t rely on luck so much. Have the idea, product, industry and money conversation early and as often as necessary.

Repurposing this space: how I got where I am today

In July this year, my blogging career will turn 10 years. I still remember how excited I was when I wrote my first post and when I decided to “turn pro” by purchasing this domain 😂.

Looking back you can see things in perspective people say, and I can clearly see now how life changing that decision was.

I didn’t know back then but this blog fundamentally changed the course of my life for the better and I want to share with you what those things were.

Organizing ideas

Communicating ideas is hard. Communicating ideas in writing is even harder.

Writing regularly helped me structure my thoughts in a way that was easier for people to digest and when people can follow what you are trying to say, you unlock a new level in living life.


I don’t suck at English as much as I used to.

I was never good at learning languages and I think that remains unchanged, but forcing myself to write in English and making a plethora of mistakes in the process, made me decent enough to be able to communicate with a wider audience and thus increasing the amount of opportunities I had access to.

Contributing to open-source

After getting used to writing in English I was finally comfortable with writing publicly accessible emails, reading documentation in this language and speaking it without being so afraid.

This step led me to contribute to the Kamailio open-source project with a module called CNXCC.

Contributing to open-source is the best form of curriculum-vitae a programmer can have which takes me to the next part …

My first remote job

I met Carsten in 2012 after his company was hired by the company I was working for back then in Asunción, Paraguay. He is a cool and a very smart guy and after a while working side by side with him, he offered me a position at his company working remotely.

I resigned to the “safe” job I had and went to work for him and his company in Germany from the comfort of my home in Asunción. I did this against the advice of my parents and this is also another big learning for me: friends and family always want the best for you and they usually advise you against taking big risks but at the end of the day, rewards that are worthwhile only come from taking those risks.

Anyway, the module I wrote served as a proof I’m technically capable of doing the things I said I could and that landed me the best job I ever had (after Toky 😜).

He took a chance with me and I’ll forever be grateful to him for that.

The very last picture at my, then, previous job.

Moving countries

Months after starting working remotely my then girlfriend (today wife) got promoted to a position that required her to move to Mexico.

I didn’t take it easily but I ended up moving with her and I’ve been living in Mexico since 2014.

In retrospective, I know my decision to follow her was easier to make because I would not be resigning to a career in Paraguay and because I could take my job with me by continuing working remotely. This wouldn’t have been possible at all if I wouldn’t have taken the risk of working for Carsten in 2013. Win-win.

By this time in my life I was already very comfortable with taking risks. I was young and naive but somehow, the decisions I was making were surprisingly right and I was getting along with uncertainty.

First 5 seconds in Mexican soil. I was moving to Mexico City without ever having been to this city before.

Founding Toky

We are now in September 2014 and about to make the single biggest decision in my professional life.

Being the risk taker I was (am?) I was looking for the next big challenge and against all reason, Oscar (my cofounder) and I decided to start a company, Toky.

He moved to Mexico and I resigned to that lovely job I had and it took all of me to be able to do it. I really loved it and I doubted doing it until the last minute.

Neither of us had any idea about how to run a business but we did it anyway. The only thing we were sure of was that we were very good at the things we specialized at: me at telephony and him at product design.

This part requires a lot of elaboration and I’ll do it in future posts but what I can tell you right now is that so many things happened between then and today that the overused saying of “roller coaster of emotions” falls short compared to what we went through.

The next chapter of this blog

If you look at my previous entries you will notice this blog was about technical topics regarding telephony.

I still am an engineer and a programmer at heart but I feel like this time around I should blog about my six years of experience running a company that had very few chances of succeeding but did it anyway.

I’ll be telling anyone willing to read me how I did it in the hope of helping other people do the same.

An update after almost 2 years without posting

I can’t believe it’s been almost two years since my last post, time flies.

I’m gonna make this short and concise:

  1. I started my own company, I am now a startup CEO and cofounder 🙂 .
  2. A previous post is the project that started it all. It has mutated quite a bit and turned into Toky, a product that was built from scratch and that I am proud of, specially in the technical POV.
  3.  I don’t blog anymore, as a matter of fact, I spend my days coding and coding with not much time to write about anything other than Toky. You can find my recent posts in the Toky Blog.
  4.  I no longer maintain my opensource projects. I’m really sorry about this but I don’t have the time to do it anymore.
  5. I don’t reply emails about questions on these projects. I used to reply them with apologies for not being able to help them, but the number of emails kept increasing that they became a burden so I simply stopped replying. Again, I’m sorry about this, it’s not personal.
  6. I may go back to blogging soon.




Sigapy: a failed attempt to create a product in Paraguay

A little more than a year ago, I created a service which main intention was to provide my fellow Paraguayans living abroad, an easy way to call home using their smartphones. It was not like Viber or Tango app, you could actually call to land lines and mobile phones, and of course between Sigapy users.

There’s no specialized service like this in Paraguay, and I wanted to fill that void with something new and easy to use, and so Sigapy was born. It was conceived as an academical project but soon it started to appear exploitable as a commercial service, but the environment for this kind of business in Paraguay isn’t the best (actually, it’s horrible) and I had to shut it down for my own juridical sake.

Today, I decided someone else can give it a try, because it’s a more or less mature product and can easily be adapted to someone else’s needs.

Check out the videos and the landing page I created. The videos are in Spanish, but the flow can be understood by anyone.



UPDATE: with this project, I won a place in the 4th generation of startups of Wayra Mexico. More updates to come in the future posts :).

NGS, or Next Generation Support, is a project that I created to participate in the TADHack event. It is about improving the user experience we have when we call to customer support, and it takes advantage of the new telco technologies we have today, to create a product that tries to fix a rather common issue which is the bad quality in customer support systems.

What NGS has to offer?

  1. Everyone has a smartphone, and there’s an app for everything, why not for a specialized customer support?
  2. It’s really annoying to navigate through the IVR menus. It’s easier to directly go to the option you want, with a click.
  3. It can be completely free, the only thing you need is an Internet connection.
  4. The customer would be able to call from literally anywhere in the world, using Internet, no toll-free numbers at all.
  5. Call center agents can know exactly who’s calling, where is he located, and what does he want, and with this info a better customer experience can be offered.
  6. The customer can take advantage of the current technology, with HD voice quality, chatting, video calling, screen sharing, etc.
  7. The customer can know exactly who is behind the phone, with a picture, an email, a full name, and he can rate the experience he had with the agent.
  8. In summary, improved customer experience from every angle you can think of.

Opensource communication technologies I used

  1. Kamailio
  2. rptengine: this one belongs to the Kamailio project but deserves special mention because it powers the media relaying. Extremely important
  3. SIPjs
  4. Freeswitch
  5. CSipSimple: compiled in library mode, it allowed me to use PJLIB to create SIP apps for Android.

I posted below, a few screenshots of the software, and I’m planning to add more and release the code during this month.

This is a work in progress. The project has only 3 weeks of being alive, at the time this post was written.

Screenshot_2014-06-05-20-33-52 Screenshot_2014-06-05-20-34-00 Screenshot_2014-06-05-20-34-17 Screenshot_2014-06-05-20-34-21 Screenshot_2014-06-05-20-34-32 Screenshot_2014-06-05-20-34-39 Screenshot_2014-06-05-20-35-59 Screenshot_2014-06-05-20-36-15 Screenshot Screenshot-1



Cnxcc prepaid module: workshop on Kamailio World

This is a short tutorial on how to test the cnxcc module with live traffic and from any softphone. These are the things that you need:

Register from any softphone:
* server: cnxcc.caruizdiaz.com:5070
* username: anything between 5000-9999. Actually anything will work, but I’d rather use those numbering ranges
* password: anything. It is not required
* credit: you will get 1$ credit every time you register. If you place a call and run out of credit, just register again and you will get +1$ on your account.

Place a call: you can actually call to any number with the following pattern: “^09\d{8}$”. This basically means that you can call to a number starting with “09”, that has 8 digits afterwards. Example: 0981223344

You will run out of credit: after a little more than 10 seconds, you will run out of credit and your call will be terminated. Don’t worry, you will receive a SIP MESSAGE on you UA, if it supports it, telling you what just happened.

Recharge your line: if you want more credit, just re-REGISTER from your UA

Check you credit: by texting “credit” to destination “service“, from your UA that supports SIP MESSAGE.

Check the web: you can actually hang up somebody else’s call, or your call, from the web interface. It looks nice and you can log in using “guest” as username and “123456” password.

Call each other: you have the option to call other registered users, but for this, you have to know the number of the other person, or guess it randomly 😉

Duplicated username: you may have chosen the same username that someone else did. If that’s the case, your call will last less than 10 seconds if you call simultaneously, or not even start if someone already exhausted the credit. In the latter case, you will receive a SIP MESSAGE telling you that you have no credit left ;).

These are the files involved in this project. I hope you find them useful.

The demo has no media relay configured, so, you won’t have audio unless you are calling each other on the same network.



WebRTC with Kamailio

I noticed lots of queries about this subject, and I created a Kamailio sample script that could help those who are in trouble when working on this.

This post is planned to be explanatory, with some level of detail, but I don’t really have time nowadays so I’m gonna throw it in its current state, hoping to find the time to do it properly soon enough.

  • This script is configured to run behind NAT, port TCP 10080 and TCP/UDP 5090 are exposed to the Internet
  • You have to create valid users using, preferably, “kamctl add …”
  • RTP ports should be open in range 30k-35k, inclusive
  • I used jssip as webrtc SIP UA: http://tryit.jssip.net/
  • Always disable video before placing a call from jssip UA
  • Always use Chrome. Firefox won’t work, and I’m not sure about other browsers
  • I tested calls between:
    • jssip to csipsimple
    • csipsimple to jssip
    • csipsimple to csipsimple

This is the link to the script

Install mediaproxy-ng on Debian based systems

This is a variation of my original post on how to install mediaproxy-ng on rpm based operating systems.

This one goes for the Debian/Ubuntu users, which are a plenty out there.

1. Clone the repository

git clone https://github.com/sipwise/mediaproxy-ng.git

2. Install compilation dependencies

apt-get install build-essential iptables-dev debhelper libcurl4-openssl-dev libglib2.0-dev libglib2.0-0 libxmlrpc-c++4 libxmlrpc-c++4-dev linux-kbuild-3.2 linux-headers-3.2.0-4-common linux-headers-$(uname -r) module-assistant

3. Go to mediaproxy-ng directory and build the Debian packages

cd mediaproxy-ng/ && dpkg-buildpackage -d

4. Go back to the parent directory. It should contain a series of .deb files. Install them all

dpkg -i *.deb

5. If everything went OK, a message similar to this should appear on the console:

DKMS: install completed.
mediaproxy-ng not yet configured. Edit /etc/default/ngcp-mediaproxy-ng-daemon first.
Setting up ngcp-mediaproxy-ng-kernel-source (2.3.5) ...
Setting up ngcp-mediaproxy-ng (2.3.5) ...
Setting up ngcp-mediaproxy-ng-dbg (2.3.5) ...

That is pretty much it, quick and straightforward, maybe because the Sipwise guys love Debian more than any other Linux distribution 😉