David.dev 🐍

about ~ apps

31. Dezember 2019 00:02 django, python

Django 3.0.1 is very cool

During the Christmas holidays I usually spend some time finding a new technology to learn. This often means taking some short online course and trying a new project.

As I am doing most of the coding for my own learning I would say that whilst it is very nice to try different technologies, there is the risk that you never really become proficient in any of them. (of course this is mostly applicable to non-professional developers and people that don't spend a lot of time coding). 

One thing I learned from experienced developers is that whilst some technologies look interesting, they are simply not mature enough to allow you to develop something relatively complex in an efficient way.

What do I mean by that? Web apps -- or to use a more modern term server side applications -- often present the same structure: authentication, connection to a database, templates to display the data. 

This is why several frameworks are so successful: they provide you with a set of tools to simplify web development. 

After tying a lot of different server side technologies (some ubiquitous ones as NodeJS, PHP, Go and even more niche ones like Swift server side with Kitura I came back to Django, that has now reached version 3, and guess what? it is very cool. 

For the past months I was somehow vary of opinionated frameworks. It is certainly true that you can learn a lot by not using a framework but...you also learn a lot by using one.

Django gives you a lot of tools out of the box: database ORM, templates, a good structure and some out of the box securities features that are very important in web development. 

After fighting with swift server-side I have to admit that Python was much more pleasant and concise. 

Not content of the "out of the box" features provided by django I have also used Bootstrap 4 as a frontend framework. Why is this something new ? because again I previous projects I have tried to adopt a more minimalistic approach with lightweight css frameworks. Well guess what, Bootstrap 4 is also awesome and gives you a lot of features that are not available in other lightweight solutions. 

So in short, at the moment I have a lot of ❤️for python and django because -- after spending some time with it -- I enjoy the opinionated way. 

I am perhaps too tired to define a struct before being able to parse some json data, check datatypes et all (Yes Swift and Go I am looking at you.

No technology or framework is perfect -- django is no exclusion of course -- but a lot of tasks, once you go through the documentation and understand how it works, are a much easier to accomplish. 

There are of course some weaknesses too e.g. it doesn't seem that Django offers any SSE (Server-sent events) streaming support, deployment is not as straightforward as in Golang (which is probably the best in this regard) or NodeJS through PM2. 

This is of course based on my experience and limitations: I am very impatient and I can't really spend time going very slowly thought every language feature before writing on it. 

For instance for this new project I did a skeleton app in both Django and Golang. The initial task was simply: just fetch some JSON from an API and display it. After having this basic view I simply wasn't able to move in Golang as fast as I did with Django.  

In terms of online Python courses I would recommend codemy video courses as are really well done (each segment is around 6-8 minutes so not too long) and most of the courses allow you to build a small app. This is great because you can see some tangible results. These courses never go too deep but you will have a basic app to improve and modify.  The membership is just 49$ for all courses and I think is money well spent. 

All this said I still have a lot of ❤️ for nodejs non-opinionated frameworks like express and polka, PHP, Golang. We live in a great time with so many web technologies that gives you no excuse to pick one and start coding today make it your year 2020 resolution!