Sunday, December 30, 2007

favorite programming books!


...below is a snapshot of some of these I am reading now, some I have read more than once... continue to find all of them very useful.

Just finished an awesome Ruby class at the University of Washington taught by Ryan 'Zenspider' Davis, which was phenomenal, learned a ton. Starting the 3 month Rails class next week at UW... as you can see from the books, trying to surround myself with as much Ruby and Rails information as possible, while also studying the finer points of web application development with RESTful web development, RegEx techniques, high performance techniques from Steve Souders' book (Souders was the YSlow creator while he was the Chief Performance Yahoo!), etc , and as always, lots of Ajax. There are a few books left out of this pic, as they are at work, but they would be the "Javascript: The Definitive Guide", and "Prototype and Scriptaculous In Action".

  • Crane, et al, Ajax in Practice
  • Porteneuve, Prototype and script.aculo.us You Never Knew JavaScript Could do This!
  • Friedl, Mastering Regular Expressions
  • Souders, High Performance Web Sites
  • Hunt, Thomas, The Pragmatic Programmer
  • Cederholm, Bulletproof Web Design
  • Resig, Pro JavaScript Techniques
  • Thomas, DHH, Agile Web Development with Rails
  • Thomas, Programming Ruby (aka PixAxe book)
  • Berube, Practical Ruby Gems
  • Crane, Prototype and Scriptaculous In Action
  • Flanagan, Javascript: The Definitive Guide

Friday, December 28, 2007

Erlyweb, Erlang, Comet

Been doing a cursory look at Erlang and Erlyweb for a few mos off and on, keeping track of it via a variety of RSS feeds, articles in the community, toying around with it, etc.

Have come to the interim conclusion at present that I don't think Erlang-based Erlyweb will ever be a replacement for Rails, or Django, etc. Building MVC web apps quickly and robustly for the large chunk of market share will be an area where Java, Rails, PHP, ASP, Django et al dominate. Then most will take the steps to scale up from there if need be.

But it will definitely fill the gap for creating highly available web sites or services. Especially in the realm of Comet (or server side 'push' instead of polling) apps, where data gets instantly pushed to clients when the data is available on the server. Reason being is that Comet requires long lasting connections between the client and server to lazily push out data as that data becomes available… so having 80,000 connections with Erlang is not a big deal. It would be a very big deal with Apache. The other is database connection pooling and fast access to db's

...the Erlyweb/ Erlang sweet spot seems to me to be where multiple connections demonstrate a big performance boost, or boost in ease of implementation. So Comet is a good example b/c you benefit from all those connections. Same with Twitter, or Amazon’s SimpleDB. Also the database pooling examples given in Yariv's presentation is very intriguing. All of those make sense, or where background concurrency gives you a needed architectural boost. But many classes of less complex apps, a large percentage of web applications in fact, you can write those in a shorter time, for E.g., with Rails TDD, and it has no need for the concurrency on the backend that Erlyweb provides via Erlang...

Erlyweb and Erlang seems to be possibly an up and coming 'right tool for the job' when it comes to high availability real time data pushing. Something to keep an eye on.

Here are some links to whet the Erlang appetite of anyone interested... also a couple Comet links:

http://www.bayfp.org/blog/2007/12/25/yariv-sadan-on-erlyweb-video-and-slides/
http://en.wikipedia.org/wiki/Erlang_(programming_language)
http://erlyweb.org/
http://en.wikipedia.org/wiki/Comet_(programming)
http://www.irishdev.com/NewsArticle.aspx?id=2166
http://alex.dojotoolkit.org/?p=545

Saturday, December 15, 2007

RDF and the Semantic Web

Nicely written introductory link on RDF and the semantic web if you're curious. To give this some background and context... imo, this is why Google is coming out with it's "Knowls", etc, that was recently reported in the media.

a quick summary of RDF: Within in the flavor of XML that is RDF, people/companies creating web pages embed loosely organized 'sentences' of how the data on their pages is structured -- such as [what this page represents] [is a] [noun], or [actor] [starred_in] [movie] --- or more specifically ...whereby the URI " http://en.wikipedia.org/wiki/Dolphin" could be used by anyone working in RDF to represent the concept of a dolphin.

...Wikipedia is currently way ahead of any site in terms of static informational pages, or references that are the answer to the "is a" question, for example. What do I mean by that/ why are these important? While databases structure data in a hierarchical, contained, somewhat inflexible way -- in the sense that this format of contained information therefore takes 'work' to connect that data to other data E.g. a webservice, an api wrapped around the database is required to allow others to access it etc. The Tim Berners Lee world of REST and the Semantic web theorizes ways to change that for the better in many ways, where pages themselves are related to the web in general via a common, standardized meta language.

So perhaps Google wants to catch up with Wiki (stands for "What I Know Is...") and extend its capability (dominance) in search in that different direction. I personally only care about what Google or Wikipedia is doing in the sense of how it will play out with the infrastructure of the web and how to anticipate what is ahead. REST, RDF, the Semantic web are interesting topics gaining momentum (which is one motivator for me in learning the Ruby web framework known as Rails, which embraces REST).

If the semantic web booms, which seems like a logical evolution, these Wiki or Knowls sorts of web properties find themselves at the core of finding information on the semantic web -- i.e. the semantic-noun-verb core. The standards for RDF and the semantic web are evolving, and it will be fun to see where/how this evolves over the next few years.

Some other links:
Redland RDF libraries: http://librdf.org/ : (Ruby binding: http://librdf.org/docs/ruby.html)
ActiveRDF (Rails): http://activerdf.org/

-Holts