<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-3947176394840075701</id><updated>2008-01-07T16:04:16.084-08:00</updated><title type='text'>CS91si: Dynamic Web Applications</title><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml'/><author><name>jason</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-5904312719848315899</id><published>2007-11-24T11:30:00.000-08:00</published><updated>2007-11-24T11:39:56.633-08:00</updated><title type='text'>Project 2</title><content type='html'>Remember that project 2 is just a live chat wall. Think Facebook wall that updates interactively. In case you didn't want to write the backend yourself, &lt;a href="http://cs91si.stanford.edu/proj2.tar.bz2"&gt;here&lt;/a&gt; is a simple django project that covers it. The URLs are /wall/post/ to POST a new message and /wall/posts/ to see messages. The latter supports the GET param last_id to specify that you want all posts after a given message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also, think of something cool to make for the final assignment. It's totally open-ended, from a database driven website, to a nifty UI control, to some addition to Prototype (this one is cool because it shows up when you google your name). If you're short on ideas email me and I can help you out.</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/11/project-2.html' title='Project 2'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=5904312719848315899' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/5904312719848315899'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/5904312719848315899'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-8293101779183688265</id><published>2007-11-06T21:04:00.000-08:00</published><updated>2007-11-06T21:05:26.641-08:00</updated><title type='text'>meebo, inc. guest lecture!</title><content type='html'>Elaine Wherry and Sandy Jen, founders of meebo, will be lecturing tomorrow about big cool JavaScript applications. Come to CS91SI at 2:15 in 420-040, and forward this to any friends that might be interested.</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/11/meebo-inc-guest-lecture.html' title='meebo, inc. guest lecture!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=8293101779183688265' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8293101779183688265'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8293101779183688265'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-1783646086363708070</id><published>2007-10-31T09:25:00.001-07:00</published><updated>2007-10-31T09:30:26.435-07:00</updated><title type='text'>Making the server return an unordered list for Autocompleter</title><content type='html'>I didn't realize that it was much easier to work with the Ajax.Autocompleter if the server returned a &amp;lt;ul&amp;gt; element rather than JSON. To make dealing with this much easier, I encourage you to edit autocomplete/views.py and replace the complete function with this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;def complete(request):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;word = request['word']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;completions = word_list.get_words_with_prefix(word)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res = '&amp;lt;ul&amp;gt;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for completion in completions:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res += '&amp;lt;li&amp;gt;' + completion + '&amp;lt;/li&amp;gt;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res += '&amp;lt;/ul&amp;gt;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return HttpResponse(res)&lt;/span&gt;;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/10/making-server-return-unordered-list-for.html' title='Making the server return an unordered list for Autocompleter'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=1783646086363708070' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1783646086363708070'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1783646086363708070'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-2895764692907801529</id><published>2007-10-17T13:14:00.000-07:00</published><updated>2007-10-21T19:46:19.550-07:00</updated><title type='text'>Finally, an assignment! A simple autocompleter.</title><content type='html'>For this assignment you shall use some library (i.e. scriptaculous) to implement a Google Suggest-alike. I've written the backend in django for you, so you don't have to poke at it unless you would like to. To get the django development environment going, follow these steps.&lt;br /&gt;&lt;br /&gt;1. Download a local copy of django to your AFS space on a vine.&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;vine3:~&gt; svn co http://code.djangoproject.com/svn/django/trunk/ django&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Set your $PYTHONPATH:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vine3:~&gt; setenv PYTHONPATH ~/django/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Set your $PYTHONPATH in the .login file&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vine3:~&gt; echo "setenv PYTHONPATH ~/django/" &gt;&gt; ~/.login&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Copy the django project into your local directory.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vine3:~&gt; cp -r /usr/class/cs91si/projects/web91 .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. Run the django test server&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vine3:~&gt; cd web91&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vine3:~&gt; python manage.py runserver 0.0.0.0:7777&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where 7777 is a port to listen on.&lt;br /&gt;&lt;br /&gt;6. Try out http://vine3.stanford.edu:7777/complete/?word=fluf , replacing the appropriate server and port. See if the JSON returned looks reasonable. The first request will take some time as it loads the lexicon.&lt;br /&gt;&lt;br /&gt;7. Load up autocomplete/static/complete.html and edit it. It can be loaded at&lt;br /&gt;http://vine3.stanford.edu:7777/complete.html, replacing the appropriate server and port.&lt;br /&gt;&lt;br /&gt;Using scriptaculous, or the library of your choice, build an autocompleting text box on the complete.html page that queries the backend for words to complete with.</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/10/finally-assignment-simple-autocompleter.html' title='Finally, an assignment! A simple autocompleter.'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=2895764692907801529' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/2895764692907801529'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/2895764692907801529'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-4774798478392081693</id><published>2007-10-10T12:29:00.001-07:00</published><updated>2007-10-10T12:36:44.516-07:00</updated><title type='text'>Class #3: Pretty!</title><content type='html'>Today's class will be all about making things that are pretty. No handouts, just a set of links to projects we'll talk about.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox/"&gt;Lightboxes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://prototype-window.xilinus.com/"&gt;Prototoype Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://script.aculo.us/"&gt;scriptaculous&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dojotoolkit.org/"&gt;Dojo&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/10/class-3-pretty.html' title='Class #3: Pretty!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=4774798478392081693' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/4774798478392081693'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/4774798478392081693'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-5408391240892729335</id><published>2007-10-04T22:26:00.000-07:00</published><updated>2007-10-04T22:30:21.520-07:00</updated><title type='text'>Spellchecker example, handout 3</title><content type='html'>Here's the spellchecker app I wrote up. To actually run it you will need Python and Django installed. It's easy to install on a Mac, and I think it's not too difficult in Windows either. If you just want to look at the JS it is there as well. Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;a href="spellchecker.tar.gz"&gt;Spellchecker&lt;/a&gt;&lt;br /&gt;&lt;a href="handout3.pdf"&gt;Intro to Prototype Classes/JavaScript OO/Ajax&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/10/spellchecker-example-handout-3.html' title='Spellchecker example, handout 3'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=5408391240892729335' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/5408391240892729335'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/5408391240892729335'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-1857900788499694008</id><published>2007-10-02T14:58:00.000-07:00</published><updated>2007-10-02T15:00:25.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='administrivia'/><title type='text'>New Room!</title><content type='html'>Hey everyone, Uncle Stanford is helping us out this week and has blessed CS91SI with a bigger room. We will be meeting in 420-040, Wednesdays at 2:15 from now on. Tell your friends so they know where to go. See you tomorrow.</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/10/new-room.html' title='New Room!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=1857900788499694008' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1857900788499694008'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1857900788499694008'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-1599385174458131302</id><published>2007-09-30T16:59:00.001-07:00</published><updated>2007-09-30T17:15:38.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='administrivia'/><title type='text'>Setting up your development environment</title><content type='html'>I'd like to remind everyone to get their development environment set up for using JS in the browser this week. Install &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Faddons.mozilla.org%2Ffirefox%2F1843&amp;amp;ei=fzgAR8PHMYO8gQPTpK2BDg&amp;amp;usg=AFQjCNF9hAVLDphAnxsixo7BSBVok4e3Lg&amp;amp;sig2=Mixfs9b8XbgmvZHFtxDIvg"&gt;FireBug&lt;/a&gt; and mess around with the console a bit. Also I've added links for CSS properties index and the Prototype API on the right. Remember to download the latest release candidate for Prototype.&lt;br /&gt;&lt;br /&gt;Also, sad news. As mentioned in class, only 20 students can actually enroll for the course in Axess. After surveying interest in enrolling I have (rather, Python has) picked 20 students at random  to be allowed to enroll. If you are one of these people you have gotten an email by now hopefully. Again, everyone is welcome to take the course and I will look at every piece of code handed in and answer any question emailed to me; enrolling in Axess only gets you the one unit of credit.&lt;br /&gt;&lt;br /&gt;See everyone on Wednesday where we will cover simple Ajax requests and hopefully the first assignment will go out.</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/09/setting-up-your-development-environment.html' title='Setting up your development environment'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=1599385174458131302' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1599385174458131302'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/1599385174458131302'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-8826033871899589979</id><published>2007-09-26T11:19:00.001-07:00</published><updated>2007-09-26T11:22:46.411-07:00</updated><title type='text'>First Class Today</title><content type='html'>Hey everyone, remember that today is the first day of CS91SI. We'll talk about what webapps are, then some simple HTML and a first look at the Prototype library. There are two handouts:&lt;br /&gt;&lt;br /&gt;&lt;a href="handout1.pdf"&gt;What is a Webapp?&lt;/a&gt;&lt;br /&gt;&lt;a href="handout2.pdf"&gt;Simple HTML&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/09/first-class-today.html' title='First Class Today'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=8826033871899589979' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8826033871899589979'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8826033871899589979'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-8309105134966149791</id><published>2007-08-27T13:08:00.000-07:00</published><updated>2007-08-27T16:03:42.520-07:00</updated><title type='text'>Auditing, watching online, etc.</title><content type='html'>Hey everyone. I've gotten a few emails asking if the course will be televised on SCPD, and unfortunately the answer is no. CS91 is just a little student-initiated course and such courses are not really eligible for televising. Also, as for auditing, the course is only worth 1 unit and there isn't much work to be done, so there's no good reason to formally audit. Still, anyone is welcome to come to class and submit assignments. I'll try to at least look at everyone's assignments and get some sort of reply back. Also, anything I write up and all assignments will be posted online.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One more thing -- people interested in taking the course should realize that since it's a student-initiated course I am just an undergraduate, not a lecturer. I don't want anyone to be confused and expect a grownup on the first day of class. I know a good bit about the web, though; I worked at &lt;a href="meebo.com"&gt;meebo.com&lt;/a&gt; last summer and this summer I am involved with a very web 2.0-ish startup.&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/08/auditing-watching-online-etc.html' title='Auditing, watching online, etc.'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=8309105134966149791' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8309105134966149791'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/8309105134966149791'/><author><name>jason</name></author></entry><entry><id>tag:blogger.com,1999:blog-3947176394840075701.post-6261361161544445540</id><published>2007-08-15T11:24:00.000-07:00</published><updated>2007-08-15T16:03:06.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syllabus'/><title type='text'>Welcome to CS91si!</title><content type='html'>Hi there everyone. I'm Jason Prado and I'll be leading our course, CS91si, this coming autumn quarter. We'll be covering (hopefully) everything one needs to know to build applications for the web, with a focus on Ajax methods. The course is going to move quickly, but count on the assignments to be quick and rewarding. The only requirement is that one be able to pick up programming paradigms quickly, for we will see a lot of them very quickly.&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a rough list of things I plan to cover this autumn:&lt;/div&gt;&lt;ul id=""&gt;&lt;li&gt;What makes web applications different than traditional websites&lt;/li&gt;&lt;li&gt;The HTTP model, as it is used today&lt;/li&gt;&lt;li&gt;The state of the art in shiny webapps&lt;/li&gt;&lt;li&gt;HTML/CSS/Javascript/JSON/HTTP/XML and every other common acronym&lt;/li&gt;&lt;li&gt;Modern Javascript, and how it is different than what you saw in 1998&lt;/li&gt;&lt;li&gt;Javascript libraries (I'll pick one and we'll stick to it through the class)&lt;/li&gt;&lt;li&gt;Ajax!&lt;/li&gt;&lt;li&gt;Application frameworks (we'll focus on Django)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Again, even though we're covering a lot, count on assignments being more fill-in-the-blank coding projects. Of course, extensions are always welcomed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will meet weekly on Wednesday, 2:15PM-3:30PM in Hewlett 103. SIC courses are limited in enrollment to 20, but the room is large enough that up to 49 people are welcome to attend discussions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have any questions about the course, feel free to email me at jbprado at stanford dot edu. I look forward to seeing everyone in the fall.&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://cs91si.stanford.edu/2007/08/welcome-to-cs91si.html' title='Welcome to CS91si!'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3947176394840075701&amp;postID=6261361161544445540' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://cs91si.stanford.edu/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/6261361161544445540'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3947176394840075701/posts/default/6261361161544445540'/><author><name>jason</name></author></entry></feed>
