Free TextIt Hosting for Coronavirus Projects

In response to the global Covid19 outbreak, Nyaruka is offering free TextIt hosting to all initiatives aiming to help during this pandemic. Projects we support have already sent and received millions of messages answering questions posed by the public and we want to do our part in ensuring even more people can be reached in the weeks ahead.

If you are working on a project related to the Covid19 outbreak, you can create an account for free at https://textit.in/. Once you have built your system please reach out to us and we will add additional credits to your account to guarantee you can scale nationally.

Projects do not need to be health related, we have customers building takeout and delivery systems using TextIt to help avoid physical contact just as we have customers building informational bots to help spread information in communities. Every little bit can and does help!

Our team is ready and eager to help you with any questions you may have.

Please share this with any of your colleagues who might find it useful.

Stay safe, working together we will all get through this.

Why buying Provisioned IOPS on RDS may be a mistake

We love Amazon Web Services, we've been using EC2 and the ever increasing number of services provided by Amazon since way back in 2008, and depend on their awesome set of services to deliver TextIt and RapidPro hosting to our customers.

But one thing with AWS is that it isn't always clear what the most economically performant strategy is. Should you buy reserved instances? Light or heavy? What size instance should you get? What kind of storage on that instance? Even once you figure out the lay of the land, things are often changing, so the right choice six months ago may not be anymore. That's what happened to us.

We use Amazon's Relational Database Service (RDS) to host PostgreSQL. The ease in setting up a multi-AZ instance that will failover automatically, always be on the latest version and have bullet proof backups is well worth the added cost over managing those databases ourselves. When we first started scaling, we ponied up to reserve some large instances, and at Amazon's recommendation, also decided to buy provisioned IOPS to guarantee the performance of the disk on those machines.

Last week, we realized that was a mistake, both from a performance and a budget point of view.

See, provisioned IOPS don't come cheap, on a multi-AZ deployment, Amazon charges 20c per IOPS per month, with a minimum of 1,000 IOPS. So you are spending a minimum of $200/mo to guarantee your database can read and write at that rate. If you have say, a 100 GB database (also the minimum) then you are spending $20/mo on storage and $200/mo to guarantee performant access to it, that's pretty crazy.

Turns out that if your load tends to be peaky, you now have a much better option, using general purpose SSD drives. Amazon covers the specifics in their nitty gritty documentation, but the gist is essentially that for every GB of storage you buy, you get 3 free base IOPS, so for 100 GBs of space you get 300 "provisioned" IOPS for free.

Now obviously that might not be good enough for your database load, but Amazon has a neat trick in that they will credit you for whenever your DB is using fewer IOPS than your guaranteed rate and let you burst above it. This combined with the much more reasonable price, .23c per GB for multi-AZ, means you can splurge on your total disk size and get both some great savings and better performance than you would using IOPS. (oh and more disk!)

In our case, we decided to upgrade to 250 gigs of space and switch to a general purpose SSD drive. That gave us base IOPS of 750, only slightly less than our previous max of 1,000 IOPS, but now with the ability to burst to 3,000 IOPS for up to 40 minutes at a time. Not only that, but our bill for storage on our instance went from $220/mo to less than $60/mo, even though we now have two and half times the capacity.

For our usage patterns, which involve long periods of very little happening punctuated by very heavy writes and reads, this is perfect, as we now can burst far faster than we could before and have plenty of time to recover credits for the next event. A quick graph of our RDS IOPS makes that clear.

So check your logs and your current usage, you might be able to save yourself a bundle by moving away from provisioned IOPS storage and instead using SSD storage for your RDS instances.

New Feature: Viewing Recent Messages within Flows

One of the things we've always loved about Flows is how easy they make it to reason how people are interacting with your system. TextIt has always displayed the number of times your users pass through particular paths in your flow, making it easy to determine how people are moving through with just a quick glance.

Today we just launched an addition to this feature that makes it that much more powerful. If you hover over any of the activity badges, we'll quickly pull up the last five messages that went through that path. This works for both outgoing messages, so you can double check how variables are being replaced, as well as incoming messages, so you can check your rules are working as you expect.

We think this is going to make it that much easier for you to quickly adapt your flows once you see real data come in, and make it that much easier to know exactly what is happening when people respond with unexpected values.

This is just one of many new features we've been hard at work on to make flows more powerful yet easier to understand. We're working hard every day to make sure TextIt remains the most powerful way to build interactive SMS and Voice applications. As always, feel free to send us a note if you have any suggestions of your own!

TextIt Open Sources Technology Platform as RapidPro

We've been a bit quiet on this blog for the past six months but today we're at last ready to tell you why.

As most of you already know, TextIt was born from Nyaruka's experience building custom SMS systems for NGOs in East Africa. Over the course of four years, our team in Rwanda built dozens of custom systems to collect, communicate and aggregate data using SMS in sectors spanning agriculture, health and governance. For each of those projects we used the excellent Open Source framework called RapidSMS, originally built and stewarded by UNICEF.

Though the process of building many one-off systems made for a good consultancy, we began to grow frustrated that we weren't making a larger impact – enabling more people to reap the rewards of simple messaging campaigns. It was with that goal of enabling access to great technology that two years ago we embarked on our journey to build TextIt. While not based on RapidSMS, TextIt was informed and in some ways inspired by our experience using it, so it's no big surprise that some of our biggest fans came from inside UNICEF. After all, UNICEF is perhaps the single largest and most informed user of SMS systems in the developing world.

But despite loving the work we had done with TextIt, UNICEF had reservations about adopting it internally given their strong tradition of using Open Source platforms. The developing sector has seen first hand what can happen when a vendor has exclusive rights to a platform, vendors can become, well, greedy, and stop investing in a platform, sitting on their laurels instead of continuing to innovate. Having a platform be Open Source gives customers the leverage of taking their business elsewhere if worst comes to worst, which keeps everyone honest.

So it was with that context that UNICEF approached us to take the technology platform that was TextIt and Open Source it as RapidPro

You might think this was a hard decision for us to make, to publish our secret sauce if you will, but really it fit perfectly with our original mission: to enable every organization to use SMS to improve the efficacy of their programs. Not only is RapidPro now being used in a dozen (and growing) UNICEF offices at a scale which we could only dream of previously, but UNICEF's involvement guarantees that the the platform will continue to grow, mature, and become ever more capable.

Best of all, UNICEF's investment in the platform didn't end at Open Sourcing, along the way they also funded development to add lots of exciting new features, from new ways of communicating to users, better analytics and more, all of which we'll be talking about in upcoming posts.

Over the past few days we've migrated our TextIt servers to run this new RapidPro platform, and today we're happy to announce that TextIt is a RapidPro provider. As we make improvements to TextIt, we'll continue to roll those changes into RapidPro, just as changes made to RapidPro will be rolled into the TextIt service.

For TextIt users this means you now have the added benefit of knowing your chosen platform is also being used by one of the largest aid organizations in the world and that it will continue to thrive and grow for years to come. If you are a current TextIt user, thank you for being part of that journey, we look forward to continuing to serve you. 

Last but certainly not least, we'd love to thank everyone we've worked with at UNICEF in the past six months. In the end it is their trust and faith in what we've built that has allowed us to make RapidPro a reality and we look forward to continuing to move the platform forward together.

If you haven't yet signed up and are curious about RapidPro, you can set up a TextIt account instantly to try RapidPro today.

Some common questions that have come up and their answers:

What is the difference between RapidPro and TextIt?

RapidPro is a software platform, TextIt is a hosted service. Running the RapidPro platform yourself requires you to acquire web and database servers, load balancers and have the expertise to run, maintain and keep all the software up to date in a secure, high availability data center. TextIt takes care of doing all of that for you, while also providing technical support and assistance, letting you focus on accomplishing your goals with the platform.

Does RapidPro being Open Source mean TextIt is now free?

No, as discussed above, TextIt is a hosting service for the RapidPro platform, and as such we have costs associated with running the servers, maintenance, support and ongoing improvements to the platform. As a rough guideline, if you think TextIt is too expensive, then you definitely cannot afford to host RapidPro in a reliable manner yourself.

Where can I access the RapidPro source code?

All the source code for RapidPro is available on GitHub. We are also making every effort to perform ongoing development, even bug fixes, transparently and in the open. Our goal is to have an open and vibrant community moving the platform forward, come and join us!

Your Path to a $16B exit? Build a J2ME App

So it finally happened, Facebook snatched up WhatsApp for the not so bargain price of $16B to the simultaneous head explosion of every entrepreneur in Silicon Valley. A common cry echoed around the world "But, but, how is WhatsApp any different than iMessage / Facebook Messenger / Hangouts?"

To that, I have one answer: J2ME

See, WhatsApp wasn't born in Silicon Valley on an iPhone, rather it fought its way to a $16B exit by providing an awesome messaging experience to the middle billion, those living on $10 a day. And you know what, on $10 a day you probably don't have an iPhone or an Android handset. Rather you are probably carrying around a "feature phone", one of a thousands variations of handsets built by Nokia or Samsung running a version of Java 2 Mobile Edition. (J2ME)

Writing J2ME apps is no cakewalk. While Android developers might whine about having to support myriad resolutions and versions of the API, J2ME ends up being less a standard and more a series of rough guidelines. There is no shortcut, you just have to test on every device, each with its own unique bugs and idiosyncrasies. Building a high quality app aimed at J2ME is the very definition of shlep, it is incredibly time consuming, boring and frustrating work.

That was the genius of WhatsApp really, they recognized that messaging apps are all about network effects and instead of focusing on the comparatively small market of the 'developed world', instead targeted the other 3 billion people who don't have smartphones. And at that they have been supremely successful.

If you are anywhere apart from the States, WhatsApp is the de facto standard for messaging. Here in Rwanda, it has far more penetration than Facebook, it is used by literally everybody who has a capable device. That came about not by having some edgy new user interface, or by a gimmick around disappearing messages, but by providing real value, value that can be measured in the pocketbook of a market that is massively under served.

So the next time you are thinking about "putting a dent in the universe", maybe you should look a bit farther, and maybe, just maybe you should start with a J2ME app.

PS. Though I love WhatsApp as a consumer, there is tremendous untapped good that could come from it if they made their API open for some (not all!) organizations. Those same low income customers could be helped by simple messaging campaigns that TextIt could help build. If anybody from WhatsApp is reading this and wants to see how that could happen with a big partner like UNICEF, please reach out.

Update: Note that it turns out I was wrong, and WhatsApp was originally written for iOS, but my point stands. What made it uniquely successful was that they were ubiquitous across platforms (Android, iOS, Blackberry, S40 / J2ME) and targeted developing markets with a solution that saved real money.

TextIt goes Prepaid

We are excited to announce that TextIt no longer requires a monthly plan, instead TextIt now uses a simple prepaid model that lets you add credits to your account only as you need them. This lets you more easily deal with usage spikes at different times of the year and should also make it much easier for people to get started without any anxiety about picking the "right plan" for them.

Best of all, switching to prepaid plans has let us revisit our pricing and we've decided to significantly reduce our prices, especially for our most active customers. While our previous gold plan would have cost $3,000 for 180,000 messages over the course of a year, we now offer a 250,000 credit bundle for $2,250, which comes out to almost half the price per message.

Just as before, you can get started with TextIt without a credit card and start building flows immediately. We now include 1,000 free credits with every account, enough that most organizations will be able to get a feel for TextIt in the real world without spending a penny.

If you already have a TextIt subscription then don't worry, we've brought all the credits you've bought forwards and will let you know when you start running low. Credits expire a year after purchase, so you'll have plenty of time to use them on programs you implement in 2014.

You can see the new TextIt bundles now available on the Pricing Page, as always, let us know if you have any questions or comments.


Moving Contacts out of Flows

Flows are a really great way to engage people, making it easy for them to have natural two-way conversations. But what if your conversation starts to be one-sided? Some folks just aren't great conversationalists after all. Several of you have asked for a way to expire people out of flows if for some reason they stop responding. 

Today, we're launching a new feature that moves contacts out of flows if haven't responded for 12 hours. Your existing flows will continue to behave as they always have. However, you can opt-in to this new behavior for any of your flows by visiting the flow edit dialog and choosing an appropriate expiration for inactive contacts.

As always, we love to hear how all of you are using TextIt and how we can improve it to better fit your needs. While it's a bit cliche to say it, we really mean it -- absolutely do not hesitate to reach out to us. We are happy to provide our feedback on your next SMS project. You can always reach us at info@textit.in, it'll go right to our inbox.



TechChange and TextIt

Ever since TextIt publicly launched (has it really been four months already?), we've created some wonderful partnerships with many different organizations around the world. Today I just want to give a quick shout out to our friends over at TechChange. If you haven't heard about them, you will soon, especially if you work in international development. We've been privy to a great many technology initiatives in the developing world, some good, some not so good, and seeing something like TechChange show up to meet a very important need is refreshing.

For the uninitiated, following in the spirit of online courses like Khan Academy, Udacity, and Coursera, Nick Martin co-founded TechChange to explore online courses for those who aspire to do social good with technology. In their own words:

TechChange provides scalable and interactive technology training for social change. We deliver online certificate courses to individuals, build customized courses and learning experiences for organizations, and strengthen technology-enabled communities of practice.

All too often in the developing world there isn't enough knowledge transfer, especially when it comes to sharing what doesn't work. I'm really excited that an organization like TechChange has cropped up -- with an explicit aim to help teach best practices for these sorts of programs. I'm confident they will go a long way toward discouraging projects based around technology simply for technology's sake.

At TextIt, we often talk of "people problems" instead of technology problems, which I go into more detail in the video below. Our tool removes the technical hurdles so you can focus on the hard problems in development. How do you engage your audience? What are the incentives? What value are you truly bringing to your target audience? Technology often is not required to solve these problems. TechChange gets this and helps guide folks so they can make informed decisions on when to apply technology, and more importantly, when not to. And if they do, what is the best technology and tool for the job.

Using TextIt for mHealth

This morning I had the privilege to speak at a TechChange session from here at kLab. The session was focused around mHealth and how TextIt can be used as a flexible tool for implementing a variety of proven interventions using SMS or IVR systems. TechChange brought in over 90 people in 30 different countries to hear what I had to say in a live Q&A format. What's better is they've shared our 60 minute session publicly so even those not enrolled in the course can benefit from it after the live event.

Creating a platform for these sorts of dialogues is extremely valuable and so very important. I wish them continued success as their online courses gain even more traction and I would encourage anybody working in the sector who hasn't yet, to check them out.

Using TextIt with a Local Number

While TextIt is an amazing tool for building SMS apps, it's not very valuable if you can't use it in your country. Over the course of the last several years, we've deployed many custom SMS systems in various countries in Africa. It was during these projects that we recognized the need for not only a flexible application workflow tool but one that can be easily deployed anywhere in the world.

There's a number of ways you can use TextIt with a local number in your country. The most popular of which is simply using an inexpensive, off-the-shelf, Android phone to send the messages for you. They can be had for around $90 and you can hook them up to your TextIt account in one step, and that's it. There's no step two. Your TextIt account is now live. It's hard to overstate the value of getting started this quickly. Not only do you get to do away with expensive and lengthly carrier integrations, you get to start experimenting right away. Learning what works, what doesn't, and how to move forward is the hallmark of effective programs. This means you get to stop guessing and start measuring even when you are just getting started with the idea phase of your project.

This isn't just for pilots either. Using an Android phone with TextIt is a proven, rugged, and reliable solution that large organizations are already using to send thousands of messages for their programs.

That's great, but how does it scale?

Nobody wants a solution that will only work at low-scale. While TextIt is already built to push millions of messages, the tricky part is how the last mile is configured. Using an Android phone will work for the vast majority of projects over their lifetime. It's even possible to use several phones in the same country to increase message throughput if necessary.

However, some of our customers require very high volumes. Thankfully, TextIt can grow with you. When the time is right, your account can be migrated over to use a local aggregator or even a direct connection with the carriers in your country.

Find out more by reading the TextIt Deployment Guide.

Introducing TextIt Campaigns

One of the core tenets around TextIt is to enable the kinds of interactions that have been proven to work most effectively. Our goal has always been to enable every organization to use SMS in the most natural and powerful ways so that their programs can be more successful. As such, it is with great excitement that we introduce TextIt Campaigns.

Campaigns allow you to easily schedule interactions with your users based on dates they have entered. For example if you collect the expected delivery date for a pregnant mother, you can send her a reminder to attend pre-natal visits in the months leading to her delivery. You could also encourage her to make an appointment to deliver her baby at a clinic and send followup reminders for vaccinations. To the mother this is a convenient service that requires only a simple registration she can undertake with the help of a clinician.

One reason we are so excited about campaigns is that they have been proven to be effective. In 2011 we participated in a randomized controlled trial that showed that mothers receiving reminders are almost twice as likely to visit a clinic after birth. With TextIt, we hope to make that simple and inexpensive intervention available to clinics around the world.

But really, we hope that is only the start. Campaigns can do more than just send messages, they can also start users down a flow, working them through a decision tree, collecting information about their pregnancy or helping advise them as to when to seek help from their local clinic. We hope that by enabling these types of interactions we increase the rate of experimentation and learning, leading to completely new programs.

The idea of reminders span much more than just maternity health. We think Campaigns can be used across sectors, reminders farmers as to when to plant their crop and fertilize, or just following up with users as they complete a set of surveys.

Every TextIt account got a free upgrade to campaigns, so you'll see them next time you log in. We recommend watching the introduction video above to get started, but if you have any questions, we always love hearing from you at feedback@textit.in.