A question for the developer of this website: in which programming language are this site's core functionalities made? (except of course html, css)
HTML/CSS are all client side, ao are you asking for the server side or client side?
so*
Anyways "core" I would guess means the server side, and so the server is made in Scala (Primary) MongoDB, and a couple more, back me up on this @thomaster I kinda forgot xD
The reason I'm asking this is that my school wants to implement something like openstudy for teacher-students aid or student-student mutual aid. Since openstudy has been around for quite a while, what's the best solution to handle server side management with today's technology?
I don't really get what you mean? What exactly are you trying to accomplish?
to make a website similar to openstudy (real time question + answer without refreshing page, level system, chat system)
You want it with all the bells and whistles or just the basic core functionality?
He just said only the questions and answering :P no smartscore or chat stuff
He said level system thom..... :P
smartscore = a level system :)
yea pretty much those 3 :P
but the real time interactive questoin + answer is the most important, that should be done above all :)
i'm somewhat experienced in programming, know javascript, mysql and python, but guess that's not enough?
Ok so you really don't have to go the same way OS went, if it makes it any easier your school could introduce a new system made out of something more manageable (another language) and they could build a new one that is a lot simpler
That's pretty close to enough
Let me get some admins on here, @Preetha @shadowfiend
which programming language would u guys suggest that does the best job? people say javascript is insecure and php is dislike by lots of people (i dunno why tho)
ok thanks :)
You should ask @dumbsearch2
Javascript, html, css, ajax, etc.. all these langauges are mainly Client Side, what you want is server side, for server you can use Python, Scala, CGI/PERL, ASP, DJango (frame for python) Cold Fusion, JAVA (arguably the most robust and powerful platform for server side, Other than that you can look around for others, but you might want to speak with the school IT about all this and see what he likes the best.
Oh and ASP is just a framework
OpenStudy used Scala (very similar to Java) for all it's server-sided stuff. They used the typical languages, JavaScript, HTML and CSS. Note that for a lot of the answering and posting stuff, it was done with the server, and linked together heavily utilizing AJAX.
Oh and ruby is also a good one
Honestly the list goes on forever, you need to find a language that suits your needs and your IT's needs
Everything else is minimal.
And the main reason why PHP is disliked is for only one reason: It is not that efficient. It is still used quite a bit, because it is quite easy to learn. Facebook finds a solution by being programmed in PHP, yet being compiled to C++.
And the way that you can answer and ask questions uses the server language, it connects to the server... and the Ajax allows the data to be dynamically loaded without any page refresh. Note that I'd prefer Sockets in this case, though for a small website this could be heavy handed. And PHP could still suit your needs quite well. It only gets slow for really big sites.
Don't you have a a very basic and stripped down version of OS for emergencies? Maybe you could help him get something like that for his school.
Hmm. I made it in PHP.
Well something like that would be good for him, hos school want's a basic functioning website so that's good, and it could also be more like an intranet, you know like only local to the school so they can house the servers there, although I would like to ask, what school is it? I need to know so I can see what type of system they have, I know for my county it's all tied together with the counties servers.Like this http://www.polk-fl.net/
The county manages everything, if they go down all of Polk county schools interent goes down, that's how it works in florida, the county is the manager.
it's a private highschool in montreal, Canada, Brebeuf College. So school manages it itself :)
I put up some details of the technology OpenStudy uses at http://openstudy.com/updates/4f41c098e4b0803c6353192f a while back.
I knew shadowfiend would listen to the cry of distress ^,^
Haha Yes, OpenStudy also uses the Lift framework.
PHP's downside is generally not considered to be its speed, though that can contribute. It's considered to be a somewhat convoluted language that implements certain language features that make it more difficult to reason about the program in a safe way, and more difficult to create maintainable programs.
I was actually toying around the source files right when this came up xD
@shadowfiend Efficiency is a large factor I've heard. Languages like Node.js can handle stuff a lot faster
You could make something similar using Python and the Twisted framework. There are probably better abstractions layered on it at this point. Personally, I don't think there's anything out there that really holds a candle to Lift for real-time application development at the moment. The concepts that Lift uses to express real-time applications (actors in general and comet actors in particular), once you understand them, are extremely powerful and extremely simple to reason about.
Efficiency and scalability are words that get thrown around a lot without most people really understanding what they mean. At the scale that @zscdragon is talking about, the difference would likely be negligible.
Lift's concepts as opposed to Node, which is still mostly either a mishmash of callbacks or abstraction layers that hide so much from you that you don't really know for sure when you start losing messages and such.
What about Python with DJango framework? I have seen some rather astonishing applications.
I've seen some solid apps with Django, but I don't know that there's any built-in support for real-time applications.
That website I sent you is all DJango with Python on server, I have seen it myself.
@shadowfiend One thing I know is that this site is extremely slow. It's over-reliant on AJAX or similar technologies. Have you tried switching this site to some socket.io based technologies?
A valuable lesson to learn is to never assume you know the reason something is slow.
Until you actually get in the code. 90% of the time, you're wrong.
AJAX has nothing to do with slowness on OpenStudy, congestion has everything to do with it.
And all of that happens in the backend.
That's actually very much true, you can't assume
Sockets have little serious benefit over long-poll comet requests.
I can show you all those scripts running unnecessarily fetching info at selected intervals.
But AJAX does present a problem with loading unnecessary things. It does probably have a factor to do with the client side beng slow and acting up while others are fine.
On larger scale websites, sockets do have a very large impact. I've seen it.
You're seeing long-poll requests, which are cheap to set up and return zero data when there is nothing to return.
And I did get into some of the client-side code.
Question, why was scala chosen when there are so many other languges that are uch more powerful, I mean Python and JAVA are very powerful platforms.
The client side is slow due to a large number of active components that are propagating changes that force more redraws and relayouts and such than are necessary for any given set of changes. We never really got around to optimizing that aspect of things. Here's some good discussion on long polls and sockets: https://groups.google.com/forum/#!searchin/liftweb/socket/liftweb/1fa3rolbnvI/enV5CFm2Rd4J .
There are no languages that are “much more powerful” than Scala. There are some languages that approach problems differently. Scala runs on a proven platform (the Java Virtual Machine) that has had hundreds of thousands of man-hours poured into its scalability and deployment stories.
I love this guy, he teaches us so much v.v
It also provided us a ridiculously high developer productivity, and large compile-time guarantees that reduced the need for separate testing.
Ah I see
That, and Lift is in Scala. It's got some of the best abstractions and approaches to web development I've seen since I started working on the web.
Despite being a programmer, thank you for debunking some long-time myths!
He is truly a yoda of OS
I also heard a lot of people saying how inefficient PHP is speed-wise... Something I didn't want to believe, being quite a programmer of it! Thanks for debunking these rumors :-)
Don't get me wrong, I'm not saying PHP isn't slower than many other languages. What I'm saying is there are many situations where that *just doesn't matter*.
Hmm. I noticed that too.
But don't you think that they'res a reason why Facebook has a framework for converting the PHP code to C++? I think it's very subtle. So your point is that it would only matter on a very large website.
I would also encourage you to move outside of PHP. Not because PHP is good or bad or better or worse, but because there are few things as useful to a programmer as the ability to move between languages.
Indeed.
Yes. Facebook was running 13 million queries per second in their backend sometime in 2010, and they've only grown since then. Their scale is ridiculous, and there are only a handful of sites out there that ever need to scale to that level. Twitter, by the way, uses Scala in their backend.
What about a DJango + Pusher type thing?
< shrug > That's a perfectly viable opportunity.
Er… Option heh.
@uri why don't you give @shadowfiend the medal? he deserves it! ;)
NO WAY! THE LEGEND! SHADOWFIEND!!!
But I do think OS is good as is, but there are just so many option out there, not to mention that we need some SERIOUS optimizing done to make it work smoother.
I humble at the feet of all of you :l *bows*
Some browsers have source inspection. Take a look at the source and see what programming language is utilized. Maybe that will help.
Um no, that's only client side @Dean.Shyy
The javascript, html, css, ajax type thing.
Lift actually leaves some traces in the client side, as well ;)
All right folks, that's it for me. Time to get back to work. Have a good one!
Yes I saw the lift files
I know, @shadowfiend I saw some JavaScript referencing to the Lift
Goodbye master *bows*
What about node.js? I'm quite a pro at JavaScript, and I'm wondering about node.js
as a server language
I hope your trip back to coding planet is smooth.
BTW @shadowfiend I never knew that Twitter was done with some Scala!!
It says on the scala page. thats how I found out lol
My opinion? Don't bother. There's nothing interesting about using node.js on the server, and if you get a job that requires you to use it you'll be able to learn it fast. Pick something more challenging. Clojure, Scala, something like that.
Whats wrong about node.js? It seems to work beautifully smooth
Python?
By the way @shadowfiend Why doesnt upenstudy update their mathjax and LaTeX version so we can use the full version?
Join our real-time social learning platform and learn together with your friends!