8 ms·
A few days ago I was chit chatting with a young dev who works in a Node shop when he asked: Young dev: "So, what's your backend?" Me: "Django" Young dev: "Wh
by rlander 11y ago
A few days ago I was chit chatting with a young dev who works in a Node shop when he asked:
Young dev: "So, what's your backend?"
Me: "Django"
Young dev: "What?"
Me: "Django, a Python framework."
Young dev: "Oh, right, that old framework. It must suck to support a legacy app that's written in something so outdated."
Me: "Well, we kinda use Django for everything."
Young dev: "Wow, doesn't everyone just use JS these days?"
Btw, I'm 36.
- joshmn 11y agoThe D is silent.
- talideon 11y agoIt miffs me every time I see somebody write that, because it's wrong, and assume the name follows English orthography in some way. The 'dj' represents the affricate [d͡ʒ] in older Romani orthographies, the 'j' representing the palatalisation of [d] to [d͡ʒ]. If it was written with the Pan-Vlax orthography these days, it'd be spelled 'džango'.
- bluedino 11y agoAt least you weren't berated for using PHP
- truncate 11y agoApart from being used by everybody, do they have any other reason for using JS? In general, I'm curious why JS is picking up so much for backend development? Is it just that people like using one language?
- jonesb6 11y agoI work on a product where JS is about 80% of the stack. In my opinion the JS ecosystem is best categorized as a bunch of sugar-rushed chipmunks running around shouting "we need better tooling". And you know what, it kinda works and its nice. Great tooling, great third-party ecosystem, really high quality modules / frameworks backed by large companies, and all the advantages of V8 and co.
- ossreality 11y agoSo that's what denial looks like.
- jerelunruh 11y ago> I'm curious why JS is picking up so much for backend development? The reason I reach for Node on a project is to handle my websockets. I use Django REST Framework + Ember as my main tools (super fast to build with) but, based on my testing, Python can't hold a candle to Node when working with thousands of websockets. It works great for what it was designed for.
- dguaraglia 11y agoHave you tried using Tornado/Twisted for the websockets? I'm curious about performance. I'm building a side project right now and I'm using Django running inside Tornado (it's pretty simple to setup, really) so I can both have my cake and eat it (easy APIs, and a layer I can use to maintain websockets.) I wonder if the performance would be comparable to Node?
- itbeho 11y agoThis is promising: http://swampdragon.net http://swampdragon.net
- dguaraglia 11y agoOh! Interesting, thanks for the link!
- jerelunruh 11y agoI tried every variation I could get to work including tornado, asyncio, and pypy. In my simple "how many websockets can I open" tests python would start erroring by 10,000 (no Django, just an empty websocket) while node hit 40,000 and was still climbing. Eventually I concluded it was a case of "with sufficient thrust pigs fly just fine". I still like python; just doesn't seem to be worth the effort to try to adapt blocking libraries into a non-blocking use case.
- dguaraglia 11y agoThat makes sense. I'm actually very pragmatic when it comes to this kind of stack and I'll be happy to replace my current Tornado frontend with a Node frontend when I hit the limit (for now it's a very niche usecase, just me and a few friends, so it might be that I never need to improve it.)
- rev_bird 11y ago>Is it just that people like using one language? This may not be the venue for me to surface this, but I've been trying to wrap my head around the MEAN stack for about a month now, and it doesn't really even register to me as the same language. I'm using Angular on the front end and ExpressJS plus Mongoose (MongoDB) on the back end, so yeah, it's all technically Javascript, but the real learning curve was in working out how to get these big frameworks to do what I wanted. I sincerely believe that if I was using an Angular frontend to call a Django REST service, I'd have had the exact same amount of trouble grokking what was going on (async calls being the obvious exception). Am I thinking about this the wrong way?
- reilly3000 11y agoWhen I was trying to learn Express it didn't make any sense to me, batteries were not included at the time and I'm sure they are now or you can just ask Yeoman and it shall be granted. Since then I've watched Rich Hickey talks and started to dig into Clojure and started to grok the whole computing stack. The Clojure way is to compose your own web services rather than configure them. I think express works the same way. Build what you need. Frameworks are always more productive for a hackathon or a pointy haired boss's deadline. For building a system that will be robust, maintainable, and scale to n, pure logic plus minimal libraries are superior in the long run. And far more secure, both through purity and obscurity.
- muriithi 11y agoI have been having the same experience. You only spend some time grokking the basic syntax of the language. Most of the time is spent getting the frameworks working and talking to one another. The frameworks having the same underlying language does not gives you much advantage.
- ronjouch 11y agoYeah. Hearing the word "legacy" at the sole mention of $MORE_THAN_ONE_YEAR_OLD_FRAMEWORK made me smile. Food for thought on this: - Joel Spolsky in Things You Should Never Do, Part I [1], saying source code doesn't rust. - Old Code Rusts [2], arguing that source code doesn't change by itself in the way that a car can rust "by itself", but the environment in which the code is used is always changing So maybe Django is already old fart technology? Well if it is, then it's a pretty powerful, solid, productive, reliable piece of old fart technology standing upon other pieces of old fart technology that, despite environmental changes (as defined in [2]), remain powerful, solid, productive, reliable tech powering many websites. I'd just cheer with young_dev to party on, Wayne, and go with whatever floats his/her boat. [1] http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html [2] http://c2.com/cgi/wiki?OldCodeRusts http://c2.com/cgi/wiki?OldCodeRusts
- christianmann 11y agoTCP/IP is a pretty old technology, and it's still rock solid at what it does.
- drdaeman 11y agoEwww, that's ages old stuff. Nowadays we use JavaScript. /s
- blowski 11y agoYou joke, but there are lots of Node devs using websockets in simple CRUD interfaces simply because "HTTP is too slow".
- drdaeman 11y agoWebSockets? That's so-o old fashioned. All the cool guys have already switched to WebRTC! Bad news: I'm obviously kidding here, but it's based on a true story.
- 11y ago
- megaman821 11y agoIs there a NodeJS framework (or set of libraries) that is as robust and secure as Django? What are the preferred solutions for: * an RDBMS ORM? * forms? * templates? * authentication? * permissions? * file storages? * sessions? * REST? * internationalization and localization? * caching? * logging? * mail? * sitemaps? * RSS/ATOM feeds? and security: * XSS? * CSRF? * clickjacking? * SQL injection? * ensure secure connections and cookies? I mostly use Django because I want to get stuff done, and with Node (as of a few years ago) it seems you have to rewrite the world.
- yeukhon 11y agoYeah. Node is pretty much all about npm install this and that. I like pyramid but sometimes I do miss the battery included Django offers out of the box. Flask is my 3rd choice only because of the global, makes testing a bit hard.
- dguaraglia 11y agoWe had to maintain a Pylons codebase that we never had the time to "port" to Pyramid (you know, rapidly growing startup, technical debt... then you get purchased by a big company and technical debt becomes a non-issue.) God, I hated a lot of that ecosystem. Lots of libraries that didn't work as promised (WebOb, WebTest, I'm looking at you) and upgrading them was impossible because newer versions broke Pylons. All in all, I've always been a Django advocate. I know people hate the "batteries included" approach, but it guarantees that all parts work together well, and you'd be surprised how much of it is easily replaceable/removable. I've even used Django as a bare-bones router/request handler framework with great results.
- drdaeman 11y ago> it guarantees that all parts work together well Unless you need to extend or modify the behavior in an unsupported manner. Django got much better since early 1.x versions, and gets better with every release, but I still find myself monkey-patching its internals (or copy-pasting classes with some minor changes) once in a few months.
- auvi 11y agoDo Ruby on Rails devs also get the same treatment? I know Giles Bowkett talked about Rails/node.js back in 2012 [0], but is the situation now reached a point that JS devs haven't even heard of Rails? [0] http://gilesbowkett.blogspot.com/2012/02/rails-went-off-rails-why-im-rebuilding.html http://gilesbowkett.blogspot.com/2012/02/rails-went-off-rail...
- rev_bird 11y agoComparatively young dev here -- I'd "heard" of Python/Django and Ruby waaay before I had any idea what Node was. Javascript, to me, was until recently that thing browsers ran to get pop-ups to fly all over the place. The developers I was working with just didn't talk about it.
- 0x400614 11y agoHave you tried JavaScript? http://thedailywtf.com/articles/Straight_Shooter_for_Upper_Management http://thedailywtf.com/articles/Straight_Shooter_for_Upper_M...
- rebootthesystem 11y agoThe one thing I wish was slicker in the Python/Django world is deployment. We just got done migrating five complete websites to new hardware. In that process one had to be completely re-written from scratch and the other four had various levels of tweaking, adjusting and fixing. The process was smooth as silk. No problems at all with deployment, live site testing, etc. Oh, yes, these were all PHP sites. I don't want to go into a Python vs. PHP discussion here. I'll simply say I am not a fan of PHP and by far prefer Python for most web (and other) work. And still, I have to say, when it is time to deploy a Python site we have to go through a checklist to make sure every little gizmo that needs to be in place is in place. Well, now we have Ansible scripts, but that's besides the point. With PHP we just FTP from our local repository to the live server and it's up and running with almost no setup. I also have to generalize and say that most of the Python/Django sites we've worked on are far, far more complex and involved than the typical PHP sites we see. This is where, to me at least, Python/Django shine. Anyhow, maybe we are being lazy. Don't know. It'd be interesting to hear from others who might do a lot of Python/Django work.
- Daishiman 11y agoThe simplest way to deploy Django nowadays is uwsgi. It can do everything, including serving static files with good performance. Setting up some routes, the virtual environment, and env variables is a breeze. It's easy to test locally to see if it's breaking, and trivial to restart. uWSGI is a pretty amazing piece of tech. A small binary which can do practically everything you need out a web server, really fast, and simple to configure.
- methodover 11y agoMight I point you to Fabric? IMO, it's much, much, much easier to work with than Ansible. At my startup, we've got a nice, 100-line or so script which does all the deployment work for our Django application. (Most of that isn't even Python-specific.)
- _yy 11y agoFabric exclusively uses the Paramiko SSH library, which means that it can't use any of the newer OpenSSH ciphers and is kinda slow. Ansible can use either. In my opinion, it's easier to work with than Fabric, too.
- odiroot 11y agoIsn't it all Go now? And Node being suddenly passé.
- coldtea 11y agoIt's not about the age. The guy is just more uninformed about the web development landscape than you are. He's like the Java or Microsoft of 2000's, that only knew their own part of the development landscape. In other words, Blub to the bone.