The official Django project blog, with release announcements, security fixes, roadmap updates and fellowship news for the Python web framework.
Commenters praise Django's documentation as among the best around and pair the framework with Wagtail CMS; HN also links its security release notices.
Hi @muonic, this is a great question many people tech founders face.
The short answers to your questions are:
a) Don't hire someone else to build the "core" of your App; only you know exactly what you want/need. If you have Python skills, build it yourself using the tools you already know (e.g. https://www.djangoproject.com ) Deploy it to Google App Engine https://cloud.google.com/appengine and side-step the DevOps learning curve.
b) Decide which Platform as a Service (PaaS) is right for you given the type of App you are building and learn that after you have a working demo of your App.
Longer explanation:
If you hire someone inexperienced (i.e. "cheap") to build your App, you can almost guarantee that you will need to scrap and rebuild it much sooner. Inexperienced developers will skip fundamental software engineering principals like automated testing, following security best practices or documentation and code-reuse. Build the MVP yourself and then bring someone onto your team once you have a good setup in place and need to add features.
When you are building an "MVP" of an App, you really don't want to be thinking about infrastructure; it's a distraction. Use Heroku, Google App Engine or Firebase to handle everything for you and focus on the features of your App that users will want (and ideally pay for).
As @de6u99er noted, DevOps is not something you can learn in a hurry. There isn't one single book you can read to learn everything you need to know. There are too…
> I don't understand why you're talking about statistical sampling. Aside from random functions, functions are deterministic, unit testing isn't about random sampling. That's not the problem here.
Completely and utterly incorrect. You are not understanding. Your preconceived notion that unit testing has nothing to do with random sampling is WRONG. Unit Testing IS Random sampling.
If you want 100% coverage on your unit tests you need to test EVERY POSSIBILITY. You don't. Because every possibility is too much. Instead you test a few possibilities. How you select those few possibilities is "random." You sample a few random possibilities OUT OF a domain. Unit Testing IS random sampling. They are one in the same. That random sample says something about the entire population of possible inputs.
>Next month some code elsewhere changes and that function ends up getting called with a string containing json instead, so now it blows up in production, you have an outage until someone fixed it. Not great. You might think maybe you were so careful that you actually earlier had unit tests passing a string instead, so maybe it could've been caught before causing an outage. But unlikely.
Rare. In theory what you write is true. In practice people are careful not to do this; and unit tests mostly prevent this. I can prove it to you. Entire web stacks are written in python without types. That means most of those unit tests were successful. Random Sampling statistically covers most of what…
I completely agree with this advice! Find a task that you repeat all the time and automate it. A pretty good place to start is just python, git, and bash. When I start a new job it's actually what I do to get my bearings. I keep a written journal of tasks, I make a notes README, and document repetition. I make bash scripts for shortcuts and to prove things, then I start working them into fabric[0] a (python lib) script. I keep all of this in a private git repository.
My older brother taught himself to program at 36. He was a 3D artist before, he had four kids and a wife and a full time job. He spent evenings and weekends building things for his wife's interest in photography and started blogging about his experience learning. He now runs a very successful company and completely changed his life inside of 3 years. He's not the best programmer, but he focused on the work and the assets that he had that were different from people who might be the "best" programmers, that edge is a huge asset.
I've been programming since I was 12 so it's hard for me to fully relate to starting new. Now at 35, I think the thing that people thinking programming is hard later comes from thinking of it like learning to paint or something. One unique aspect about programming is that it's a force multiplier. Once you grasp something, you don't need to reproduce it, you have it and you use it to prop up the next thing.
I'm biased towards python, but experience tells me it's one of the best starter…
I'm not a web developer, but hopefully I can point you in the right direction. If you're comfortable with Python, then I can point you to the popular Django[1] web framework. Though really, if you've barely used Python, then it would probably be equally easy to get started with Ruby and Ruby on Rails[2] instead. Like I said, I'm not a web developer, but I know both frameworks have lots of support and information out there, including tutorials. I highly recommend following through with some tutorials first, just to get yourself accustomed to how the platform works.
As far as your actual idea goes, I saw the keyword "privately". Now when you first start out and it is just you and your girlfriend, then privacy is easy if you two are the only ones who can access the site. Presumably other people would also want to make sure that not even you, the site administrator would be able to view their uploaded videos. That is probably going to mean encryption, and the mess that comes with it. Colin Percival has a recent blog post[3] about designing apps and services so that the users don't have to trust the developers.
In the meantime, a quick and dirty solution would be to have a Dropbox account that the two of you share, so when you place a file in the proper directory, it automatically gets synced to the other person. You could even encrypt the videos locally before putting them in the Dropbox folder. (You'll probably have to move them from the Dropbox folder to elsewhere…
> trying to build a lifeboat for Twitter, Python works, but then modules require builds that break.
> Alternatively, any good resources for the above?
There are many, unbelievably many writeups and tools for Python building and packaging. Some of them are really neat! But paralysis of choice is real. So is the reality that many of the new/all-in-one/cutting edge tools, however superior they may be, just won't get long term support needed to catch on and stay relevant.
When getting started with Python, I very personally like to choose from a few simple options (others are likely to pipe up with their own, and that's great; mine aren't The One Right Way, just some fairly cold/mainstream takes).
1. First pick what stack you'll be using to develop and test software. In Python this is sadly often going to be different from the stack you'll use to deploy/run it in production, but here we are. There are two sub-choices to be made here:
1.a. How will you be running the Python interpreter itself in dev/test (in other words, what Python language version you will use)? "I just want to use the Python that came with my laptop" is fine to a point, but breaks down a lot sooner than folks expect (again, the reasons for this are variously reasonable and stupid, but here we are). Personally, I like pyenv (https://github.com/pyenv/pyenv) here. It's a simple tool that builds interpreters on your system and provides shell aliases to adjust pathing so they can optionally be used. At the…
Python is another language not very different from Ruby. Check it out and if you like what you see, below are the python specific answers(IMO and far from complete) to your question.
> What are the options out there that are a solid alternative to RoR?
First three frameworks that pop up in my head without thinking too much are:
Flask - http://flask.pocoo.org/
Flask is a nice micro-framework for quickly getting up and running with simple web applications. It is easy to understand. But do not get mislead by the word "micro"; it is an amazing piece of software and can be used to build real web applications. Great for building APIs.
Why Flask: Strong architecture design, easy to use, actively developed by amazingly smart people.
Django - http://djangoproject.com/
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Development with Django is a breeze. Most common backend stuff in web development can be done with a few lines of code. Django is a full stack framework which comes bundled with its own ORM, template language, URL dispatching and lot of middlewares, libraries and utilities.
Why Django: Actually usable autogenerated admin interface, genric views(create stuff with zero code(sorta)) active development, insanely fast development cycles, good design, huge community of very smart and well respected people in python community.
Pyramid - http://pylonsproject.org/projects/pyramid/about
Pyramid is a very…