Friday, May 15, 2015

A screencast series to build a real world SAAS app with Flask

We'll cover developing and deploying a SAAS (Software as a Service)
application. The main technologies used will be Python, Flask and Docker.

Flask is an awesome web framework capable of handling small apps with a small work load all the way up to massive scale apps with a massive work load.

The code will be open source on GitHub so everyone can take a look, but
you'll also be able to follow along and gain a lot of extra insight about
the project by going through the screencast series.

You can think of the screencasts as the book that ties everything together except instead of reading 500+ pages, you'll be able to go through everything in a few hours.

Check it out on kickstarter today:

Thursday, May 14, 2015

Are you afraid to start coding?

I come across a lot of people who are afraid to code. It's not because they have an obscure phobia. It's because they read half a dozen tech sites on a regular basis and hear about 30 different things a week.

Thoughts like "what if I spend all this time studying something and I'm wrong" pollute their mind and prevents them from even starting.

 

Information paralysis is real


It's so easy to get stuck in information paralysis mode, afraid to take any action. It can cripple you for months or even years. It happens to beginners and even people who are seasoned developers.

If you think you might enjoy coding then just pick a language, open your favorite editor and goto town on whatever idea is cooking in your head.

 

The language you pick is not a right/wrong answer


Ok, if you want to get picky then sure there's probably a few languages out there where it would be a mistake to base your next business on but there's a whole bunch that are excellent choices.

You just need to ask yourself 3 questions to pick one that's right for you:

  • Does working with this language make sense in my head?
  • Does this language have a strong and thriving community behind it?
  • Are there a lot of resources to learn from?

 

Performance is very close to irrelevant

 

SPOILER ALERT: This isn't going to be a blog post about how cool Rails is.

Don't get me wrong, performance is extremely important but it's only important at the app level. A lot of other factors outside your app/language choice will slow your app down.

Even "slow" web frameworks will happily serve tens of thousands of requests per day without flinching, even on low end hardware.

What does it take to have a wildly successful app? That's up to you to decide but what if you had a SAAS app with 750 members who on average are paying you $19/month?

You're now raking in $14,250/month and you could be hosting an app like that for about $100/month.

Does it matter if you're using a language that can handle 10x the amount of traffic with 15ms less latency? No, not really.

If you factor in network latency, database lookups and browser loading times, shaving 15ms off something that takes 500ms to render isn't that big of a deal.

Some of the biggest sites on the internet are running Python

 

They are using Flask, Django or their own home baked frameworks. These are sites pumping out billions of requests per month and not breaking a sweat.

There's also dozens of wildly popular sites who serve millions of requests per month running on Rails.

Right off the bat this should tell you that Python and Ruby are reasonable choices. If you want a statically typed language there's also Go, Java and .NET. Did you know Stackoverflow is running a .NET stack?

Do any of those languages meet the criteria from above? Yes. Although personally I feel like Go is still years behind Python and Ruby when it comes to web app libs. However, there's nothing wrong with sprinkling in a little Go for certain aspects of your app if there's a legit reason to do so.

 

You don't have to go all in on a language


Too many people treat programming languages like it's an all or nothing pick. Why limit yourself to 1 language? If some back-end component benefits greatly from a language like Go then use it.

Once you've learned 1 or 2 languages really well then picking up additional languages becomes a lot easier.

P.S., don't let editor decisions hold you back either


I'm not going to open this can of worms but just use one that makes you productive. Don't let anyone else influence your decision. If you like IDEs, use one. If you don't, use something else.


Are you 1 person or a team of 2,000+ people?


If you're Netflix and you have 2,000+ developers spread across dozens of teams then it makes sense to go with a micro-service architecture. It also makes sense to pour thousands of man hours into internal tooling to help orchestrate everything.

What if you are 1 developer? DHH's Railsconf 2015 keynote touches on this. He talks about how he wants Rails to be a goto tool for 1 person looking to get started. Can 1 person realistically create a good app? Yes, absolutely.

Does it need to be Rails? Nope, not at all.

What should I pick?


Flask, Django and Rails are all good choices. There's likely others but those 3 are the only 3 I have experience in when it comes to web frameworks.

Spend a little time learning about Docker and deploying code and now you can ship your app to the world.

 

What's your next move?


I recommend picking something and get rolling on your awesome idea. Over the years as being a consultant I've accumulated a lot of knowledge.

I want to help people out by providing open source tools so they can build their apps quicker and with more confidence. That's why I started this Kickstarter campaign.

Its goal is to go from a blank slate to a fully functioning deployed SAAS app while providing a screencast series which explains every decision along the way.

Join the crowd today:
https://www.kickstarter.com/projects/nickjj/build-a-saas-app-with-flask-and-deploy-it-with-doc