Tangle is cool:

Tangle is a JavaScript library for creating reactive documents. Your readers can interactively explore possibilities, play with parameters, and see the document update immediately. Tangle is super-simple and easy to learn.

Check it out: http://worrydream.com/Tangle/.

Facebook Chat looks very simple by design, but if you pry deeper you’ll learn that it’s an impressive engineering and design feat. One must question: how was Facebook Chat, which was to serve over 70 million users when it was built (now serving over 500 million), developed? What technologies were put together to bake this web-based chat feature?

Eugene Letuchy, the lead developer of Chat, from Facebook, has put the answers down in a neat presentation that highlights the main aspects of what went into Facebook Chat.

At the heart of Facebook Chat, and thus the central part of this presentation, is a programming language called Erlang, which is a general-purpose concurrent, garbage-collected programming language and runtime system.

Erlang at Facebook

For the more curious among us, I’m listing below a glossary of terms – the technologies and the buzzwords – that have made Facebook Chat possible, and scalable, for over 500 million people. Most of these technologies are open source:

  • Erlang

    Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang\’s runtime system has built-in support for concurrency, distribution and fault tolerance.

  • Polyglot programming

    A polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independently of the programming language used to compile or interpret it.

  • JSONP

    JSONP or “JSON with padding” allows a page to request and more meaningfully use JSON from a server other than the primary server.

  • Using Facebook Chat via Jabber/XMPP

    To make Facebook Chat available everywhere, they are using the technology Jabber (XMPP), an open messaging protocol supported by most instant messaging software, including iChat, Pidgin, Adium, Miranda and more.

  • Hackathon

    A hackathon is an event when programmers meet to do collaborative computer programming.

  • Thrift

    Thrift is a remote procedure call framework developed at Facebook (later submitted and accepted under Apache Software Foundation) for “scalable cross-language services development”.

  • Presence

    Presence information is a status indicator that conveys ability and willingness of a potential communication partner – for example a user – to communicate.

  • JavaScript

    JavaScript is primarily used in the form of client-side JavaScript, implemented as part of a web browser in order to provide enhanced user interfaces and dynamic websites.

  • PHP

    PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

  • Ajax

    Ajax is a group of interrelated web development techniques used on the client-side to create interactive web applications.

  • ejabberd

    ejabberd is a Jabber/XMPP instant messaging server written in Erlang. It is open source, cross-platform, fault-tolerant, clusterable and modular.

  • Polling

    Polling, or polled operation, refers to actively sampling the status of an external device by a client program as a synchronous activity.

  • Comet

    Comet is a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. It’s also sometimes called as Ajax Push and Reverse Ajax, among others.

  • MochiWeb

    MochiWeb is an Erlang library for building lightweight HTTP servers.

  • Scribe (note)

    Scribe is a server for aggregating log data that\’s streamed in real time from clients. It is designed to be scalable and reliable.

  • FB303 (readme)

    fb303 is the shared root of all thrift services.

  • Concurrent programming

    In concurrent (parallel) programming, single tasks are split into a number of subtasks that can be computed relatively independently and then aggregated to form a single coherent solution.

  • Load balancing

    Load balancing is a technique to distribute workload evenly across two or more computers, network links, CPUs, hard drives, or other resources, in order to get optimal resource utilization, maximize throughput, minimize response time, and avoid overload.

  • Multicasting

    To transmit a single message to a select group of recipients. A simple example of multicasting is sending an e-mail message to a mailing list. Teleconferencing and videoconferencing also use multicasting, but require more robust protocols and networks.

  • Segfault

    A segmentation fault (often shortened to segfault) occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed.

  • OOM

    Out of memory (OOM) is an undesired state of computer operation where no additional memory can be allocated for use by programs or the operating system.

  • Hot code swapping

    Hot code swapping refers to the ability to alter the running code of a program without needing to interrupt its execution. Only a few programming languages support hot swapping natively, including Pike, Lisp, Erlang, Smalltalk, and Java.

  • Symmetric Multi-Processing (SMP)

    A multiprocessing architecture in which multiple CPUs, residing in one cabinet, share the same memory. SMP systems provide scalability.

Being in the field of IT (Computer Science), it\’s necessary to keep pace with the changing landscape, otherwise you would end up rendering yourself obsolete. It\’s no different with web development/programming: The landscape keeps changing, either on the user interface front or the browser side or the website back-end.

As of now, we are moving through the era of web application frameworks. That\’s the landscape we are surrounded with. Plenty of frameworks have been built during these years broadly categorized under software frameworks, web application frameworks and JavaScript frameworks (or libraries), and plenty more are being developed.

So better learn one now, before you are rendered obsolete.

I am considering the following frameworks:

image image image image Djangoimage

Read more about the most popular web frameworks that I am considering after the jump.

Read the rest of this entry »


© 2007 Zenning! | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress