Student Interview: building an education platform to learn English

Screen Shot 2014-12-11 at 10.36.36 PM Name: Nate Hill
Background: B.A. Anthropology, Texas A&M
Current: Teacher
Project Name: Tweet Speak English

Explain the vision for your project (what does it do, who is it for, what purpose does it serve?)
I started Tweet Speak English to give English learners a course made from real phrases Americans use a lot. Students can work through one lesson at a time, and get the next one when they finish. Lessons are composed of videos, audio, listening quizzes, pronunciation guides, and discussion. The phrases students encounter automatically populate in their “dictionary” so they can reference them quickly any time. I want to continue adding interactive elements, other products, and online and mobile games in the future.

What was the inspiration for this idea?
I was tired of explaining boring and unnatural English that showed up in the dialogues of text books. I noticed a lot of people were using Twitter to learn English, so I decided to curate high quality tweets with useful phrases. It started as a podcast, and when it got downloaded 30,000 times in a month, I realized I should keep going with the idea.

How long have you been working on it?
All in all, this project has been a ‘hobby’ for the last 3 years. I finally decided to learn programming and rebuilt it. This took me about a month.

Why is this important to you and is there anyone else who’s working on it with you?
It’s important because there are a lot of people around the world who spend a lot of money to learn English for years only to discover they still have problems communicating with native speakers. But it’s not just about access to information. There are a lot of resources for learning natural English but I wanted to make an affordable system that helps learners do this efficiently, and have fun while they’re doing it. I want to give them confidence because if they can get to a certain level in their English ability, they’ll have the momentum they need to get the best jobs in their country or follow their dreams in other ways.

A good friend has been helping me re-develop the content for the last year, so without his help, I doubt I could have taken on the task of redeveloping the app.

How did you build the current version of this website?
Lots of coffee, and a determination to finally tackle coding. BaseRails was the resource I came across that finally helped me do that. That, and frustration with the third party tools I had been using to ‘duct-tape’ the idea together on a WordPress site. I finally needed the flexibility learning Ruby on Rails could give me. I went through both courses on BaseRails, built the apps all the way through, looked for the things I needed in my own project, and then got busy trying to implement them. Where I needed something I didn’t know how to do, I spent the time scouring the internet to find examples. When that wouldn’t work just right, I’d go to the Q&A of BaseRails, Stack Overflow, or in desperate situations, I did a couple of AirPair sessions.

What were the difficulties of building it out?
The feeling sometimes (er, once a day) where I thought I might be going crazy. Looking at the code I had, tutorials I was using a reference, and all the help I had, and not being able to see why it didn’t work. I’d try one thing after the other, only to have the same result, until finally, something would work.

What lessons have you learned in building out this project?
Feeling like you have a deadline is super important. I had about 6 weeks where not much was going on. I knew it would get busy again after that, so I felt a lot of pressure to learn enough RoR to build out TweetSpeak and get started on some other ideas. But I also learned that when you really let the sense of urgency take over you, it can be really counterproductive. It’s also incredibly important to take breaks, and know when to call it a day. Don’t work past that breaking point.

One example, I spent 3 days trying to get the exact Stripe payment process I wanted to work. I had been staying up late at nights, still nothing. Then one day, my 3 year old came home from school and I thought, “It’s not like I’m giving up, I just need some time away from this.” So I took her to the park. We spent about two hours playing. I built a sandcastle, something I haven’t done in years. The next morning, I woke up to get to work, and I figured out the obvious problem staring me in the face. I fixed it all in 15 minutes. So when you feel yourself getting burned out, explore something else away from the computer. Go out and play.

What attracted you to enroll on BaseRails?
The course layout seemed to be exactly what I was looking for. It promised to take you through building an app in an easy to understand way. There were also videos, and it seemed to be laid out in a way that was good for beginners. I had tried some other guides, and while very good, it was hard for me to stick with them. As soon as I ran into problems, which happened a lot because they went into fairly complicated things, it was too easy to quit. BaseRails seemed to be the best of both worlds — building something that worked, and gaining knowledge to turn around and try that on your own projects.

How did our course help you in building out your idea?
Remember that flute in Zelda that would take you anywhere you wanted to go in Hyrule? BaseRails was kind of like that. Instead of starting at a blank slate, I just sped back over the lessons for setting up the app, getting pages, resources, and styles up to speed. In less than an hour, I had an ‘app’ already, and it even looked pretty good. While I was able to take some of the other lessons and apply them, it was this head start that gave me some serious momentum on the project.

That, and it gave me a confidence in programming I had never had before. I don’t know that I’ll ever be an amazing programmer. But before BaseRails, I always felt like touching anything in my command line would make my computer blow up. I would go about things as if I was trying to defuse a bomb. Now, I know that if I see an error, there’s no need to panic. It’s not the end of the world. I will find an answer. And I will make it work eventually.

What are your future plans with this project?
For the time being, I will focus more on content creation and getting more students. I’d like to get their feedback on where the project should go from here. I would love to add more review features, or interactive ways that give the students helpful ways to remember things.

What’s your advice for other people looking to build out their own idea?
Start by building out a few sample apps. Just go as fast as you can. If that’s 1 hour a day or 8, it doesn’t matter. Just go for it. Don’t ask questions about why you’re doing anything. Getting used to working with code, and breaking stuff only to put it back together is what has really helped me. Once you’ve done that, and gained the belief that you can do it, you’re ready to start on your own project. This will teach you the most of all, and you’re going to need people to turn to. Ask Alex questions on the Ask a Developer, post questions on SO, and tweet out links to gist’s you make with the hash #pairwithme. The best developers in the world have struggled with exactly where you are right now, and that makes them willing to help. I look forward to being able to help others too someday.

So, make a schedule with a deadline. Then, make a list of what your project is, who’s it for, and what it will do. Make a features list. Go over that list and break everything down as far as you can into actionable steps. Add those onto something like Trello (it’s what I used) to show you what you need to work on next, and what you’ve accomplished so far. Once you start working, know exactly where you’re going to go for help when you get stuck. You will make it happen, but not knowing where to look for answers is the fastest way to discouragement. Oh, and be ready to sound dumb. Don’t worry. Ask your questions, give as many details as you can, and if on Stack Overflow, think about how you can make it applicable to others.

Get started, make basic functionality work first, and save design work as reward for when you’ve successfully made a new feature. I think that’s about all.

Anything else you’d like to share about your journey?
I’ve started working on a new chat app for language learners. I started working on it as a potential extension to a site I own, My goal was to get the basic functionality knocked out with design that was pleasing to use. I went into it without knowing if I would continue with it. I still don’t know if I will. But every idea you try to flesh out teaches you new things, so it’s never a waste. If the Fluentli community seems to be excited by what I’m working on, I’ll gladly keep going. If not, I’ll probably move on to other ideas. That’s the other important thing to realize early on — don’t wait for a perfect idea before you get to work. Get good at having lots of ideas and then using those as learning experiences. You’re bound to find something people get excited about eventually!

If you’re successful at finishing one, get ready. You’re never going to stop! But the great news is, when you get a new idea, you’ll be able to make it happen. And that’s an amazing accomplishment!

Thanks for the awesome interview Nate!

Student Story: Journey to becoming a Rails developer at a startup

Name: Neil Patel
Background: Business informatics
Current: Developer at Sincuru

Neil Patel’s programming journey started off like many others – at a Startup Weekend event. Despite having the best marketing team and a solid business model, there were no developers in his group. This meant that no one could actually execute on the technology side of the idea. In fact, of the 50 participants at the event, only 3-4 people knew how to code. Neil ended up hacking together a basic landing page on his own and had a mentor help him host the site online.

By the end of the weekend, Neil decided he needed to learn to program. Being a developer at a Startup Weekend event was like being the hottest chick in the room – everyone wanted to court you and convince you to join them. He wanted to return the following year as one of the technical people who got their choice of the best projects.

Neil decided to learn Ruby on Rails, one of the more popular web frameworks for startups. Through Google, he discovered learn-to-code sites like BaseRails, One Month Rails, and Jumpstart Lab. Going through the tutorials one-by-one required persistence and the willingness to ask for help. He posted so many questions on Stackoverflow he got kicked off – multiple times.

That first month, Neil felt like a fish out of water. Everything was hard. Dealing with errors. The late nights. Getting distracted. Unable to figure out why the code didn’t work. The time it took to setup a rails web app for the first time. Nothing came naturally.

But looking back on it, he did a few things right. First, he had a real project he wanted to complete, which motivated him to continue coding no matter how slowly he progressed. Second, he made sure he was coding everyday, but only for an hour. He found it was difficult to process and retain information if he tried to code for 4-5 hours straight. Instead of putting in countless hours, he focused on understanding all the code he was writing in that one hour.

After completing his first project, a job board for analytics positions, Neil wanted to find a job as a web developer for a startup. He was already following Rails companies on Twitter and each time a job opening was tweeted, he would apply. But as a fairly new programmer, there were still many skills he hadn’t yet learned.  ”The only interview I did was an online code challenge which I failed miserably because it was too hard,” he says. “They were asking about other skills like JSON.”

Then one day, he saw a job advertised on Twitter that was looking for someone to build a two-sided marketplace with buyers and sellers (sound familiar?). Neil saw that the company only had a basic landing page, so he devoted the next day to building a prototype for their idea. When he got invited to interview with them, he was offered the job on the spot.

Since then, Neil’s company was accepted into a tech accelerator in London, where he’s now working full time. Despite achieving his goal of working as a developer at a startup, his advice for other aspiring developers is very pragmatic: “I think if you want to learn Rails, then do it because you have a side project you want to develop, not because you want a 9-5 job.”

When asked what kept him motivated all these months, he responds, “I think it’s because it makes me happy, I find it interesting and not a chore. I believe I have learnt something new from programming every day so it’s fun and it also gives me confidence in talking to other people about programming. Also I can help other people who want to learn Rails programming.”

Technical vs. non-technical: being on the other side of the fence

Almost exactly two years ago in February of 2012, I attended a Startup Weekend event in NYC. It was my first introduction into the startup/tech world and it was a great way to dip my toes into entrepreneurship. I remember the pitches–there were so many!–and every single one of the presenters concluded with variations on the same sentence: “I’m looking for developers to join my team.”

At the time, I didn’t pitch an idea but ended up working on a team of two (myself included) with no developers. We struggled to put up a landing page. We didn’t know anything about Google Analytics. The teams around me seemed to be juggernauts of technical expertise, spitting out mockups and multiple versions of websites to increase conversion rates. I could barely navigate my way through buying a URL (I didn’t know they were called domain names).

I remember talking to the developers there. They were patient and explained things that must have seemed idiotic to them. I left the event with a vague impression that technical people ruled the world. Team leaders poached technical people from other teams. Developers were the hot chicks in the room, designers their slightly less hot sister. I started feeling ashamed of my nametag that read “non-technical.”

This weekend, Alex and I just returned from our second Startup Weekend event, this time in San Diego. We went for two reasons: 1) to talk to potential users for BaseRails and 2) to assemble a team of business people to help us with customer research for people who want to create web apps.

The venue was smaller, there were 1/4 the number of people as last time. On my team of 7, there were only 2 coders, Alex and myself. We didn’t mind and even felt relieved that the hustling, survey-creating, getting out of the building, and slide-making could be accomplished by others. It was a complete role-reversal from two years ago in which we were the project managers, marketers, sales people, and researchers. Now, we’re the coders and we’re the ones building out the product.

Every few hours or so, we’d check in with the team and show them the progress we were making. They asked questions, offered feedback, and gave encouragement. But I started to recognize a familiar look on their faces–the same one I had worn on mine two years ago. It was a combination of awe, excitement, curiosity, and humility. They could give us their comments, but ultimately couldn’t influence how the actual product turned out. It’s a humbling feeling indeed. I would know.

By the end of the event, as everyone was saying goodbye, one of our team members came up and asked how he could learn to code. There was a determined look on his face. We gave him a coupon code and he promised to sign up for our course immediately. On our drive back home, another team member emailed Alex and in his own words, “I’m like super motivated to learn coding now.” He also wanted to enroll.

We went there to recruit users for BaseRails by giving out coupons and business cards. In the end, our conversions came from people who worked with us, watched us write code, and saw the immediate results of our efforts. They were inspired by what we could build–and they wanted to learn it for themselves.

I remember all the developers I’ve known over the years. When I would express interest in learning to code, they told me to just dive in. They told me it wasn’t that hard. They told me learning to program was the best decision they ever made. They told me that I could do it.

So that’s what I told my team members. And maybe in two years, they’ll be at another Startup Weekend, and feel what it’s like to be on the other side of the fence. Hopefully, they’ll remember what inspired them, and continue to pass on the message.

- Susie

Student Stories: Building an Online Flea Market in Kuwait


Name: Szabolcs Toth
Background: Mechanical Engineering
Current Job: Technical Sales Consultant

Project Name: fleaMarketKW

Szabolcs Toth is a resident of Kuwait, a small country in the Gulf region with a population of just under 4 million people. It’s the fifth richest country in the world by per capita income and has a long history of attracting expats to help run the local businesses.

Although some expats end up as “lifers” and stay for 30+ years, most expats have an expiration time and leave in as little as six months. As with all relocation, there comes the hassle of packing up one’s life and getting rid of the non-essentials.

In his day-to-day routine, Szabolcs saw a constant stream of advertisements for furniture and personal belongings in local news sources. Most of the ads were simply photos pasted into a Word or Powerpoint document and advertised in newsletters. However, these were difficult to circulate due to the size of the documents.

Szabolcs envisioned a way for people to post their used belongings up for sale on an online flea market, providing an ecommerce channel to sell and trade used goods. Thus, the vision for fleaMarketKW was born.

Although Szabolcs had been ruminating over this idea for many years, he was only recently able to build out an MVP for the idea. He began learning to program with Ruby in 2009 and spent his nights coding scripts as a hobby. While he knew enough to build functional programs, he didn’t understand how to architect a complete Rails app and connect the separate structures.

When he came across BaseRails, he gave himself the challenge of bringing his flea market idea to life in one month. “I felt that I had many small islands and [BaseRails] built the bridges among them, this is how small pieces of information became ‘knowledge’”, says Szabolcs. He was most attracted to the idea of learning to build a full-featured online marketplace, particularly with Dropbox integration.

After completing the course, Szabolcs now understands the process of building a web app and the connections between each database model. He can independently add specific gems and read technical documentation to implement additional features for his website. Szabolcs has developed one of the most important skills an entrepreneur can have–the ability to hack together a working prototype for any idea.

His next steps? “Of course, I would like more and more people to use it,” he says. “I know creating awareness around your project is not easy, but I’m not giving up.” For most people, the hardest part of bringing an idea to life is the technical barrier. However, that’s really just the beginning. Szabolcs has succeeded in building a barebones MVP for fleaMarketKW, which is hugely rewarding in itself, but he’s just starting the groundwork of testing it with real users.

Szabolcs’s parting advice to aspiring entrepreneurs: “I was patient and that helped me a lot. I tried and failed many times and always decided that this would be the last. After months, I started again and again. Finally I did it.”

BaseRails versus One Month Rails

A frequent question we get from you guys is how BaseRails differs from other online learn-to-code resources, in particular, One Month Rails. Considering that we’ve tried One Month Rails and most of the other online courses in our own web development journey, we have a clear idea of our value proposition to our users.

Instead of explaining it all again, I thought I’d just share the email we recently sent out to a friendly inquirer.




Learning to build is different than learning to code


Here at our BaseRails office, we have a hand-drawn infographic (courtesy of Alex’s calligraphy hobby) of a Pain Measurement Scale. Like the ones you see in hospitals for sick patients, our scale lets you tell us how much pain you’re in. Instead of measuring physical sickness, we measure the pain of getting your startup idea off the ground.

We’ve been hearing the same story over and over again. An aspiring entrepreneur starts out with an idea. It’s very precious to him (in a Gollum-y preciousssss kind of way).  The first place he goes to build it is WordPress. Choose a theme, add some text, and it’s live! But if he wants anything outside the scope of a blog or a template, WordPress doesn’t cut it. There’s a steep drop off here and many ideas die.

If he’s a slightly more determined entrepreneur, he might try to convince someone else to build it for him. Usually, he’s a great salesman or has a lot of money, sometimes both. But he doesn’t want to be tied down to his offshore developer forever, so this isn’t a viable option for him or the others who don’t have his consultant nest egg.

After this is where the first seeds of self-empowerment are planted. Fed up with feelings of helplessness, a tenacious entrepreneur will make his first forays into learning to code. To get his feet wet, he’ll try Codecademy. Maybe go on W3Schools. And he feels great! He’s writing gibberish and things are happening! He starts calling himself a coder.

Months pass but nothing happens. He has no idea how to take the little HTML he’s learned and apply it to his idea. His friends start thinking of him as a wantrepreneur. He feels miserably incompetent but decides to make one last hurrah and learn to code for real – he takes on Python, PHP, or Ruby.

This is the point at which our users find us–through a “deep google search” as one person put it. They’ve been put through the wringer and they’re tired. They’re impatient. They don’t give a damn about syntax or being a coder. They just want a working prototype of their idea that they can customize.

Learning to build is very different than learning to code. But everyone still teaches it the same way. We get it because we are those entrepreneurs trying to bring our ideas to the web. It’s why we had the idea for BaseRails in the first place. We want to truly empower someone to feel that they can hack together something that works. Instead of focusing on the code, we focus on building with a combination of code, outside tools, and resources that are needed to get your app live.

This is all just a roundabout way of saying that if you haven’t experienced the pain yet, if you’re not at least in the “hurts whole lot” category, we might not be the solution for you. Our most avid users, the ones who’ve gone through our course multiple times, they’ve felt the pain and they’re determined that this time will be different.

With that said, by no means do we have the perfect solution. Through feedback from our early students, we think we’re on the right track with this whole practical, results-focused building thing. We’re also learning from you guys and if the story I outlined above sounds eerily familiar, please reach out and share your journey. We’re always brainstorming ways to make your life easier as an entrepreneur and hacker.

Seriously, reach out. It makes us feel like we’re not the only Joe Schmoes out there who care about this stuff.

- Susie

Debugging 5 Common Localhost Errors

I keep getting this error

“I keep getting this error!”

A huge part of what we do here at BaseRails is helping you troubleshoot errors. For everyone who’s learning to code, there’s a steep learning curve in reading error messages and actually understanding how to fix them. I used to dread the red and white error page that showed up instead of my actual app. It would make me feel helpless and frustrated and I’d sometimes break other parts of my app while trying to fix the problem. The worst of the errors would set me back by days, Googling all the keywords I could think of, yet unable to understand the technical terms on any of the 15 tabs I’d opened. Note: if this happens to you while going through BaseRails, please email us and we’ll help!

When you go through our course, we expect you to encounter these error messages sometimes – occasionally, we even intend for this to happen! It’s all a natural part of the learning process. We’ve had students email us with their screenshots when they encounter these errors and I’ve compiled a list of some common errors you’ll see on localhost and what to do about it.

#1.  Error photo-Rails server

If you go to localhost:3000 and get this error message or something else along the lines of “…could not connect to localhost:3000″, this just means your Rails server isn’t running. Go into your command line, make sure you navigate into your app folder, and type “rails server”. Once it’s running, go back to your browser and refresh the page. It should now be running.

#2 error-migration

When you see a “PendingMigrationError”, it means you’ve asked Rails to change your database, but you haven’t finished making the changes. To actually initiate this change, go into your command line and type”rake db:migrate”. Whenever you run this command, you have to also remember to restart your Rails server by quitting out of it (type “Command+C”) and then reopening it (type “rails server”).

#3 error-syntax

“SyntaxError” occurs when you have a typo–usually a rogue period, a misplaced bracket, or a forgotten tag. The error message will tell you which file contains the typo–look inside the parentheses right before the “Extracted source” box. The message will also try to tell you the specific line in your file which contains the typo. It’s not always accurate though so don’t put too much faith in what it says. Just know that your typo is somewhere in that file, so fine-comb it until you find the mistake. Then simply refresh the page to see if you’ve fixed it.

#4 error-routeing

Routing errors occur when you try to access a URL that doesn’t exist. Either you’ve typed in the wrong URL or you forgot to set up the route in your config/routes.rb file. The paths they show you at the bottom of the error message are the URLs that currently exist for your app. If your URL doesn’t appear in the listed paths, double-check your routes.rb file.

#5 error-name

A “NameError” means that you’ve probably typed the wrong name somewhere. Usually, this happens when you used the singular instead of the plural, or vice versa. For example, you may have typed “listing_controller” when it should be “listings_controller”. Double-check the highlighted line and make sure you’ve used the right name.

After you’ve seen these error messages a few times, you’ll become more familiar with debugging them. Almost everything in programming boils down to pattern recognition. Practice makes perfect. Don’t forget the tried-and-true method of all developers: when in doubt, Google the error message. Someone else has probably had to solve that same problem as you, and hopefully they posted a solution on how to fix it. Good luck!

Welcome to BaseRails

Hello and welcome to BaseRails!

First of all, congratulations on starting your journey into web development; the first step is always the hardest.

I think of learning to code as working on a 100,000-piece jigsaw puzzle. There are tiny pieces strewn everywhere and you have no clue where to even start. BaseRails will serve as an instruction manual on how to put all those puzzle pieces together.

As a self-taught developer, I take a more practical approach to learning than most traditional classes. My goal is to get you up to speed faster and save you months of time in building your own web apps.

Along the way, we’ll learn to use the latest versions of popular technologies. We’ll be working with Ruby on Rails, as well as front-end tools like Twitter Bootstrap and CSS. We’ll touch upon databases with SQLite; APIs with Stripe;  and even hosting platforms such as GitHub, Heroku, and Dropbox.

Don’t worry if it all seems a little overwhelming now, this course was intended for a complete beginner. We’ll learn in layers by covering the basics first before moving onto more advanced features.

Each section is broken down into 5 – 15 minute videos that will take you through implementing a specific piece of our app.  

With these videos, I recommend following along the first time around as we build our Demo App together. When you’re ready to implement your own idea, go back and review the sections that are still a little unfamiliar.

I believe that feedback and support are crucial to self-learning which is why I’ll do my best to respond to emails within 24 hours. You can reach me at

By the end of this course, you’ll have the ability to apply what you’ve learned toward building any idea of your own.

Good luck and Happy coding!

- Alex