notes-tech-netCoding

This page contains notes on programming languages, libraries, protocols, formats, and tools useful for interacting with the internet. I have attempted to ascertain what the top items in each category are -- "top" being some combination of "most popular" and "my favorite". Popularity includes momentum.

This page is basically notes based on rumors, and should not be construed as independent testimony. What I mean by that is that the lists on this page have been formulated just by reading other people's opinions on the web and by looking at demos/screenshots/tutorials -- if i have enough the experience with an item to judge it for myself, it is listed in the favorites section of this website, rather than here.

Blogs

As of March '10.

Wordpress.

CMSs

As of November '10.

In order from lightweight to heavyweight:

Conclusion: it's not apparent to me how to choose between Drupal and Plone. My sense is that Drupal's initial focus was on building sites like Slashdot and Plone's was for building a large corporate website, but i'm not sure what the difference is now. It also seems like Plone put more advanced infrastructure in the core (see outdated http://www.cmsmatrix.org/matrix/cms-matrix comparison between Drupal 6.1 and Plone 3), while Drupal let modules do more stuff at first, though of late it may be slowly pulling stuff into core (e.g. CCK, "content construction kit"). Finally, since Drupal can be installed on the cheapest form of commodity hosting and Plone can't (e.g. you can run Drupal on Dreamhost (you can even run it for free on Dreamhost Apps), but not Plone), and since more people know PHP than Python, i expect that Drupal has more sustainable development momentum (that is, my guess is that plone's arch is better, but it loses momentum b/c it cant be run on the most common type of cheap hosting).

Apparently Alfresco and Nuexo are ok too but for the different purpose of workflow-ish document management:

"

Drupal/Joomla are what you may call 'Web CMS'es or Web Content Management systems. They are meant to be used for deploying web solutions centered around content management, such as web portals, music/photo sharing websites, social networking websites etc.

Alfresco on the other hand is a ECM or Enterprise Content Management software. This relates to file-sharing on the enterprise level, such as file versioning, document management and indexing, online editing and updating documents, check-in/check-out ability for files, applying security and business rules to documentation etc. intra-corporation communication etc. Its functioning can be compared to FileNet?, Sharepoint, Documentum etc. " -- http://www.linkedin.com/answers/technology/enterprise-software/TCH_ENT/480854-18077316

see e.g. http://blogs.nuxeo.com/dev/2005/12/open-source-ecm-now.html , http://brianglass.wordpress.com/2006/03/18/alfresco-plone-and-knowledgetree/ . However it seems that Plone can do workflows, versioning, etc. and plone has many more google hits. Alfresco and Plone seem to claim to do document management and "ECM" as well as "WMS" (web) and "CMS" in general.

Liferay seems to be known for "enterprise portals".

typo3 gets mentioned a lot as well.

Version Control Systems (also known as "Revision Control Systems")

As of March '10.

Wikis

Programming Languages

As of November '08.

I've used Python and Perl extensively, and Haskell a little. I don't know Ruby, Scheme, Arc, Erlang, Self.

Clearly, the perfect language will have to combine the semantics of Haskell, the convenience of Ruby, the straightforwardness of Python, the parallelness of Erlang, and the metaprogrammability of Lisp. And some logic programming to boot.

From these conjectures we can make some tentative inferences.

The perfect programming language does not have the syntax of Haskell, since afaik Haskell does not lend itself to a small self compiler like Lisp does. It does not have the syntax of Lisp either, since that Lisp is less concise and readable than Haskell.

Since it has the semantics of Haskell, the perfect language will probably compile to Haskell under the hood, provided that an elegant way to map Haskell compiler error messages to error messages in the source language can be found. This leads to the paranoid suspicion that perhaps the perfect language has already been invented in the guise of a Haskell extension, but that I don't know about it because instead of calling it something like "Ruby" and describing it as "a programming language", it may be called something like "Smash along your boilerplate" and described as "a generic programming approach based on a type-level typecase, best understood as a static dual of `Scrap your boilerplate I' (SYB1)."

If, as Paul Graham opines, succintness is the primary goal of language design, then the proof of the perfection of the perfect language will be that, for each of the above languages, an automated compiler will be written that compiles programs in that language into the perfect language. For most real-world programs and libraries, the version of the program in the perfect language will be about as short as in the original language, and often it will be shorter. I opine that straightforwardness/readability are also goals, therefore the version of the program in the perfect language will mostly be about as readable as in the original language; furthermore, often there will exist a version of the program in the perfect language which is more readable than any version in the original language.

Other language goals include its elegance, which has something to do with the number and complexity and orthogonality of its fundamental constructs. Its extensibility. And its ability to discourage the propensity towards "shattering"; that is, when libraries/language variants fork into a zillion incompatible versions (a problem that Lisp is said to have, and that Java and Python are said to try to avoid; although its unclear to me if this is just determined by the extensibility of the language combined with the culture of its community, in which case better language design can't solve it (unless you follow GvR?'s line that purposefully restricting metaprogramming is a feature, not a bug) -- or if, on the other hand, there are other aspects of language design that can fight the propensity to shatter).

Python web programming frameworks

As of November '08.

See also http://groups.google.com/group/comp.lang.python/browse_thread/thread/a0b81cc2e2b386fa

Python web programming frameworks for Google App Engine

As of March '10

Django and Pylons work, but are maybe not the best choice b/c there is so much GAE-specific stuff that some of the stuff they do for you doesn't work or isn't appropriate or at the least needs to be adapted -- foremost amongst these things: using a BigTable? type thing is so different from using a relational database.

Note that the Django and webapp are the ones bundled with GAE.

Others:

GAE-specific

General ones that are thought to work with GAE

Lists

http://code.google.com/p/tipfy/wiki/AppEngineFrameworks

Ruby web programming frameworks

As of November '08.

Issue trackers

As of November '08.

(free) Open source project hosting

As of November '08.

None of these fulfill my desires. What I'd really like is:

Afaik: No one has Darcs. No one but Github (and maybe Launchpad?) has the social distributed version control stuff. Sourceforge has almost everything, and since it has CGI you can use your own issue tracker, etc, but it is not itself open source. Savannah has almost everything but it doesn't have CGI, so it's much less flexible than Sourceforge, and the need to not offend the GNU is a little scary -- would they allow you to dual-license your code?

In summary, I am currently on Sourceforge and I might move to Savannah sometime.

javascript libraries

jquery


See also [Self-newsAndPredictions-netCodingOld], where I move old stuff to from this page after it is no longer something I'm interested in tracking.