<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1969666845951186091</id><updated>2011-11-27T15:14:56.424-08:00</updated><category term='computation'/><category term='communication protocols'/><category term='google app engine'/><category term='google wave'/><category term='proxy'/><category term='postgres'/><category term='helloworld'/><category term='javascript'/><category term='yurlp'/><category term='java'/><category term='logic'/><category term='ajax'/><category term='apple'/><category term='interview questions'/><category term='programming questions'/><category term='django'/><category term='bioinformatics'/><category term='computer networks'/><category term='WATDR'/><category term='bearminimum'/><category term='internet architecture'/><category term='ruby on rails'/><category term='graduaint'/><category term='css'/><category term='sql'/><category term='python'/><category term='fall 09'/><category term='amazon'/><category term='abstraction'/><category term='mac'/><category term='windows'/><category term='ucsd extension'/><category term='ocaml'/><category term='News'/><category term='spring 09'/><category term='teaching'/><category term='google'/><category term='harvard extension'/><category term='database'/><category term='appenginepatch'/><title type='text'>Donnie Demuth</title><subtitle type='html'>Want to message me directly? E-mail me at : donnie{dot}demuth{at}gmail{dot}com</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.pidby.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.pidby.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-27174882121706735</id><published>2010-07-08T06:38:00.000-07:00</published><updated>2010-07-08T06:38:18.360-07:00</updated><title type='text'>Bioinformatics with Python and Hadoop Streaming</title><content type='html'>A while back I wrote a short paper about using the Python programming language in conjunction with Apache Hadoop. The purpose of doing so was to use several to many heavy duty machines to process problems in the field of Bioinformatics. At the time, I did not come across many resources so I've decided to post some of my work on the web. The intended audience would be students in an introductory Bioinformatics course or anyone with a will. It's really simple stuff!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;The Paper/Tutorial:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://donniedemuth.s3.amazonaws.com/bioinf_with_python_and_hadoop.pdf"&gt;http://donniedemuth.s3.amazonaws.com/bioinf_with_python_and_hadoop.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Relevant Slides:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I also gave a presentation on functional programming, Python, and Hadoop. The slides relate heavily to the paper above.&lt;br /&gt;&lt;a href="http://donniedemuth.s3.amazonaws.com/LCS_python_hadoop_streaming.ppt"&gt;http://donniedemuth.s3.amazonaws.com/LCS_python_hadoop_streaming.ppt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/div&gt;I haven't edited the material yet so there may be grammatical errors. And eventually I plan on moving the contents onto the blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-27174882121706735?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/27174882121706735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=27174882121706735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/27174882121706735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/27174882121706735'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/07/bioinformatics-with-python-and-hadoop.html' title='Bioinformatics with Python and Hadoop Streaming'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4142535943793481163</id><published>2010-02-03T10:23:00.000-08:00</published><updated>2010-02-03T12:15:57.289-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring 09'/><category scheme='http://www.blogger.com/atom/ns#' term='bioinformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-190 Bioinformatics Algorithms</title><content type='html'>&lt;a href="http://isites.harvard.edu/icb/icb.do?keyword=k65519&amp;amp;pageid=icb.page299472"&gt;CSCI E-290&lt;/a&gt; is a fairly new course in the Harvard Extension School curriculum related to three different programs: biology, computer science, and biotechnology. I'm taking it as an elective in my pursuit for a Masters in Liberal Arts (&lt;a href="http://www.extension.harvard.edu/alm/"&gt;ALM-IT&lt;/a&gt;) with a concentration Software Engineering; though after a little bit of studying I'm curious why I never pursued the &lt;a href="http://www.extension.harvard.edu/biotech/default.jsp"&gt;biotechnology&lt;/a&gt; path.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #666666;"&gt;&lt;i&gt;Note: When I was younger, I was terrible in the sciences (biology, chemistry, you name it). Actually, if it wasn't computer related it couldn't hold my attention.&lt;/i&gt; &lt;/div&gt;&lt;br /&gt;The following are my impressions after the first lecture.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;How was the lecturer?&lt;/span&gt;&lt;br /&gt;Dr. &lt;a href="http://www.extension.harvard.edu/2009-10/about/faculty/jeff-parker.jsp"&gt;Jeff Parker&lt;/a&gt;'s lecture opened up to the following youtube clip:&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CQEaX3MiDow&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CQEaX3MiDow&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I think it was a tell tail sign that he has a sense of humor and that the class will not be dry. Throughout the lecture I was certainly entertained. Surprisingly the pace of the lecture was very fair and of the 100 slides he had in his PowerPoint, we only covered fifty-or-so.&lt;br /&gt;&lt;br /&gt;One thing that I noticed about the lecturer was that he seems very patient. A few students blurted out ridiculous questions, in-my-opinion not appropriate for a first lecture, and he took a deep breath and tried to answer them fairly. Personally, I don't know if I could ever be that calm. I understand that everyone learns in different ways but I wish people would respect those trying to educate them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Overall Impression&lt;/span&gt;&lt;br /&gt;It is hard for me to judge this class for the following reasons:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I love the Python programming language&lt;/li&gt;&lt;li&gt;This class uses Python&lt;/li&gt;&lt;li&gt;I am fascinated by what I'm learning&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Thus, I am currently geeked out and favorable towards the class. If you want a fair look at the class, you may have to stay tuned for a later blog post. I plan to review some of the required course books (I bought many) and workload.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4142535943793481163?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4142535943793481163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4142535943793481163' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4142535943793481163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4142535943793481163'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/02/csci-e-190-bioinformatics-algorithms.html' title='CSCI E-190 Bioinformatics Algorithms'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-1552558080714840705</id><published>2010-02-01T12:04:00.000-08:00</published><updated>2010-02-03T12:16:12.777-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocaml'/><category scheme='http://www.blogger.com/atom/ns#' term='spring 09'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><category scheme='http://www.blogger.com/atom/ns#' term='abstraction'/><title type='text'>CSCI E-250 Abstraction and Design [First Impressions]</title><content type='html'>&lt;a href="http://www.seas.harvard.edu/courses/cs51/cscie250/"&gt;CSCI E-250&lt;/a&gt; is the Harvard Extension School's offering of the &lt;a href="http://www.seas.harvard.edu/courses/cs51/"&gt;Harvard College's CS-51: Abstraction and Design&lt;/a&gt;. There are two reasons I signed up for the class: a really good teaching fellow and I am always interested in becoming a better programmer.&lt;br /&gt;&lt;br /&gt;The following are my impressions after the first lecture.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;How was the lecturer?&lt;/span&gt;&lt;br /&gt;The course is taught by Professor &lt;a href="http://www.eecs.harvard.edu/%7Egreg/"&gt;Greg Morrisett&lt;/a&gt;. He is not dull by any means, speaking with authority and passion (through his highly-validated opinions). For example, if you're a C++ programmer you could be offended by some of his opening remarks -- apparently, teaching the C++ would go against everything he believes in. Luckily, I avoid C and C++ like the plague so I think I like this guy already.&lt;br /&gt;&lt;br /&gt;One statement made me very interested in the class. He states:&lt;br /&gt;&lt;i&gt;"[The class will] change the way you think about programming in a deep way."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A few more times he mentions that there will be an emphasis on stretching of the mind. The stretching is probably related to learning the functional programming language &lt;a href="http://en.wikipedia.org/wiki/Objective_Caml"&gt;OCAML&lt;/a&gt;. And well, this is all exciting. I think I ought to look at programming in a different light.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Why OCAML?&lt;/span&gt;&lt;br /&gt;In &lt;a href="http://www.sdsu.edu/"&gt;undergrad&lt;/a&gt; I studied &lt;a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29"&gt;Haskell&lt;/a&gt;, an older functional programming language, and I thought it was the best language ever. However, after that particular class I never used it again. I don't remember a thing about it except I was probably the only person that got an A in the class. My peers highly despised the language. It should be fun learning the concepts again.&lt;br /&gt;&lt;br /&gt;In the Spring '09 edition of this course we'll be using OCAML and a few given reasons are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;Functional programming languages&lt;/a&gt; are &lt;b&gt;&lt;i&gt;better&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;FPLs are used on &lt;a href="http://www.janestreet.com/"&gt;Wall Street&lt;/a&gt; and for huge problems, see &lt;a href="http://en.wikipedia.org/wiki/Mapreduce"&gt;Map-Reduce&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;New FPLs are on the rise: &lt;a href="http://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29"&gt;F#&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29"&gt;scala &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Languages such as C++ are error prone no matter how skilled the programmer is&lt;/li&gt;&lt;li&gt;It uses one of the highest-performance compilers out there&lt;/li&gt;&lt;li&gt;It is mostly &lt;i&gt;pure&lt;/i&gt;; few side-effects &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;After our first look of OCAML&lt;/span&gt;&lt;br /&gt;The syntax of OCAML does not scare me a whole lot. I recently took a Ruby course so I have a little experience with the concept of a map function. However, a few simple things stood out:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Two Semi-colon symbols are used to end a statement or function&lt;/li&gt;&lt;li&gt;The underscore symbol matches any string&lt;/li&gt;&lt;li&gt;The &lt;b&gt;in&lt;/b&gt; keyword can be viewed as a way to define multiple &lt;b&gt;let&lt;/b&gt; statements within a block of code&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Around the time the professor posed the question about why nested comments were important. If you ever programmed with Java you would realize that you can really nest comments. What occurs in some languages is that the inner comment-close syntax will also close an outer comment.&lt;br /&gt;&lt;br /&gt;&lt;i style="color: #444444;"&gt;Update: I found a &lt;a href="http://www.ocaml-tutorial.org/"&gt;decent tutorial&lt;/a&gt; in written for the layman.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i style="color: #444444;"&gt;Update-2: Here's another site I've never seen before. The &lt;a href="http://www.codecodex.com/wiki/Category:Objective_Caml"&gt;code-codex&lt;/a&gt; has comparable code to many different languages and it seems like it could be a decent learning tool. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Overall Impression &lt;/span&gt;&lt;br /&gt;Simply put: it was pretty darn cool. Even this link was thrown within the slides:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_PruFmbvYRak/S2cy-ULF8sI/AAAAAAAAAZE/CSpRwLWCQQA/s1600-h/Picture+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_PruFmbvYRak/S2cy-ULF8sI/AAAAAAAAAZE/CSpRwLWCQQA/s320/Picture+1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.malevole.com/mv/misc/killerquiz/"&gt;http://www.malevole.com/mv/misc/killerquiz/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's a game that asks you determine whether you determine if a person, by profile picture, is a serial killer or programming language inventor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not a lot of Extension students are taking this course. I DO NOT know why. It seems like this class is meant for them (me). I leave you with this statement from the lecturer: The class is intended for practicing software people and will to help you "kick ass" in the work place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-1552558080714840705?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/1552558080714840705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=1552558080714840705' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1552558080714840705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1552558080714840705'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/02/csci-e-250-abstraction-and-design-first.html' title='CSCI E-250 Abstraction and Design [First Impressions]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/S2cy-ULF8sI/AAAAAAAAAZE/CSpRwLWCQQA/s72-c/Picture+1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5536692198554961708</id><published>2010-01-13T12:07:00.000-08:00</published><updated>2010-01-16T07:00:29.293-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-168 Web-based Software with Ruby and Ruby on Rails [REVIEW]</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Update:&lt;/b&gt; Since I've posted this, I received several e-mails about the course. One included a &lt;a href="http://donniedemuth.s3.amazonaws.com/CS168-Eval.pdf"&gt;course evaluation&lt;/a&gt; that may be relevant. I only included the comments of this eval and I am posting it anonymously for the person.&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;A fellow classmate reminded me to review the CSCI E-168 course. Here is my review! &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Lectures&lt;/span&gt;&lt;br /&gt;The lecturer, &lt;a href="http://plugh.org/"&gt;John Norman&lt;/a&gt;, is articulate and an incredible speaker. You can immediately tell he comes from an English-Literature background. His lessons are pleasant to listen to and you can literally hear the pride that puts into his work. I believe most people would enjoy his lectures.&lt;br /&gt;&lt;br /&gt;The Ruby portion of the course was amazing. I felt that this was a language I could work with and the Ruby-only assignments were really fun.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Sections&lt;/span&gt;&lt;br /&gt;Unfortunately, I had a scheduling conflict and could not stay for section most of the time. Since the class had over 70 students, there were &lt;strike&gt;two&lt;/strike&gt; &lt;i&gt;three&lt;/i&gt; different sections and YMMV.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update 1-16-10: &lt;br /&gt;&lt;/i&gt;Okay so there seems to be some misunderstanding whether or not I liked section. I was questioned about it in several private e-mails. In my &lt;a href="http://ddemuth.blogspot.com/search/label/ruby%20on%20rails"&gt;past posts&lt;/a&gt;, I kind of gushed over class and section.&lt;br /&gt;&lt;br /&gt;Of the three classes was taking it was the least useful of the group. However, it is worth mentioning that I did read ahead and finish many assignments earlyDid I need to go to section? Probably not. But I thought it was fun, and funny at times. For the most part I sat back and kept my mouth shut.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Workload&lt;/span&gt;&lt;br /&gt;I thought the assignments were moderately difficult. None were easy and none were outrageous. If you devote a good ten hours or so, you will be able to finish any assignment. However, a good portion of the assignment grades are based on how &lt;b&gt;rubyish&lt;/b&gt; your code is. You will get slapped on the wrist for not doing something the &lt;i&gt;&lt;b&gt;ruby&lt;/b&gt;&lt;/i&gt; way. Keep that in mind and be sure to comment and document everything.&lt;br /&gt;&lt;br /&gt;One thing that made me sour was trying to figure out what to do for the assignment. The documentation is &lt;a href="http://e168f09.plugh.org/assignments/assignment-2-classes-and-methods/"&gt;wild&lt;/a&gt; and it's not clear what to do. I really don't have any tips for this class except for re-iterating that you have to do things the &lt;b&gt;ruby-and-rails&lt;/b&gt; way. The following link is my final assignment submission for Fall 2009: &lt;span style="font-size: small;"&gt;&lt;a href="http://donniedemuth.s3.amazonaws.com/e168-fp-demuth-donald-1.0.004.zip"&gt;E-168 Final Submission&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;My project was an attempt at a discussion board system. You may be able to review the code to determine what you can or should not do.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PruFmbvYRak/S084diGCWoI/AAAAAAAAAY8/zP5PrKPMIbg/s1600-h/Screen+shot+2009-12-17+at+12.57.05+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PruFmbvYRak/S084diGCWoI/AAAAAAAAAY8/zP5PrKPMIbg/s400/Screen+shot+2009-12-17+at+12.57.05+PM.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Final Thought&lt;/span&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;* Warning: Any negativity below is primarily Rails (the framework) related and not directly course related&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;CSCI E-168 reminded me why I am &lt;span style="font-size: small;"&gt;not&lt;/span&gt; a Ruby-on-Rails guy. In a nutshell, the course was a lot like going to Church. &lt;i&gt;It's all interesting but I really don't know if I can buy into this...&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Basically, there was a lot of cool things to learn but I'm not sure I would add it to my programming utility belt. As a career introvert the Rails community hits me in the wrong spot. There are far too happy go-lucky and bubble-gummy. It's the pop-music of web frameworks. A guy like me wouldn't fit in. What's wrong with that?!&lt;br /&gt;&lt;br /&gt;This is an exaggeration but it also feels like a cult... An exclusive cult. Not like a Unixy-nerdy cult. It's a trendy iPody cult. &lt;br /&gt;&lt;br /&gt;One gripe I had about the class is the guest panel at the end of the semester. Some incredible Ruby developers showed up: Dan Chak, author Dan Croak, and the owner of &lt;a href="http://ravelry.com/"&gt;ravelry.com&lt;/a&gt;. They were invited to share their experience with the class. That sounds exciting right?&lt;br /&gt;&lt;br /&gt;But from my point of view, I felt that the developers were not happy to be speaking in front of our class. Their mannerisms showed that &lt;b&gt;(a)&lt;/b&gt; they were not getting paid and&lt;b&gt; (b)&lt;/b&gt; why am I here? Moreover, the panel discussion was dominated by a previous Teaching Assistant who had very little to add; except for cutesy sarcastic jokes. When this person spoke, I found entertainment by watching the expressions on the two Dan's faces.&lt;br /&gt;&lt;br /&gt;I would recommend this class to someone that wants to work with Rails. Throughout the semester, I received many Rails-related calls from recruiters. You may experience the same interest from the industry.&lt;br /&gt;&lt;br /&gt;Additionally, this class changed my opinions about Ruby. That language is pretty darn cool and the one-liner assignment is one of my favorite assignments of all time. In 2010, I heard that Harvard Extension will be offering a Programming Ruby course and I would put my personal stamp of approval on it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5536692198554961708?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5536692198554961708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5536692198554961708' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5536692198554961708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5536692198554961708'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/01/csci-e-168-web-based-software-with-ruby.html' title='CSCI E-168 Web-based Software with Ruby and Ruby on Rails [REVIEW]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/S084diGCWoI/AAAAAAAAAY8/zP5PrKPMIbg/s72-c/Screen+shot+2009-12-17+at+12.57.05+PM.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6121751846422102612</id><published>2010-01-02T19:30:00.000-08:00</published><updated>2010-01-05T14:32:15.189-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI-E 207 Formal Systems and Introduction to Computational Theory [REVIEW]</title><content type='html'>This course made me experience Stockholm Syndrome. It held me captive and consume every waking moment of my life. For that, it became &lt;i&gt;everything&lt;/i&gt; to me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Lectures&lt;/span&gt;&lt;br /&gt;It was difficult to find the time to watch or attend the lectures. When I took this course I was: simultaneously enrolled in three classes total, searching for full-time employment, and juggling a consulting gig. &lt;b style="color: purple;"&gt;BAD IDEA!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The homework was so difficult that by the time you finish one... A brand new and much harder one is already posted online. Sure, lecture was important to understanding the material but it only covered &lt;span style="color: red; font-size: x-large;"&gt;1%&lt;/span&gt; of what you'll have to learn in order to complete the Problem Sets. &lt;span style="color: #666666;"&gt;Well, it just felt that way!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, the lecturer could only cover so much in an hour and a half. Lecture provided an overview but section provided what you needed to know to get started on your homework.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Sections&lt;/span&gt;&lt;br /&gt;Watch or attend section, &lt;strike&gt;or else&lt;/strike&gt;. If you don't, you'll do poorly. I guarantee it! Brian was our Teaching Fellow and he was the best TF you could ever ask for. He never gave us the answers -- but I am certain he could teach chimps poetry. If you have a TF half as good as him you're in good shape. Often I felt section covered the material very clearly, much more than the book or lecture.&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;br /&gt;Workload&lt;/span&gt;&lt;br /&gt;You'll have problem sets almost every week and they'll take about 20 hours or more to complete. This class seemed to be a "re-take" for others but this was the first time I covered this material. If you're taking this as a refresher, then sure, I guess it won't be that hard. But for me, it made me cry myself to sleep.&lt;br /&gt;&lt;br /&gt;Besides the weekly homework, you'll have a midterm and a final. I studied diligently for them so I did pretty darn well. Both were difficult -- BUT not as difficult as I thought they would be.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_PruFmbvYRak/S0O4FxNXADI/AAAAAAAAAYs/DQWrvxmM88w/s1600-h/Screen+shot+2010-01-05+at+5.06.59+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_PruFmbvYRak/S0O4FxNXADI/AAAAAAAAAYs/DQWrvxmM88w/s400/Screen+shot+2010-01-05+at+5.06.59+PM.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You will also need to spend a week or two learning &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt; and its markup language. LaTeX is intimidating at first and it does take some time to install. To get my MacBook set up correctly it took me over three hours. Most of the time was due to download a large gigabyte file. I believe there's some &lt;b&gt;&lt;i&gt;dmg&lt;/i&gt;&lt;/b&gt; you can download to set LaTeX all up for you. The markup language isn't too difficult but it does take a while to get used to as it's not intuitive (at first). On a MacBook, I found &lt;a href="http://www.uoregon.edu/%7Ekoch/texshop/"&gt;TexShop&lt;/a&gt; to my editor of choice.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PruFmbvYRak/S0O5yckDkEI/AAAAAAAAAY0/2DsNq13xklc/s1600-h/Screen+shot+2010-01-05+at+5.11.49+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PruFmbvYRak/S0O5yckDkEI/AAAAAAAAAY0/2DsNq13xklc/s400/Screen+shot+2010-01-05+at+5.11.49+PM.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I recommend anyone taking this class to download a tool named &lt;a href="http://www.cs.duke.edu/csed/jflap/"&gt;JFlap&lt;/a&gt; to help you with 2 or 3 of the Problem Sets. Trust me, JFlap is necessary and will help you test your answers. Drawing automaton or construct grammars is a piece a cake. Testing it is just as easy as your can run multiple input strings against your object (as shown above).&lt;br /&gt;&lt;br /&gt;The assigned textbook is &lt;span style="font-weight: bold;"&gt;Introduction to the Theory of Computation&lt;/span&gt; (Sipser) and it's good but terse. I used the first edition because it was whole lot cheaper and I didn't have any problems. For the homework, you'll probably need more help if you can't figure things out on your own. A few books that helped me were:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_PruFmbvYRak/S0O3WHd5hWI/AAAAAAAAAYc/yI2uXq4arPk/s1600-h/Screen+shot+2010-01-05+at+5.02.37+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_PruFmbvYRak/S0O3WHd5hWI/AAAAAAAAAYc/yI2uXq4arPk/s400/Screen+shot+2010-01-05+at+5.02.37+PM.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to Prove it&lt;/span&gt; (Vellemen): This book definitely helps for the first Problem Set and will help you write proofs for the rest of the semester. I came back to this book a few times to remind myself how to solve later problems in the course. It costs about $20.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/How-Prove-Structured-Daniel-Velleman/dp/0521675995/ref=sr_1_8?ie=UTF8&amp;amp;s=books&amp;amp;qid=1262490577&amp;amp;sr=1-8"&gt;Link to How to Prove it on Amazon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_PruFmbvYRak/S0O3eXgnrkI/AAAAAAAAAYk/JljSgJdbYHY/s1600-h/Screen+shot+2010-01-05+at+5.03.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_PruFmbvYRak/S0O3eXgnrkI/AAAAAAAAAYk/JljSgJdbYHY/s320/Screen+shot+2010-01-05+at+5.03.20+PM.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Introduction to Automata Theory, Languages, and Computation&lt;/span&gt; (Hopcroft, et al): I don't know why this book doesn't have a higher rating on Amazon. Out of all of the books I've used and looked at, this was by far the best for this class. I didn't find this until the end of the class and read it from cover to cover. If I had it early, many of the Problem Sets would have made so much more sense... SAD!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Introduction-Automata-Theory-Languages-Computation/dp/0321462254/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1262490977&amp;amp;sr=1-1"&gt;Link to Automata Theory on Amazon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Final Thoughts&lt;br /&gt;&lt;/span&gt;The class was a roller coaster ride: I loved it, hated it, loved it, hated it, and so on. I ended up getting an A-minus but I know I earned it. If you want the same, work hard and treat this class like a full-time job. I'd take it again just to get that &lt;b&gt;A&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6121751846422102612?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6121751846422102612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6121751846422102612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6121751846422102612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6121751846422102612'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/01/csci-e-207-formal-systems-and.html' title='CSCI-E 207 Formal Systems and Introduction to Computational Theory [REVIEW]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/S0O4FxNXADI/AAAAAAAAAYs/DQWrvxmM88w/s72-c/Screen+shot+2010-01-05+at+5.06.59+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3098222011668907307</id><published>2010-01-02T18:12:00.000-08:00</published><updated>2010-01-02T19:11:57.010-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='communication protocols'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI-E 131b  Communication Protocols and Internet Architectures [REVIEW]</title><content type='html'>Now that I have completed the class I ought to tell you all about what I thought.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Lectures&lt;/span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;&lt;/span&gt;As many people will tell you, Leonard Evenchik is an excellent lecturer. I enjoyed his talks and I never felt "lost" even when I didn't understand the material. He's a great guy and although I did not have much one-on-one time with him I'm sure he would be fun to talk to.&lt;br /&gt;&lt;br /&gt;If you can't attend class you can watch his recorded lectures online on the course website. I was pleasantly surprised to find a quality recorded product. The lectures will stream at various sizes and include the power point slides he is covering. If you're lucky enough to take his class when it's held at 1 Story Street, you'll have the better product to watch (many more camera angles).&lt;br /&gt;&lt;br /&gt;This class is recorded and held live in the Fall and the Summer. The videos are replayed for those taking it in the Spring. Apparently the Summer class is a little experimental where the staff tries to introduce new technology.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Sections&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;When I took the course "Joe" was my TA and only 5-7 students showed up to section each week. Joe is a really good guy who had a sense of humor and encourage everyone to talk and share our newbie questions (the stuff covered in the class does seem silly for us not to know). I spoke a lot and I was surprised that the other students had the same questions that I had. An added benefit was Joe really helped us understand the homework problems and past lectures.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Workload&lt;br /&gt;&lt;/span&gt; Okay, so if you're thinking of taking this class I bet you just want to know how hard is it? For me it was not difficult. But I did find the material interesting and the homework fun. Each homework might take 5 to 10 hours to complete and there are 5 of them.&lt;br /&gt;&lt;br /&gt;You'll spend a few hours reading each week and most of it will be online material and relate to the homework. The assigned textbook  &lt;span style="font-weight: bold;"&gt;Computer Networks, A Systems Approach &lt;/span&gt;(Peterson and Davie) is good but seems to lose importance during the middle chunk of the course.&lt;br /&gt;&lt;br /&gt;I found that the book &lt;span style="font-weight: bold;"&gt;TCP/IP Illustrated, Volume 1: The Protocols&lt;/span&gt; (Stevens) covered that section better and is a better supplement for many of the homework problems. The problem with the later book is that it does not cover many of the modern technologies related to VOIP. Hint: Professor Evenchik is a VOIP expert.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/S0AK6NzBZcI/AAAAAAAAAYU/rkF1iiVduT8/s1600-h/0201633469.jpg"&gt;&lt;img style="cursor: pointer; width: 332px; height: 400px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/S0AK6NzBZcI/AAAAAAAAAYU/rkF1iiVduT8/s400/0201633469.jpg" alt="" id="BLOGGER_PHOTO_ID_5422345946606429634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, you can buy that book on Amazon for $50 new, used for $20.&lt;br /&gt;&lt;a href="http://www.amazon.com/TCP-IP-Illustrated-1-Protocols/dp/0201633469"&gt;http://www.amazon.com/TCP-IP-Illustrated-1-Protocols/dp/0201633469&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Final Thoughts&lt;/span&gt;&lt;br /&gt;I enjoyed this class and I would recommend it to anyone interested in the IP stack and networking. It is ridiculous how much better I understand the Internet. If you're already comfortable with TCP/UDP/IP and all those other three-letter-acronyms then this class could be extremely easy. But for a guy like me, with no in-depth networking experience, I found this to be the most useful class I have ever taken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3098222011668907307?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3098222011668907307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3098222011668907307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3098222011668907307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3098222011668907307'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2010/01/csci-e-131b-communication-protocols-and.html' title='CSCI-E 131b  Communication Protocols and Internet Architectures [REVIEW]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/S0AK6NzBZcI/AAAAAAAAAYU/rkF1iiVduT8/s72-c/0201633469.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5217590299478232107</id><published>2009-12-21T13:17:00.000-08:00</published><updated>2010-01-02T18:12:35.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computer networks'/><category scheme='http://www.blogger.com/atom/ns#' term='communication protocols'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI-E 131b Final Review</title><content type='html'>&lt;style&gt; &lt;!--  /* Font Definitions */ @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:3 0 0 0 1 0;} @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:3 0 0 0 1 0;}  /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Cambria;  mso-fareast-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:"Times New Roman";} h1  {mso-style-link:"Heading 1 Char";  mso-style-next:Normal;  margin-top:24.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:1;  font-size:16.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#345A8A;  mso-font-kerning:0pt;  mso-bidi-font-weight:bold;} h2  {mso-style-link:"Heading 2 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:2;  font-size:13.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#4F81BD;  mso-bidi-font-weight:bold;} h3  {mso-style-link:"Heading 3 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:3;  font-size:12.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#4F81BD;  mso-bidi-font-weight:bold;} a:link, span.MsoHyperlink  {color:blue;  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {color:blue;  text-decoration:underline;  text-underline:single;} span.Heading1Char  {mso-style-name:"Heading 1 Char";  mso-style-locked:yes;  mso-style-link:"Heading 1";  mso-ansi-font-size:16.0pt;  mso-bidi-font-size:16.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#345A8A;  font-weight:bold;} span.Heading2Char  {mso-style-name:"Heading 2 Char";  mso-style-locked:yes;  mso-style-link:"Heading 2";  mso-ansi-font-size:13.0pt;  mso-bidi-font-size:13.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#4F81BD;  font-weight:bold;} span.Heading3Char  {mso-style-name:"Heading 3 Char";  mso-style-locked:yes;  mso-style-link:"Heading 3";  mso-ansi-font-size:12.0pt;  mso-bidi-font-size:12.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-hansi-font-family:Calibri;  color:#4F81BD;  font-weight:bold;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */ @list l0  {mso-list-id:80224256;  mso-list-template-ids:-580883890;} @list l0:level1  {mso-level-number-format:bullet;  mso-level-text:;  mso-level-tab-stop:.5in;  mso-level-number-position:left;  text-indent:-.25in;  mso-ansi-font-size:10.0pt;  font-family:Symbol;} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt; &lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */ table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;!--StartFragment--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;Update 1/2/10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;The Final didn't seem as difficult as I thought it would be -- I did study a whole lot and attend every section though! If you're taking this course in the future, I recommend having a good grasp on ALL concepts. Easier said than done right? But guess what, your brain will have a lot of extra room if you don't memorize the structure of specific packets and other things of that detail.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*&lt;/span&gt;&lt;span style="font-size:85%;"&gt;~~~*~~~&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Note: I formed this while I was studying for the course’s final and I cannot vouch that it is correct in any way. Much of it comes from our course’s textbook, Wikipedia, lecture notes, and my own random knowledge.&lt;/span&gt;  &lt;h1&gt;Terms&lt;/h1&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;These are only the terms that I think are important.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;802.3: The IEEE Ethernet standard used today.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;802.11: The Wireless networking standard used today.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;ACK: An abbreviation for acknowledgment.&lt;span style=""&gt;  &lt;/span&gt;ACKs are usually sent to tell the sender the data or packet transfer was successful.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;AES: Advanced Encryption Standard. A Shared-Key cipher that supersedes DES.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;ARP: Address Resolution Protocol. Used to translate IP addresses into MAC addresses.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Bandwidth: The amount of data per time that can be transmitted over connection. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Broadcast: A way of sending packets to every host on a network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;CA: Certificate Authority. This is an entity that verifies and signs certificates to ensure the validity of a public key and name (domain).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Certificate: A digitally signed (hashed) document used to distribute public keys.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Checksum: A computation over some data that can take place before and after transmission. If the checksum matches, the before and after, then the data was transmitted in whole. Used for error detection.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;CIDR: Classless Inter-Domain Routing. Used for sub-netting, allowing many more sizes of networks compared to typical Class A, B, C subnets.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Congestion: The occurrence packets are discarded when too many contend for a single resource.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Congestion Control: The avoidance of congestion in a network. We’ve discussed the Slow Start algorithm of TCP in class.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Connection-Oriented: A protocol where some initialization must occur between the sender and receiver before data may be transferred.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Connectionless: A protocol where data can be sent without any prior connection. Also known as a Datagram service.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;CRC: A strong checksum that exists in many packet headers.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;CSMA/CD: Carrier Sense Multiple Access with Collision Detection. This is a feature of Ethernet. It can tell when data being sent over the network as multiple nodes can be attached to it. In addition it is aware when more than one entity transmits data at a time.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Datagram: Analogous to connectionless. This is a transmission unit that contains the necessary information to deliver to its destination.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Demultiplexing: The counterpart to multiplexing, where many different “things” can share another “thing.” As in the case of protocols, IP uses the Protocol Number field to determine whether it is using TCP or UDP. And TCP/UDP uses the Port Number to allow many Layer-5 protocols to use it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;DES: Data Encryption Standard. This is a Shared-Key algorithm that uses a 64-bit shared key.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;DHCP: Dynamic Host Configuration Protocol. A protocol used by a host to determine it’s own IP on a network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;DNS: Domain Name System. The naming system used by the Internet to resolve hostnames, implemented through a hierarchy of name-servers. Common DNS records include:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• A -specifies 32 bit IPv4 address &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• AAAA –IPv6 address record &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• MX -mail exchange record &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• NS -specifies authoritative name server for a domain &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• CNAME -canonical name, provides alias functionality &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• HINFO -specifies limited host information &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• SRV –identifies a specific service &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• NAPTR&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Encapsulation: The process of taking a higher level protocol and placing it within the payload of a lower level protocol.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Ethernet: A data layer protocol that uses CSMA/CD. The original Ethernet had various hosts that used vampire clamps to connect to a large wire, “the ether.”&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Firewall: A router that follows some security policy to filter packets.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Flow Control: Used to prevent a sender from overloading a receiver. We most commonly see Sliding Window as a mechanism in HLDC and TCP.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Forwarding: Routers operate on the store-and-forward principal. Packets are first stored in a buffer and then sent to its destination.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Forwarding Table: Maintained by routers to help decide where to forward packets.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Fragmentation/Assembly: Packets may be split into small sizes by a router if they are too large for a network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Frame: A (link-layer) name for a packet sent between two links.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;FTP: File Transfer Protocol. A standard TCP based protocol used for transferring files.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;H.323: A protocol used for Internet telephony. Assumes that the end devices are “simple” and provides more control and configuration over SIP.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;ICMP: Internet Control Message Protocol. Allows reporting based on the IP datagram, as IP is connectionless and occasionally some response can be helpful to certain applications/protocols.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;IMAP: Internet Message Access Protocol. Allows a user to access their mail without downloading it to their machine first.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;IPSEC: IP Security. This is an architecture used to provide authentication and security to the IP layer of the Internet. Transport (encrypt only the data) and Tunnel (encrypt all, assigning a new header) modes are provided.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Jitter: Timing variations in network latency.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;MAC: Media Access Control. We see this as a way to share single device with a common network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;MD5: Message Digest version 5. This is a Digital Signature/Hashing algorithm.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;MIME: Multipurpose Internet Mail Extensions. Email was original text-based and MIME provides a way to convert and specify binary data to text.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;MTU: Maximum Transmission Unit. The largest sized packet that can be sent on a given network.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Multicast: A special form of a broadcast to send data to a specified group of nodes.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Multiplexing: A way to share a single resource. Both UDP and TCP use the IP protocol to send data over the net. Examples:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;FDM – Frequency Division Multiplexing – A different frequency for each user.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;TDM – Time Division Multiplexing – Time intervals for each user or Statistical by a queue.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;NAT: Network Address Translation. Typically implemented by routers to assign outgoing traffic from a local address some known public address so it may access the Internet. NAT may use port numbers where multiple local hosts share a single public address.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;NFS: Network File System. A protocol to make file access over a network appear transparent.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;OSPF: Open Shortest Path First. Used by routers to construct a network topology and be aware of changes noticed by other routers.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Packet Switching: Is the term used to describe how data is sent through the network. It uses store-and-forward and implies statistical multiplexing.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Proxy: An intermediate machine between a sender and receiver which can intercept messages and provide some service.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Public Key Encryption: An encryption algorithm where users have a private and public key used to encrypt and decrypt messages, versus some shared key. The private key can encrypt a message that only the public key can decrypt.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;QoS: Quality of Service. An implementation of QoS can allow a network to make guarantees on packet delivery. Certain packets may be marked for expedited delivery.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;RIP: Routing Information Protocol. Each router only aware of its networks and forwards this information to other connected routers.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;RSA: A public-key encryption algorithm.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;RTCP: Real-Time Transport Control Protocol. RTCP provides out-of-band statistics and control information for an RTP flow.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;RTP: Real-Time Transport Protocol. RTP is an end-to-end protocol used to send data with real-time constraints. This is unreliable but sequenced. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;RTT: Round-Trip Time. This is simply the latency to reach the destination and back.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;SDP: Session Description Protocol. This is a format for describing streaming media initialization parameters in an ASCII string. SDP is intended for describing multimedia communication sessions for the purposes of session announcement, session invitation, and parameter negotiation. SDP does not deliver media itself but is used for negotiation between end points of media type, format, and all associated properties. SDP is designed to be extensible to support new media types and formats.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;SIP: Session Initiation Protocol. This is an application layer protocol used in multimedia applications. It determines the correct device with which to communicate to reach a user, determines is the user is willing or able to partake in communication, determines the choice of media and coding scheme to use, and establishes the session.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Sliding Window: Sliding Window Protocols are a feature of packet-based data transmission protocols. They are used in the data link layer as well as in TCP. They are used to keep a record of the frame sequences sent, and their respective acknowledgements received, by both the users. Their additional feature over a simpler protocol is that can allow multiple packets to be "in transmission" simultaneously, rather than waiting for each packet to be acknowledged before sending the next.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Slow Start: Slow-start is part of the congestion control strategy used by TCP, the data transmission protocol used by many Internet applications. Slow-start is used in conjunction with other algorithms to avoid sending more data than the network is capable of transmitting, that is, network congestion.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;SMTP: Simple Mail Transfer Protocol. This is an Internet standard for electronic mail transmission across networks. For receiving messages, client applications usually use either the Post Office Protocol (POP) or the Internet Message Access Protocol (IMAP) to access their mail accounts on a mail server.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Sub-netting:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• Class A, networks 1 -126, /8 prefix&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• Class B, networks 128 -191, /16 prefix&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• Class C, networks 192 -223, /24 prefix &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Private IP Addresses &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• 10/8 10.0.0.0 to 10.255.255.255 &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• 172.16/12 172.16.0.0 to 172.31.255.255 &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• 169.254/16 169.254.0.0 to 169.254.255.255 &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• 192.168/16 192.168.0.0 to 192.168.255.255&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;TCP: Transmission Control Protocol. This is a connection-oriented and sequenced protocol that ensures the delivery of data. Some well known TCP port numbers include:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;20,21&lt;span style=""&gt;            &lt;/span&gt;FTP&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;22&lt;span style=""&gt;            &lt;/span&gt;SSH&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;23&lt;span style=""&gt;            &lt;/span&gt;Telnet&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;25&lt;span style=""&gt;            &lt;/span&gt;SMTP&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;80&lt;span style=""&gt;            &lt;/span&gt;HTTP&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;110&lt;span style=""&gt;            &lt;/span&gt;POP3&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;1720&lt;span style=""&gt;            &lt;/span&gt;H.323&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;5060&lt;span style=""&gt;            &lt;/span&gt;SIP&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;UDP: User Datagram Protocol. This is a connection-less and un-sequenced protocol.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Virtual Circuit: Provided by connection-oriented networks where a connection is initialized, a virtual circuit is formed, and then data is sent.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;VPN: Virtual Private Network. Provide some network tunneling between nodes and forms a virtual circuit. It has two modes, Transport and Tunnel.&lt;span style=""&gt;  &lt;/span&gt;Transport – only the data/payload is encrypted. Tunnel – the whole IP packet (data and header) is encrypted, into a new IP packet with a new header.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;SP3&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;SP3 is a framework for describing Protocols that we use solely in class. In this sections, I’ll cover some of the Protocols I think are important using SP3.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;SP3: Guidelines&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – What service is provided by this technology? For example: is data reliable, sequenced, or unreliable (connectionless), and what combinations of these features exist?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – What does this technology attempt to solve? For example: addressing, multiplexing, sequencing, error detection/correction, flow control, security, fragmentation and assembly.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packets&lt;/b&gt; – Describe the (header) fields of the packet.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – What are the procedures to use this technology? For example: connection establishment, capability agreement, and data transfer.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;PPP: Point to Point Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Much of this is from lecture notes:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – PPP provides a connection-oriented service and, like HDLC, gives the physical layer the appearance of being an error-free link.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – To deliver the promised level of service, PPP is capable of encapsulating multiple-protocol datagrams, using a link-control-protocol for establishing, configuring, and testing the data-link connections, and using a family of Network Control Protocols (NCPs) for establishing and configuring different network-layer protocols. This provides framing, encapsulation, authentication, among others.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – PPP frames look similar to the ISO HDLC standard. The fields contained are: flag, address, control, protocol, information, FCS, and flag. Each frame begins and ends with a flag field set to 0x7E. The address field is always set to 0xFF and the control byte begins at 0x03. The protocol field declares the type of data/payload is in the information field. The FCS is the frame check sequence used to detect errors in the frame.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – PPP, a reliable link layer protocol implements the following procedures: link initialization, link data transfer, link termination, and error handling.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;HDLC&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – HLDC provides a reliable Data Link layer service and as such, it gives the physical layer the appearance of being an error-free link.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – To deliver the promised level of service, a reliable Data Link level protocol such as HDLC must handle the following problems: Synchronization and framing, data transparency, data transfer, addressing, flow control, error detection, and error correction.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; –&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – HDLC, a reliable link layer protocol implements the following procedures: link initialization, link data transfer, link disconnect, and link error handling.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;802.3&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Much of this is from lecture notes:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; - 802.3 is an unreliable data link layer local protocol, where each device on a network may transmit data at it’s own discretion. 802.3 uses a logical bus configuration, and is well suited to a network with a light to medium load.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – 802.3 provides an unreliable level service to the Network layer with no acknowledgements or traffic prioritization. Error detection but not correction is provided with a checksum mechanism.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Preamble (7), Start of Frame Delimiter (1), Destination Address (6), Source Address (6), Length Field (2), Data (0-1500), Pad (0-46), Checksum/CRC (4)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – When a node wants to transmit data in 802.3, it listens to the physical cable. If the cable is busy, it waits until it is available and then tries transmitting again. If there is a collision during transmission, both nodes which were sending data immediately stop transmitting and wait a random amount of time before attempting to retransmit.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;Ethernet&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;The Ethernet is very similar to its successor, 802.3, but differs in the packet definition. The Protocol Type of Ethernet was replaced with the Length Field. The Protocol Type can still exist in 802.3 as it is commonly the first bytes in the body.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Preamble (7), Start of Frame Delimiter (1), Destination Address (6), Source Address (6), Protocol Type (2), Data (0-1500), Pad (0-46), Checksum/CRC (4)&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;Frame Relay protocol &lt;/h2&gt;  &lt;p class="MsoNormal"&gt;The following is from lecture notes:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; - Frame Relay is a simple data link level protocol that provides a method to transfer data (frames) very quickly from one network point to another network point(s).&lt;span style=""&gt;  &lt;/span&gt;It provides an unreliable service and it is used in networks where the physical layer communications lines are reliable and fast. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; - The Frame Relay protocol is unreliable: it provides error detection but not error correction.&lt;span style=""&gt;  &lt;/span&gt;It has minimal overhead, provides the address functionality that is required to deliver a frame via the use of a circuit ID called a DLCI, and it provides no flow control.&lt;span style=""&gt;  &lt;/span&gt;There is very limited congestion control. When problems arise because such techniques are not implemented, frames that cannot be delivered are discarded.&lt;span style=""&gt;  &lt;/span&gt;As a result of this lack of reliability, upper layer protocols must provide any necessary reliability. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt;- A Frame Relay packet begins and ends with a flag character (7E hex).&lt;span style=""&gt;  &lt;/span&gt;After the Beginning Flag character, the next bytes contain Addressing information used to transfer the packet across the link.&lt;span style=""&gt;  &lt;/span&gt;Specifically, these bytes indicate which virtual circuit (DLCI) to use to route the packet and if the packet is eligible for being discarded (DE bit).&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are also bits to indicate whether or not the network is becoming congested&lt;span style=""&gt;  &lt;/span&gt;(the Forward Explicit Congestion Notification bit - FECN, and the Backward Explicit Congestion Notification bit –BECN.)&lt;span style=""&gt;  &lt;/span&gt;The congestion bits are provided for the benefit of the application (i.e., so it may take actions to prevent congestion problems from occurring.)&lt;span style=""&gt;  &lt;/span&gt;The last two bytes of the packet (prior to the Ending Flag character) contain a Cyclic Redundancy Check (CRC).&lt;span style=""&gt;  &lt;/span&gt;The remainder of the packet consists of the payload data. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; - There are very few procedural aspects to the Frame Relay protocol.&lt;span style=""&gt;  &lt;/span&gt;Packets are simply routed in the network via the use of DLCIs (Data Link Connection Identifiers), with each DLCI being configured to reference a specific destination system.&lt;span style=""&gt;  &lt;/span&gt;Procedures are defined for congestion notification via the use of BECN and FECN bits.&lt;span style=""&gt;  &lt;/span&gt;Any packet delivery problems have to be dealt with by upper layer protocols or user applications (which are implemented in the Customer Premises Equipment - CPE.)&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Internet Protocol&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – IP is a connectionless, unreliable Network/Internet layer protocol.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – IP provides an unreliable service to the Transport layer with no acknowledgements or guarantee of delivery. It does so by using the connectionless datagram service. It relies on the Transport layer (UDP/TCP) to define the reliability of the data traffic, sequencing, and any error correction. IP may loose packets and deliver them out of order. Thus, it does not perform sequencing, flow control, and has little use of the IP header checksum field. IP does however have options, addressing, and the capability for fragmentation and reassembly.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Version, IHL, TOS/IP Precedence, Total Length, Identification, Fragment Offset, Time to Live, Protocol, Header Checksum, Source Address, Destination Address, Options.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – IP can fragment packets that are too large for the underlying network.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;IPSEC&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Authenticates and encrypts each IP packet of the data stream. Protects data flow between a pair of hosts.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – The AH Operates on top of IP using IP protocol number 51.&lt;span style=""&gt;  &lt;/span&gt;Next Header, Payload Length, RESERVED, Security Parameters Index, Sequence Number, Authentication Data (necessary data to authenticate the packet).&lt;span style=""&gt;  &lt;/span&gt;ESP is also a member. Security Parameters Index, Sequence Number, Payload Data, Padding, Authentication Data.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; - &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Internet Key Exchange (IKE) – sets up a security association by handling negotiation of protocols and algorithms and generates the encryption and authentication keys to be used&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Authentication Header (AH) – Provides connectionless integrity and data origin authentication for IP datagrams to provide protection against replay attacks&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Encapsulating Security Payloud (ESP) – provide confidentiality, data origin authentication, connectionless integrity&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;ARP: Address Resolution Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – ARP provides automatic mapping from IP address to MAC address.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – Due to routing, it becomes necessary to find the physical interface address when given an IP address. This is because physical addresses only have relevance within local networks and an IP allows packets to be sent across networks. ARP is simply a means of asking for ownership of an IP address. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – The ARP packet has the following fields: Ethernet destination address, Ethernet source address, frame type, hardware type, protocol type, hardware size, protocol size, operation type, sender Ethernet address, sender IP address, target Ethernet address, and target IP address. Notably, the operation type describes whether the packet is an ARP request, ARP reply, RARP request, or RARP reply. The Ethernet destination address, in an ARP request, is the broadcast address.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – To translate a Network Layer IP address to a Link Layer MAC address, ARP will first look at it’s ARP cache to determine if a translation already exists. Of course, this only takes place if the destination address belongs to the network of the current device. The ARP cache entries typically have some expiration time and thus if an entry is not found, ARP will broadcast an ARP request. This requests asks “if you have this IP address, please respond.” When the owner of the IP address receives the ARP request, it will respond with an ARP reply. Upon receiving the ARP reply, the data can then be added to the ARP cache and a Link Layer frame can be added with the correct physical destination address.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;ICMP: Internet Control Messaging Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – ICMP, supports IP at the Network layer. It helps communicate error and informational messages, whereas IP is relatively simple in nature and does not.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – Since IP is unreliable, connectionless, and un-acknowledged; ICMP was created to provide error reporting, diagnostics, and testing. Though, ICMP packets can be lost and discarded themselves.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – ICMP messages transmitted within IP datagram with the following fields: type, code, checksum, and the contents. Type determines what kind of ICMP message it is and code helps specify the type even further. The checksum is calculated from the ICMP header and data. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – When a packet is inspected at the Network layer, it is possible that some condition may be acted upon and an ICMP message to be generated. This ICMP packet will be sent back to the sender. In a typical case, when a router receives an IP packet with a Time-to-live at zero, it will drop the packet and send back an ICMP message reporting “Time Exceeded.”&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;UDP: User Data Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – UDP is an unreliable Transport layer protocol based similarly to the connectionless, unreliable IP protocol. It allows applications to access the IP with no bells and whistles.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – UDP provides a datagram-oriented Transport layer protocol. UDP provides no reliability, like IP. There is no guarantee that the datagrams will reach the destination. Thus, it is connectionless and data can be lost and transmission is unreliable. Also, is no flow control, congestion control, and segmentation. That said, UDP provides the capability for multiplexing and de-multiplexing through the use of port numbers.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Source port number, destination port number, UDP length, UDP checksum, and data. The port numbers are used for multiplexing and de-multiplexing; allowing many applications (and same applications) to use IP for network communication. For the checksum, a pseudo-header is generated with extra information for the calculation. These miscellaneous fields are source IP address, destination IP address, IP protocol field, and UDP length.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – Like IP, no prior connection is needed. Packets are just sent out with no need for acknowledgement. Thus no connection is needed to be initiated or disconnected. No error handling is used either.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;TCP: Transmission Control Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – TCP is a reliable Transport layer protocol and provides transport-layer addressing to allow multiple software applications to simultaneously use a single IP address. It allows a pair of devices to establish a virtual connection and then pass data bi-directionally.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; –TCP provides a reliable, connection-oriented service to the application layer. Like UDP, TCP has multiplexing and de-multiplexing indentified with the use of port numbering. The checksum also provides some means error detection. The sequence number is used to identify each byte, providing data reliability. Flow Control uses the sliding-window algorithm to establish the connection and wait for acknowledgments.&lt;span style=""&gt;  &lt;/span&gt;There is also congestion control that uses the Slow Start algorithm to prevent a device from overloading the network links.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Source Port, Destination Port, Sequence Number, Acknowledgement, (Offset/Reserved/ECN/ControlBits), Window, Checksum, Urgent Pointer, Options, Payload.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – TCP protocol operations may be divided into three phases. Connections must be properly established in a multi-step handshake process (connection establishment) before entering the data transfer phase. After data transmission is completed, the connection termination closes established virtual circuits and releases all allocated resources.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;RTP: Real-time Transport Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – RTP provides an unreliable but sequenced service to transmit data. It is unreliable for timeliness and sequenced to make sure data arrives in order. Data that is not in order is dropped.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – UDP and TCP do not meet the demands of Real-Time data. Data needs to arrive in order as fast as possible.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Version, Padding, Extension, CSRC Count, Marker, Payload Type (Type of Audo/Video and encryption), Sequence Number, Timestamp, SSRC (Synchronization Source), CSRC (Contribution Source).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of-service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;DNS: Domain Name System&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – A service that uses a hierarchy of Name Servers to determine the IP Address for a human-readable URI.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – IP addresses are necessary to send data over the Internet. However it is more common for humans to remember readable names. Thus DNS provides a way to convert these names into IP addresses.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Indentification, QR, Opcode, (Many other single bit fields), Total Questions, Total Answer RRs (Resource Records), Total Authority RRs, Total Additional RRs, Questions, Answer RRs, Authority RRs, Additional RRs.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedures&lt;/b&gt; – Every machine connected to the Internet should have a local DNS server. Whenever someone attempts to hit some public domain, the request first heads to the local DNS. If the record is not cache, then it goes through a process of questioning the Root Name Servers, to a TLD Name Server, and eventually to the Name Server that contains the record which is being looked up.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;QOS: Quality of Service&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; - To provide some guarantee of network performance for some given application. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – With Real-Time data, it may be necessary to allot some portion of the network to a particular application. Issues that occur in networks relate to: bandwidth, delay, jitter, error rate, etc.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – Using the differentiated services code point (&lt;a href="http://en.wikipedia.org/wiki/DSCP"&gt;DSCP&lt;/a&gt;) markings in IP, DiffServ can indicate:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• Codepoint = 000000 Best effort (Standard Packet)&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• Codepoint = 101110 Expedited Forwarding (EF) – strict low latency queue&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedure&lt;/b&gt; – A few things can be done to provide QoS. One method includes increasing bandwidth. However, it is common to mark the packet using some specific criteria (DiffServ). Then each router will examine the packet to determine how to handle it. In this case, all routers in a network with QoS must be using DiffServ for this to work.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;SMTP: Simple Mail Transfer Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; – Provides a text-based way to send electronic mail. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; – SMTP is a relatively simple, text-based protocol, in which a mail sender communicates with a mail receiver by issuing simple command strings and supplying necessary data over a reliable ordered data stream channel, typically a Transmission Control Protocol (TCP) connection.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; – SMTP uses a series of commands. HELO, MAIL FROM, RCPT TO, DATA (headers and body), QUIT.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedure&lt;/b&gt; – After the message sender (SMTP client) establishes a reliable communications channel to the message receiver (SMTP server), the session is opened with a greeting by the server, usually containing its fully qualified domain name, in this case smtp.example.com. The client initiates its dialog by responding with a HELO command identifying itself in the command's parameter. With the rest of the commands, the sender can construct an e-mail message to store on the recipients mail server.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h2&gt;SIP: Session Initiation Protocol&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Service&lt;/b&gt; - SIP is primarily used in setting up and tearing down voice or video calls. It has also found applications in messaging applications, such as instant messaging, and event subscription and notification.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Purpose&lt;/b&gt; - A motivating goal for SIP was to provide a signaling and call setup protocol for IP-based communications that can support a superset of the call processing functions and features present in the public switched telephone network (PSTN). SIP by itself does not define these features; rather, its focus is call-setup and signaling. However, it was designed to enable the construction of functionalities of network elements designated proxy servers and user agents. These are features that permit familiar telephone-like operations: dialing a number, causing a phone to ring, hearing ringback tones or a busy signal. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Packet&lt;/b&gt; - It is a text-based protocol, incorporating many elements of the Hypertext Transfer Protocol (HTTP) and the Simple Mail Transfer Protocol (SMTP), allowing for direct inspection by administrators. Commands include:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• REGISTER: Notify current IP address and the URLs to receive calls.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• INVITE: Used to establish a media session between user agents.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• ACK: Confirms reliable message exchanges.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• CANCEL: Terminates a pending request.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• BYE: Terminates a session between two users in a conference.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;• OPTIONS: Requests information about the capabilities of a caller&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Procedure&lt;/b&gt; - SIP employs design elements similar to HTTP-like request/response transaction model. Each transaction consists of a client request that invokes a particular method or function on the server and at least one response. SIP reuses most of the header fields, encoding rules and status codes of HTTP, providing a readable text-based format.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;SIP typically relies on a Proxy server to help establish a connection with a remote user. A proxy server "is an intermediary entity that acts as both a server and a client for the purpose of making requests on behalf of other clients. A proxy server primarily plays the role of routing, which means its job is to ensure that a request is sent to another entity "closer" to the targeted user. Proxies are also useful for enforcing policy (for example, making sure a user is allowed to make a call). A proxy interprets, and, if necessary, rewrites specific parts of a request message before forwarding it." "A registrar is a server that accepts REGISTER requests and places the information it receives in those requests into the location service for the domain it handles." "A redirect server is a user agent server that generates 3xx responses to requests it receives, directing the client to contact an alternate set of URIs. The redirect server allows SIP Proxy Servers to direct SIP session invitations to external domains."&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;Questions from Review&lt;/h1&gt;  &lt;h3&gt;T/F The IETF runs the Internet and its networks.&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;This is not quite a T/F question.  Yes and No.  The IETF produces technical documents that influence how people design, use, and manage the Internet. They do not however run the Internet. Many parties are involved in the distinction of managing the Internet.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Describe the 7-Layer OSI Model:&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Layer 1 is the Physical Layer. At this layer, data is physically moved across a network encoded as electronic signals. Here the specifications for the hardware, encoding/decoding, signaling, and transmission/reception are defined.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 2 is the Data Link Layer that is responsible for data that is transmitted between local devices.  Error detection and error handling, logical link control (LLC), media access control (MAC), and addressing are important here.  LLC allows this layer to abstract the defining physical network below it. MAC provides the capability for multiple machines to share a single resource. Additionally, MAC addresses are assigned as globally unique 48-bit numbers.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 3 is the Network Layer which defines network boundaries and how they can be interconnected. The key protocol at this layer is the Internet Protocol (IP), commonly referred to as the backbone of the Internet. Important services at this layer are IP addressing, fragmentation and reassembly, error handling, and routing. The IP address differs from the MAC address and is independent of hardware.  However, it must be unique at the network level and has two important parts: the network id and the host id. Fragmentation and reassembly allows this layer to split up packets that are too large for the link layer. Also, routing, determining where and how to send incoming packets, occurs at this level by inspecting the IP address.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 4 is the Transport Layer. TCP and UDP are the main protocols that operate at this layer. Connection-oriented and connectionless services are offered in addition to keeping track of the connections software programs are using through ports.  Like the network layer, data can be fragmented here through the process of segmentation.  Moreover, important features include flow control, congestion control, and multiplexing and de-multiplexing.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 5 is the Session Layer. Its purpose is to establish and control sessions between software.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 6 is the Presentation Layer provides the capability to translate, compress, and encrypt software data.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Layer 7, the Application Layer, makes use of all layers below it and provides the capabilities that a user or system need on the network. There are many protocols that exist at this layer (FTP, HTTP, DHCP, NNTP, IRC, etc).&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Describe the 5-Layer TCP/IP Model:&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Similar to the OSI model, we have the Physical, Link (network interface), Network (Internet), Transport, and Application layers.  From the bottom up:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Physical Layer is responsible for transmitting the data over the network encoded as electronic signals. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Link Layer handles the communication of data among local networks.  Ethernet and the 802 protocols are commonly used at this layer.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;At the Network Layer we have the IP protocol as well as ICMP, among others.  This layer is responsible for routing and defining network boundaries.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Transport Layer helps manage data communication across networks.  It can do so with the TCP (reliable) and UDP (unreliable) protocols.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Application Layer includes many application protocols that allow users and systems to use the network as a resource.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Describe how routers manage the water sprinklers at Fenway Park.&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Personally, I do not know much about the sprinkler system at the Stadiums around the US.  In this day and age though, I could imagine there being some central system that controls many of the day-to-day operations.  One such program may be in charge of running the sprinkler system for a set period of time.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For the sake of the question, let this system be placed in some control room that’s off limits to most employees.  There were concerns that the machine running the software could be tampered with so management wanted it to be locked away safely in some server room.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;However, the job of the groundskeeper is to occasionally access this software to ensure that the field is in exceptional playing condition. The network administrator allows him to access the software through a remote and water-proof laptop.  This laptop can connect wirelessly to a private wireless connection within the stadium.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;To access the program, the groundskeeper can use an Internet Browser to open up the link that displays the controls of the sprinkler system (with the correct credentials of course). Thus, when doing so, the laptop is communicating with some wireless router which then itself communicates to the network in which the server resides.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Describe how video traffic is carried on the Internet.&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Like voice traffic, video places an emphasis on timeliness over reliability -- as a reliable service can introduce delay. Real-Time Transport Protocol (RTP), defined at the Application Layer, was introduced to help stream media over networks. Since reliability is not of the upmost important, an UDP/IP datagram is used with RTP. UDP, unlike TCP, is un-reliable and is not subjected to Flow and Congestion Control.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Thus, when video is streamed out to users, we assume the following: that the sender is capturing and compressing the data, and generating the RTP packets. The software will determine how many frames, at which rate, and what the size of the transfer will be. Larger frames will traverse several packets where smaller frames can be squeezed into a single RTP frame.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The client’s application will receive the data in some buffer, with the capability of reordering packets that arrive out of order. Depending on the application, some algorithm may be used to delay playback unless a reliable stream can be viewed.  Based on the amount of packet loss and jitter (packets arriving at differing intervals), a steady and clear playback experience may be possible after waiting for enough data to arrive.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;How are routers involved with Harvard’s parking meters?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;With the new pay-station meters around the Harvard, it is very likely that the meters are connected to the Internet or some private network. I would assume that the meters within close proximity to each other, perhaps all in Cambridge, share a common local network. Let’s assume that they are connected in a very simple manner using Ethernet switches.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now there are two main reasons I see these meters connected to the Internet. One is for credit card validation and the other is for remote administration and reporting. Let us also assume that the meters run some stripped down Operation System that allows it do to this. Hence, the local network home to the meters must contain some Network Router. The OS running on the meters must also be aware of this router, and the interface, which connects to this network, will be considered the gateway. This router will then be connected to some ISP (Internet Service Provider) through another interface to allow data to travel remotely.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Thus, when a user uses the pay-station to purchase a 2-hour parking receipt, the meter will read the user’s credit card information and validate it with some on-line service.  To reach the on-line service, the meter send traffic through it’s local router, to reach the ISP’s router, and through some interworking until it reaches the destination. The service will respond and perhaps ask for some credentials or the credit information. In turn, the meter can send the data over and eventually expect some verification.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Additionally, it would be useful for the county/police station to be able to monitor the meters. Take for instance a case where a reckless driver crashes into a meter. The meter may be able to send out message that travels to the local police station’s command center. Without routing and being able to connect to the Internet, it would take much longer for such an example to be noticed.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;What are some differences between H323 and SIP?&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;See &lt;a href="http://www.packetizer.com/ipmc/h323_vs_sip/"&gt;http://www.packetizer.com/ipmc/h323_vs_sip/&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The biggest difference that I can tell is that SIP is better suited for the Internet and Internet developers. H.323 is better suited for Telephony Companies where more control is necessary.&lt;/p&gt;  &lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5217590299478232107?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5217590299478232107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5217590299478232107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5217590299478232107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5217590299478232107'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/12/cs-131b-final-review.html' title='CSCI-E 131b Final Review'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-1370882404901205096</id><published>2009-11-11T13:15:00.000-08:00</published><updated>2009-11-11T14:26:07.727-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='WATDR'/><title type='text'>WATDR: The LA Times Menu</title><content type='html'>During the summer, when the &lt;a href="http://latimes.com/"&gt;LA Times&lt;/a&gt; rolled out their redesign -- I kind of fell in love with the new menus.  It works well and it's drop dead sexy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Svsp33_Iq1I/AAAAAAAAAXY/60nBRL1nZTk/s1600-h/Screen+shot+2009-11-11+at+4.17.01+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 63px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Svsp33_Iq1I/AAAAAAAAAXY/60nBRL1nZTk/s400/Screen+shot+2009-11-11+at+4.17.01+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402958217859345234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wanted to copy it and noticed that the LA Time's loads a slew of JS and CSS files. Ugh! Where to begin? I just want a pretty menu...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Svs4ljcsk9I/AAAAAAAAAXw/mCPRYfl4ANI/s1600-h/Screen+shot+2009-11-11+at+5.19.18+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 232px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Svs4ljcsk9I/AAAAAAAAAXw/mCPRYfl4ANI/s400/Screen+shot+2009-11-11+at+5.19.18+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402974395782960082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instead of drilling through and finding the code I needed, I knew it would be faster to just create it ad hoc.  Heck, it couldn't be that hard with our friend &lt;a href="http://www.jquery.com/"&gt;JQuery&lt;/a&gt;.  Plus my version might be faster and lighter weight.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SvsqItwZ8dI/AAAAAAAAAXg/SFEh3CAB2-M/s1600-h/Screen+shot+2009-11-11+at+4.18.05+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 54px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SvsqItwZ8dI/AAAAAAAAAXg/SFEh3CAB2-M/s400/Screen+shot+2009-11-11+at+4.18.05+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402958507170984402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cool, it wasn't too hard. It only took me an hour or two to get it in a state that I wanted. Now six months later, I thought I should blog and share it with you. My menu isn't a blatant copy. I kind of felt bad about stealing too much of the design but I wanted to emulate the &lt;span style="font-style: italic;"&gt;feel&lt;/span&gt;. You can make it look almost identical with the right images and a good amount of patience.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://donniedemuth.s3.amazonaws.com/MenuExample.html"&gt;http://donniedemuth.s3.amazonaws.com/MenuExample.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're looking to do something similar, I made it really easy for you to figure out what's going on. Go ahead and click on the following link and feel free to copy the source code. &lt;span style="font-style: italic;"&gt;It's so easy a caveman can &lt;/span&gt;[read it]. &lt;span style="color: rgb(102, 102, 102);"&gt; (After clicking on the link, right-click and view source)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Svs3cw_GvnI/AAAAAAAAAXo/Dat2cy05SKA/s1600-h/Screen+shot+2009-11-11+at+5.07.10+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 47px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Svs3cw_GvnI/AAAAAAAAAXo/Dat2cy05SKA/s400/Screen+shot+2009-11-11+at+5.07.10+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402973145286491762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ask your “bestie” to help you style it and you'll have the prettiest menus on the web. If you liked it, please let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-1370882404901205096?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/1370882404901205096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=1370882404901205096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1370882404901205096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1370882404901205096'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/11/watrd-la-times-menu.html' title='WATDR: The LA Times Menu'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PruFmbvYRak/Svsp33_Iq1I/AAAAAAAAAXY/60nBRL1nZTk/s72-c/Screen+shot+2009-11-11+at+4.17.01+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2699395537736361101</id><published>2009-11-11T12:27:00.000-08:00</published><updated>2009-11-11T13:09:59.431-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='WATDR'/><title type='text'>WATDR: What on Earth is CNN doing?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SvsgRxTeLbI/AAAAAAAAAWw/4dzYrpjEMoc/s1600-h/Screen+shot+2009-11-11+at+3.36.05+PM.png"&gt;&lt;img style="cursor: pointer; width: 131px; height: 65px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SvsgRxTeLbI/AAAAAAAAAWw/4dzYrpjEMoc/s400/Screen+shot+2009-11-11+at+3.36.05+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402947667625913778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Who doesn't love all the new things &lt;a href="http://www.cnn.com/"&gt;CNN&lt;/a&gt; has been rolling out?  In my opinion CNN is the front-runner in determining how we all will visualize the news in the future.  Here's a quick post about some of the new things I've noticed in the past 24-hours.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;NewsPulse&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SvsfKmSDRVI/AAAAAAAAAWg/bAaFtr8ng8o/s1600-h/Screen+shot+2009-11-11+at+3.29.34+PM.png"&gt;&lt;img style="cursor: pointer; width: 281px; height: 256px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SvsfKmSDRVI/AAAAAAAAAWg/bAaFtr8ng8o/s400/Screen+shot+2009-11-11+at+3.29.34+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402946444896453970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Right now it seems that the organization is making a strong push for the reader to use the &lt;a href="http://newspulse.cnn.com/"&gt;NewsPulse&lt;/a&gt; feature.  It's now integrated at the Story level (when you're reading a story its on your right-hand side)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Svsf-8PaL_I/AAAAAAAAAWo/2YRO1W8SrBc/s1600-h/Screen+shot+2009-11-11+at+3.31.46+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 197px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Svsf-8PaL_I/AAAAAAAAAWo/2YRO1W8SrBc/s400/Screen+shot+2009-11-11+at+3.31.46+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402947344144150514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In general, NewsPulse is a data-centric way to drill through stories.  This makes sense since most organizations use databases to store their data over the old-way (circa 3-5 years ago) or just having a whole slew of HTML files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Story Photo Slider&lt;br /&gt;&lt;/span&gt;A great way to visualize what happened in a story is to be presented with it's associated images up close and personal. When I'm reading a story, I'd like to see the lead photo as large as possible and I'm glad CNN gets it.  CNN goes above expectations by throwing in a sweet little slider for the reader to easily "watch" what happened.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SvshVI40fkI/AAAAAAAAAW4/xALZ7I4e1wY/s1600-h/Screen+shot+2009-11-11+at+3.40.29+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SvshVI40fkI/AAAAAAAAAW4/xALZ7I4e1wY/s400/Screen+shot+2009-11-11+at+3.40.29+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402948825007816258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a fantastic use of space. You can even hide the captions is if you want. And although I loathe sliders, this one works well. If I were calling the shots, I might ditch the slider and provide users with a link that displays all of the photos (and captions) at some high-resolution capacity. Kudos to Alan Taylor, at the Boston Globe, for bringing this into pop-culture with &lt;a href="http://www.boston.com/bigpicture/"&gt;The Big Picture&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Story Highlights&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SvsiPKhbZVI/AAAAAAAAAXA/4A6_gANDxjc/s1600-h/Screen+shot+2009-11-11+at+3.29.47+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 221px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SvsiPKhbZVI/AAAAAAAAAXA/4A6_gANDxjc/s400/Screen+shot+2009-11-11+at+3.29.47+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402949821878986066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's kind of weird that I own the domain &lt;a href="http://www.storyhighlights.com/"&gt;storyhighlights.com&lt;/a&gt;.  But as you expect, story highlights are the cliff-notes version of a story.  I want to see this everywhere.  I tend to read the highlights first to determine whether or not I want to read the full story.  It used to be at the top-right of the page and now it's pressed left.&lt;br /&gt;&lt;br /&gt;Below it, on the left-hand, are Related Topics.  Some sites call this tags or categories, but it's really nice to see that CNN limits how many related topics there are.  The &lt;a href="http://latimes.com/"&gt;LA Times&lt;/a&gt; used to provide a ginourmous word-cloud which was a terrible idea.  Example:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Svsjk6kyCbI/AAAAAAAAAXI/zEf0ZI-v38M/s1600-h/flickr_tag_cloud_08-730328.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 219px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Svsjk6kyCbI/AAAAAAAAAXI/zEf0ZI-v38M/s400/flickr_tag_cloud_08-730328.jpg" alt="" id="BLOGGER_PHOTO_ID_5402951295066835378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well, it wasn't exactly like that but it could contain more words/tags than the story itself.  &lt;span style="font-style: italic;"&gt;Information overkill&lt;/span&gt;.  I'm glad that I just recently noticed it was gone from the LA Times.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Sliding Left Wall&lt;br /&gt;&lt;/span&gt;Not all is super smooth in CNN land; though I'll probably change my opinion in the future.  While your reading a story, the left-edge where words begin on a new line sometimes presses right.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SvsnDGEccmI/AAAAAAAAAXQ/iXw3cJUxXI8/s1600-h/Screen+shot+2009-11-11+at+3.54.47+PM.png"&gt;&lt;img style="cursor: pointer; width: 223px; height: 400px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SvsnDGEccmI/AAAAAAAAAXQ/iXw3cJUxXI8/s400/Screen+shot+2009-11-11+at+3.54.47+PM.png" alt="" id="BLOGGER_PHOTO_ID_5402955112083386978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I personally think that a little weird. You don't see that pattern in books or magazines that often when reading one body of text.  I feel that it distracts the reader from reading a passage in it's entirety -- and heck doesn't it just look funny? I'm sure there's a purpose and maybe you can tell me why it makes sense.  In my world, only the right-wall would collapse for external objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2699395537736361101?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2699395537736361101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2699395537736361101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2699395537736361101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2699395537736361101'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/11/watdr-what-on-earth-is-cnn-doing.html' title='WATDR: What on Earth is CNN doing?'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/SvsgRxTeLbI/AAAAAAAAAWw/4dzYrpjEMoc/s72-c/Screen+shot+2009-11-11+at+3.36.05+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4580869590316367200</id><published>2009-11-06T07:07:00.000-08:00</published><updated>2009-11-06T09:38:23.706-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='WATDR'/><title type='text'>WATDR: Guardian.co.uk</title><content type='html'>&lt;span style="color: rgb(0, 0, 102); font-weight: bold;font-size:180%;" &gt;W&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt;hat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;font-size:180%;" &gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt;re&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:180%;" &gt;t&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt;hey&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;font-size:180%;" &gt;d&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt;oing&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;font-size:180%;" &gt;r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:180%;" &gt;ight?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;I decided to start a series of posts about the changes I'm seeing in the news industry. After years of providing stale online information, it seems this business is now in the business of trying to capture your attention. The newsroom is now asking themselves “&lt;span style="font-style: italic;"&gt;how&lt;/span&gt; can we get people to come to our site” rather than relying on the belief that “people &lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;will&lt;/span&gt;&lt;span style="font-size:85%;"&gt; come to us for the news”.&lt;br /&gt;&lt;br /&gt;With growing competition and freely available news on the internet, it seems more apparent that online advertising is vital to the success of journalism and publishing. Besides excellent written content, usability and aesthetics are important for capturing this tech-savvy audience. In this world, you'll need &lt;span style="font-style: italic; color: rgb(0, 0, 153); font-weight: bold;"&gt;water&lt;/span&gt; to survive.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Guardian.co.uk&lt;/span&gt;&lt;br /&gt;Let's begin with the Guardian.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRG4-B6YVI/AAAAAAAAAU0/8Ufy-ZqcDMw/s1600-h/Picture+6.png"&gt;&lt;img style="cursor: pointer; width: 318px; height: 52px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRG4-B6YVI/AAAAAAAAAU0/8Ufy-ZqcDMw/s400/Picture+6.png" alt="" id="BLOGGER_PHOTO_ID_5401019797661704530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unlike many news websites I've come across, the use of space is exceptional.  I doubt information overload is a problem with the Guardian and their team has made several wise and risky decisions. Rather than putting everything imaginable on the homepage, your intuition can drive you to where you want to go. For a website that someone that may visit everyday, a smartly designed site with an increased &lt;span style="font-style: italic;"&gt;click-count&lt;/span&gt; can be negligible. Overall the site seems to have a very inviting feel to it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Homepage Layout&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRLZ7O-LGI/AAAAAAAAAU8/shnrmXgMHqc/s1600-h/Picture+12.png"&gt;&lt;img style="cursor: pointer; width: 299px; height: 400px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRLZ7O-LGI/AAAAAAAAAU8/shnrmXgMHqc/s400/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5401024761893366882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The homepage actually has a four-column layout.  In the left-most column you have the headlines for today. I would be surprised if the top headline didn't appear at that top-left edge. From that edge, various links and images branch out across the page in nicely compartmentalized units. It's very easy to tell where one point of interest begins and ends on the page.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Caption Space Saver&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRFWwOeWSI/AAAAAAAAAUc/Ztrg7hxGEHQ/s1600-h/Picture+4.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 181px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRFWwOeWSI/AAAAAAAAAUc/Ztrg7hxGEHQ/s400/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5401018110329116962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am not sure what to call this, but I like it a lot. To save space, captions are displayed as you hover over certain images (mainly in the middle-right column).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Simple Menus&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRG0SCkcwI/AAAAAAAAAUs/qnZVN-emRwo/s1600-h/Picture+11.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 63px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRG0SCkcwI/AAAAAAAAAUs/qnZVN-emRwo/s400/Picture+11.png" alt="" id="BLOGGER_PHOTO_ID_5401019717133824770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The menu is minimalistic, behaving quite nicely. I was surprised to see that there were no hidden sub-menus eagerly waiting to appear. I kind of like that! But I'm sure there are management teams that disagree with this simplicity. Many whom I've come across want to throw everything into menus to keep the click count low. The balance between intuition and click-count will vary from team to team, or country to country in this case.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRN6G0ZeaI/AAAAAAAAAVE/i_2tGl9CTNE/s1600-h/Picture+14.png"&gt;&lt;img style="cursor: pointer; width: 216px; height: 246px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRN6G0ZeaI/AAAAAAAAAVE/i_2tGl9CTNE/s400/Picture+14.png" alt="" id="BLOGGER_PHOTO_ID_5401027513782204834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For those that insist that every page has 1 or 2 clicks to every other page, it may be worth it to consider a site-map drop-list. I feel that I don't see many of these and they work surprisingly well. On the Guardian.co.uk, this site-map always appears at the top-right corner of the page.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Accessibility&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SvRO-rvZl5I/AAAAAAAAAVM/xGtRTpUe7UA/s1600-h/Picture+16.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 136px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SvRO-rvZl5I/AAAAAAAAAVM/xGtRTpUe7UA/s400/Picture+16.png" alt="" id="BLOGGER_PHOTO_ID_5401028691924457362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Also, at the top-left corner of the page are accessibility options. I like how it takes little thought of my own to find the mobile version or increase/decrease the font on the page (although I would use keyboard shortcuts for that). One thing that I am not a fan of is having the Log-in/Registration links on that side of the page. It's far more common for that to appear in the upper side corner of the page. I would have preferred that the Guardian.co.uk followed the majority here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Extremely Easy RSS&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SvRQi_TU3nI/AAAAAAAAAVU/0-1yGau__hM/s1600-h/Picture+19.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 243px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SvRQi_TU3nI/AAAAAAAAAVU/0-1yGau__hM/s400/Picture+19.png" alt="" id="BLOGGER_PHOTO_ID_5401030415162334834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Did you know that you can type “&lt;span style="font-weight: bold;"&gt;/rss&lt;/span&gt;” at the end of any URL to receive the RSS version of &lt;span style="font-style: italic;"&gt;any&lt;/span&gt; page? Yes, you can get an RSS feed for nearly anything including stories and the homepage. What's amazing is that when you get the RSS for a story, you'll retrieve many of the associated stories and media files for it.  For example, today's big story is about the shooting at fort hood: &lt;a href="http://www.guardian.co.uk/world/2009/nov/06/fort-hood-shooter-alive/rss"&gt;Fort Hood gunman Nidal Malik Hasan shouted 'Allahu Akbar' as he opened fire&lt;/a&gt;.  Within this feed, we also get stories and links for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/world/2009/nov/06/kimberly-munley-fort-hood"&gt;Kimberly Munley praised for ending rampage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/world/video/2009/nov/06/fort-hood-shooting-usa"&gt;Video: 'A horrific outburst of violence'&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/world/2009/nov/06/nidal-malik-hasan-fort-hood-shooting1"&gt;Profile: Major Nidal Malik Hasan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/world/2009/nov/06/fort-hood-suicides"&gt;Fort Hood base: 24/7 military living&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/world/interactive/2009/nov/06/fort-hood-shooting-interactive"&gt;Interactive: Fort Hood shooting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/commentisfree/cifamerica/2009/nov/06/fort-hood-shootings-hasan-muslim"&gt;Wajahat Ali: Muslim Americans taking the blame&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I think that's pretty amazing that the Guardian is so open with providing this data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Combined Topics&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SvRVHVmBYJI/AAAAAAAAAVc/yNikpln9vK8/s1600-h/Picture+20.png"&gt;&lt;img style="cursor: pointer; width: 301px; height: 400px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SvRVHVmBYJI/AAAAAAAAAVc/yNikpln9vK8/s400/Picture+20.png" alt="" id="BLOGGER_PHOTO_ID_5401035437668130962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;An interesting idea is to provide to users the ability to create sections. On the url you can combine multiple topics with the plus-sign... And sometimes it works and sometimes it doesn't! In the above picture, it works but doesn't return any results. Unfortunately I have a hard time getting results when I combine topics and it seems like topics must come from the same section. But I really, really like the idea and I recently added similar functionality to &lt;a href="http://www.signonsandiego.com/tags/fort-hood-texas+barack-obama/"&gt;&lt;span style="font-style: italic;"&gt;SignOnSanDiego&lt;/span&gt;&lt;/a&gt; based on tags (though I don't think stories are actually being tagged correctly since I left).&lt;br /&gt;&lt;br /&gt;Btw, you can get an RSS feed of combined topics just by adding /rss at the end.  Pretty nifty!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Story Detail Layout&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRaeVEUrbI/AAAAAAAAAVk/apdcHN5vzmY/s1600-h/Picture+21.png"&gt;&lt;img style="cursor: pointer; width: 398px; height: 400px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRaeVEUrbI/AAAAAAAAAVk/apdcHN5vzmY/s400/Picture+21.png" alt="" id="BLOGGER_PHOTO_ID_5401041330221919666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Stories look beautiful at the Guardian.co.uk.  Notice how the lead photo is enlarged and centered. I expect that and not enough news sites do it. And below the lead photo rests the story's text with ZERO nudging.  That is, there are not parts of the story pressed in left or right.  I like that because my eyes are trained to read in that manner.  Oftentimes you'll have pictures or additional info that that wrap the text around it.  Example (from another site):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRbsO-hM7I/AAAAAAAAAVs/x1tAjKZNqOM/s1600-h/Picture+22.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 294px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRbsO-hM7I/AAAAAAAAAVs/x1tAjKZNqOM/s400/Picture+22.png" alt="" id="BLOGGER_PHOTO_ID_5401042668616758194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When this happens, your mind momentarily breaks a pattern.  It was used to looking exactly at a certain edge when reading the next line. Sure, it's not a big deal but I think it matters more than most people think. People should be able to read as easily as possible. I want to know, actually not even think about, where I should be looking. The story's text should flow as illustrated by the Guardian.co.uk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Colorful Topics/Categories/Highlights&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SvRd_OtFUZI/AAAAAAAAAV8/i0UlK1Rm7a8/s1600-h/Picture+24.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 148px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SvRd_OtFUZI/AAAAAAAAAV8/i0UlK1Rm7a8/s400/Picture+24.png" alt="" id="BLOGGER_PHOTO_ID_5401045193984397714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I enjoy the presence of the colorful topics at the top left of the story. I think it looks great and clicking on certain topics helps you drill down into other sections. It behaves like a sub-menu that's tied into some folksonomy architecture.&lt;br /&gt;&lt;br /&gt;Also notice how directly below the headline are story highlights.  I'm not sure whether or not CNN or the Guardian invented this, but it definitely helps me digest stories within seconds. In a few years, I expect every news organization to provide a similar bulleted summary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Which paper should I look at next?  I'm deciding between &lt;a href="http://www.cron.com"&gt;The Houston Chronicle&lt;/a&gt; or &lt;a href="http://www.freep.com"&gt;The Detroit Free Press&lt;/a&gt;, mainly because I like their domains.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4580869590316367200?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4580869590316367200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4580869590316367200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4580869590316367200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4580869590316367200'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/11/watdr-guardiancouk.html' title='WATDR: Guardian.co.uk'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/SvRG4-B6YVI/AAAAAAAAAU0/8Ufy-ZqcDMw/s72-c/Picture+6.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5310094043625036109</id><published>2009-11-01T18:48:00.000-08:00</published><updated>2009-11-03T10:51:40.374-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Redesigning the News</title><content type='html'>Yesterday, the Newspaper that I used to work for redesigned their homepage.  I was actually involved in some capacity as a consultant. My hands only touched back-end stuff like the Associated Press integration and tagging. This meant I had no involvement in the front-end design but I wish I did because in another life I would be a User Interface Designer.&lt;br /&gt;&lt;br /&gt;Unfortunately, I felt that our website &lt;a href="http://www.signonsandiego.com/"&gt;SignOnSanDiego&lt;/a&gt; initially missed the mark. The launch was riddled with bugs and the system wasn't playing friendly with FireFox. Fortunately the team solved many of the problems  relatively quickly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;SignOnSanDiego - Homepage&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su5KzMPKgSI/AAAAAAAAATE/cxD9nFgHe30/s1600-h/Screen+shot+2009-11-01+at+9.57.08+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 395px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su5KzMPKgSI/AAAAAAAAATE/cxD9nFgHe30/s400/Screen+shot+2009-11-01+at+9.57.08+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399335246582415650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The homepage looks a little more modern. Off the bat, we have larger pictures, a slider, and a new logo. More media, pictures and video, is the what the news industry thinks people want. But by presenting the tops stories in a slider, I'm not  a fan. Sliders are distracting and annoying to say the least. I try to read the story's tease and &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;BAM&lt;/span&gt; it changes on me.&lt;br /&gt;&lt;br /&gt;You'll probably notice the logo. Is it in the archetype of a &lt;span style="font-style: italic;"&gt;reputable news organization&lt;/span&gt;?  I'm not sure, but you could probably slap it on a skate or surf board and still look cool.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;SignOnSanDiego - Story&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su5K6t-EwQI/AAAAAAAAATM/c5Lf3IJr0-c/s1600-h/Screen+shot+2009-11-01+at+9.57.40+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 389px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su5K6t-EwQI/AAAAAAAAATM/c5Lf3IJr0-c/s400/Screen+shot+2009-11-01+at+9.57.40+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399335375896625410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I don't want to comment on the story page because &lt;span style="font-style: italic;"&gt;it&lt;/span&gt; &lt;span style="font-style: italic;"&gt;must&lt;/span&gt; be a work in progress. Why is the lead photo on the left and pushing the story's body to the right? Yuck.  I would either center blow up the lead photo or have it float to the right.&lt;br /&gt;&lt;br /&gt;Overall, the feel is amateurish. But knowing the deadlines at their office I know they probably have more on their plate than they can handle! I hope to see a sleeker site in a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:180%;" &gt;The News and Homepage Redesigns&lt;br /&gt;&lt;/span&gt;Who started this trend of homepage redesigns?  Within the last three months I've noticed that almost everyone has jumped on the makeover mo-ped. If I were a gambling man, I would pin it on the &lt;a href="http://www.latimes.com/"&gt;Los Angeles Times&lt;/a&gt;. I noticed their change first. Let's look at it and some of the homepages for several of the larger news sources. I'm not yet a fan and hope to see some improvements here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Los Angeles Times&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su5WfdqAc5I/AAAAAAAAATs/y-4PAIbU4Ss/s1600-h/Screen+shot+2009-11-01+at+10.22.27+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 335px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su5WfdqAc5I/AAAAAAAAATs/y-4PAIbU4Ss/s400/Screen+shot+2009-11-01+at+10.22.27+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348101800555410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I thought the old Los Angeles Times website was amazing. The light blue, white, and beige color scheme was beautiful. It already seemed modern and up-to-date. I was completely shocked to see it change. Though I was even more surprised to see it change for the better.&lt;br /&gt;&lt;br /&gt;What's the new color scheme?  It's black and white. We're talking about the news industry here. How did they pull off black and white and make it look hip and edgy whilst appealing to the young and old?  As Paris would say “That's hot.”&lt;br /&gt;&lt;br /&gt;You have large text, 16:9 photos, few ads, and a menu that works really -- really well.  Notice how the menu doesn't overlay anything else.  It belongs within two horizontal bars across the top of the page.  Excellent! I commend you Mr. LA Times designer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;CNN&lt;br /&gt;&lt;/span&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su5Wf-3gjnI/AAAAAAAAAT0/ucT3A5hSX5A/s1600-h/Screen+shot+2009-11-01+at+10.22.46+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 333px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su5Wf-3gjnI/AAAAAAAAAT0/ucT3A5hSX5A/s400/Screen+shot+2009-11-01+at+10.22.46+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348110715555442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cnn.com/"&gt;CNN&lt;/a&gt;'s homepage looks like &lt;span style="font-style: italic;"&gt;the news&lt;/span&gt;. There redesign seems to be focused more on usability rather than piling on the bells-and-whistles. And it works surprisingly well. What I notice most is that the Latest News links are almost immediately at your left-hand side. Great! It's the first place people look and they're probably looking for that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Washington Post&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su5Wlf7s61I/AAAAAAAAAT8/L9ct_kN1ads/s1600-h/Screen+shot+2009-11-01+at+10.40.50+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 313px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su5Wlf7s61I/AAAAAAAAAT8/L9ct_kN1ads/s400/Screen+shot+2009-11-01+at+10.40.50+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348205490858834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm really surprised here. In my opinion, &lt;a href="http://www.washingtonpost.com/"&gt;The Washington Post&lt;/a&gt; has always been solid. I'm not sure why the new/local homepage looks the way it does.  Is the color scheme vomit-green and grey?&lt;br /&gt;&lt;br /&gt;Want to see some nasty menus?&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su5eJxQiIDI/AAAAAAAAAUE/imNjMLxy9ak/s1600-h/Screen+shot+2009-11-01+at+11.20.20+PM.png"&gt;&lt;img style="cursor: pointer; width: 292px; height: 122px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su5eJxQiIDI/AAAAAAAAAUE/imNjMLxy9ak/s400/Screen+shot+2009-11-01+at+11.20.20+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399356525198319666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And is it just me or does the Washington Post hate Opera?  It won't even load in it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Guardian&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su5WeA-MCuI/AAAAAAAAATU/Bddruhw1qAY/s1600-h/Screen+shot+2009-11-01+at+10.21.48+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 346px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su5WeA-MCuI/AAAAAAAAATU/Bddruhw1qAY/s400/Screen+shot+2009-11-01+at+10.21.48+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348076920703714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.guardian.co.uk/"&gt;The Guardian&lt;/a&gt; is always evolving. I swear it looks different every few months. Overall, I find the site very clean and easy to navigate. Not only is it one of the oldest news organizations in the world, they are outright trendy. Props to the Guardian for using some random colors, like two shades of fushia.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The New York Post&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su5WeS1v9II/AAAAAAAAATc/hAHtAYaL4ew/s1600-h/Screen+shot+2009-11-01+at+10.22.02+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 333px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su5WeS1v9II/AAAAAAAAATc/hAHtAYaL4ew/s400/Screen+shot+2009-11-01+at+10.22.02+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348081717146754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nypost.com/"&gt;The New York Post&lt;/a&gt; has the best search menu bar ever.  It's always where you'd expect it to be. Though, I think I have a love+hate relationship with The Post. At times, I think the site looks amazing. At others, it is FAR too cluttered.&lt;br /&gt;&lt;br /&gt;The Post wins my heart with it's latest stories for each of the big NY neighborhoods, under NYC Now. It's perfectly aligned on the left edge of the page. But it's not all good for the Post.  The menus, I'm sure with good intentions, is far too fanciful. Simply put, it does too much for a menu. I'm certain it would alienate the older crowd and I would expect the designers to go back to simpler system in the future.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su7-vuI2alI/AAAAAAAAAUU/DeaCfnKt8no/s1600-h/Picture+2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 375px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su7-vuI2alI/AAAAAAAAAUU/DeaCfnKt8no/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5399533099056261714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The New York Times&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su5WevoxpWI/AAAAAAAAATk/5N7l3HITKls/s1600-h/Screen+shot+2009-11-01+at+10.22.17+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 336px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su5WevoxpWI/AAAAAAAAATk/5N7l3HITKls/s400/Screen+shot+2009-11-01+at+10.22.17+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399348089447359842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm certain we'll see a redesign from &lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt; by the end of the year. Bank on it.  One thing I hope they don't lose is the left-handed menu.  How many times have I mentioned the phrase left-handed in this posting? Plenty! Because left-handing things are important to the user. It's where your eyes are trained to look.  The NYT is the only news source that I know of that still denies a top horizontal menu.  Ain't that strange... and oddly smart of them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Huffington Post&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su5jhaXR1DI/AAAAAAAAAUM/9Dhj0CfQBW4/s1600-h/Screen+shot+2009-11-01+at+11.43.28+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 338px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su5jhaXR1DI/AAAAAAAAAUM/9Dhj0CfQBW4/s400/Screen+shot+2009-11-01+at+11.43.28+PM.png" alt="" id="BLOGGER_PHOTO_ID_5399362428927595570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Okay you got me.  &lt;a href="http://www.thehuffingtonpost.com/"&gt;The Huffington Post&lt;/a&gt; is a blog, not a news outlet. But did you catch the lead story though? Oh what fun it must be to be the Editor at The Huff.  Seriously, I think it's a little too big.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-style: italic;"&gt;Homepage Rankings&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;From sexiest to least, I'd say:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The Los Angeles Times&lt;/li&gt;&lt;li&gt;The Guardian&lt;/li&gt;&lt;li&gt;The New York Post&lt;/li&gt;&lt;li&gt;CNN&lt;/li&gt;&lt;li&gt;The New York Times&lt;/li&gt;&lt;li&gt;SignOnSanDiego/The Union-Tribune&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Huffington Post&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Washington Post&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I'll come up with a real rankings system in a the week or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5310094043625036109?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5310094043625036109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5310094043625036109' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5310094043625036109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5310094043625036109'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/11/redesigning-news.html' title='Redesigning the News'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/Su5KzMPKgSI/AAAAAAAAATE/cxD9nFgHe30/s72-c/Screen+shot+2009-11-01+at+9.57.08+PM.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-8812181595634412799</id><published>2009-11-01T09:54:00.000-08:00</published><updated>2009-11-01T20:58:49.408-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>See Don Walk</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3LhZUE_XI/AAAAAAAAAPk/ujG6hHAvdoM/s1600-h/IMG_1987.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3LhZUE_XI/AAAAAAAAAPk/ujG6hHAvdoM/s400/IMG_1987.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195302878313842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Sometimes walking is faster than taking public transportation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3N9htJKLI/AAAAAAAAAS8/0Sgq8K1qujc/s1600-h/Picture+1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 281px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3N9htJKLI/AAAAAAAAAS8/0Sgq8K1qujc/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5399197985190521010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;It's not that far, only 2 miles!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su3Lr-JrmRI/AAAAAAAAAQc/VFGWHCq4Jis/s1600-h/IMG_1997.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su3Lr-JrmRI/AAAAAAAAAQc/VFGWHCq4Jis/s400/IMG_1997.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195484565510418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;And Lower Allston isn't that &lt;span style="font-style: italic;"&gt;ghetto&lt;/span&gt; at all.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LsKSAeWI/AAAAAAAAAQk/otZacLOXArA/s1600-h/IMG_1998.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LsKSAeWI/AAAAAAAAAQk/otZacLOXArA/s400/IMG_1998.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195487821658466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Sooner or later you'll pass Harvard Stadium.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su3L1wHPDpI/AAAAAAAAAQ0/uYki47Dzjeo/s1600-h/IMG_2000.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su3L1wHPDpI/AAAAAAAAAQ0/uYki47Dzjeo/s400/IMG_2000.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195652595846802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;On the other side of the stadium is Harvard Business School.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3L2KWd38I/AAAAAAAAAQ8/0B6Ok65utCQ/s1600-h/IMG_2007.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3L2KWd38I/AAAAAAAAAQ8/0B6Ok65utCQ/s400/IMG_2007.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195659639054274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Business School's Library is really pretty.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3L2T_DBZI/AAAAAAAAARE/Inckcy_XTzI/s1600-h/IMG_2008.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3L2T_DBZI/AAAAAAAAARE/Inckcy_XTzI/s400/IMG_2008.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195662225180050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;After you cross the river, you'll enter Cambridge.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3L2lyDqdI/AAAAAAAAARM/f597qdq51hE/s1600-h/IMG_2011.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3L2lyDqdI/AAAAAAAAARM/f597qdq51hE/s400/IMG_2011.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195667002534354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;It's an urban neighborhood.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGX8vMII/AAAAAAAAARU/kZeoQqm0o5g/s1600-h/IMG_2012.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGX8vMII/AAAAAAAAARU/kZeoQqm0o5g/s400/IMG_2012.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195938167140482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;I still haven't seen my bus.  I win.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3MOXOoQvI/AAAAAAAAASU/Jhh3UCgBKhI/s1600-h/IMG_2026.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3MOXOoQvI/AAAAAAAAASU/Jhh3UCgBKhI/s400/IMG_2026.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196075412701938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Harvard Yard has been around since the 1630s.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGmnCLNI/AAAAAAAAARk/T1-KIo1PGlA/s1600-h/IMG_2015.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGmnCLNI/AAAAAAAAARk/T1-KIo1PGlA/s400/IMG_2015.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195942102641874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Tourists love this place.  Say “hi” to John Harvard.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MN8ig5KI/AAAAAAAAAR8/FxjHEaeLf5s/s1600-h/IMG_2019.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MN8ig5KI/AAAAAAAAAR8/FxjHEaeLf5s/s400/IMG_2019.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196068248347810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;There are a &lt;span style="font-style: italic;"&gt;ton&lt;/span&gt; of libraries.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MHIcvEJI/AAAAAAAAAR0/z0nwtazVDkQ/s1600-h/IMG_2018.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MHIcvEJI/AAAAAAAAAR0/z0nwtazVDkQ/s400/IMG_2018.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195951186251922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;My computer networks section is in one of the big red buildings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGoNq3zI/AAAAAAAAARc/KudR7OGZkMI/s1600-h/IMG_2013.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MGoNq3zI/AAAAAAAAARc/KudR7OGZkMI/s400/IMG_2013.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195942533127986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;I think the kids get to stay in here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MG3WB9xI/AAAAAAAAARs/S7JoZOFWrT0/s1600-h/IMG_2016.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3MG3WB9xI/AAAAAAAAARs/S7JoZOFWrT0/s400/IMG_2016.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195946594727698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Mother likes churches so here here's one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MOTECjmI/AAAAAAAAASM/qCDh1WB-L2M/s1600-h/IMG_2025.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MOTECjmI/AAAAAAAAASM/qCDh1WB-L2M/s400/IMG_2025.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196074294546018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;But I like the architecture on this one much better.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MTR1uohI/AAAAAAAAAS0/CnZ4YWzxKDc/s1600-h/IMG_2044.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3MTR1uohI/AAAAAAAAAS0/CnZ4YWzxKDc/s400/IMG_2044.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196159865430546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Lawyers apply to law school here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su3MS7Vv44I/AAAAAAAAASk/ltyxBTsmlFE/s1600-h/IMG_2039.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su3MS7Vv44I/AAAAAAAAASk/ltyxBTsmlFE/s400/IMG_2039.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196153825715074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;And study at the Law Library.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su3MOhx834I/AAAAAAAAASc/Us_7yf9CvHk/s1600-h/IMG_2031.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su3MOhx834I/AAAAAAAAASc/Us_7yf9CvHk/s400/IMG_2031.JPG" alt="" id="BLOGGER_PHOTO_ID_5399196078245207938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;I usually end up studying there with a friend.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3Lh-cmH_I/AAAAAAAAAP0/5b4ydimWNOY/s1600-h/IMG_1989.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3Lh-cmH_I/AAAAAAAAAP0/5b4ydimWNOY/s400/IMG_1989.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195312846151666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The computer science building doesn't have that majestic feeling.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LhutiGtI/AAAAAAAAAPs/689iBWnKoy0/s1600-h/IMG_1988.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LhutiGtI/AAAAAAAAAPs/689iBWnKoy0/s400/IMG_1988.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195308622224082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;I usually sit in the front-left row.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Su3LrfNJVGI/AAAAAAAAAQM/IPoD986QOhw/s1600-h/IMG_1993.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Su3LrfNJVGI/AAAAAAAAAQM/IPoD986QOhw/s400/IMG_1993.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195476258542690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;But I also have a class and a few sections in this ugly building.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3LhIP7bII/AAAAAAAAAPc/u4V_8bmiVXI/s1600-h/IMG_1980.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3LhIP7bII/AAAAAAAAAPc/u4V_8bmiVXI/s400/IMG_1980.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195298297506946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;But luckily it is right next to the computer lab.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/Su3LrlMbMII/AAAAAAAAAQU/Oa9A0vDIoCA/s1600-h/IMG_1996.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/Su3LrlMbMII/AAAAAAAAAQU/Oa9A0vDIoCA/s400/IMG_1996.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195477866131586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Welcome to what I see 50% of the week.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LrMwEBXI/AAAAAAAAAQE/ickd7CyqWcM/s1600-h/IMG_1991.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Su3LrMwEBXI/AAAAAAAAAQE/ickd7CyqWcM/s400/IMG_1991.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195471304721778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Sometimes I sneak into a journalism class in this room.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Su3LiVuye2I/AAAAAAAAAP8/qR9UPQb6kT4/s1600-h/IMG_1990.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Su3LiVuye2I/AAAAAAAAAP8/qR9UPQb6kT4/s400/IMG_1990.JPG" alt="" id="BLOGGER_PHOTO_ID_5399195319096474466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;All this walking makes me hungry.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-8812181595634412799?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/8812181595634412799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=8812181595634412799' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8812181595634412799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8812181595634412799'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/11/see-don-walk.html' title='See Don Walk'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PruFmbvYRak/Su3LhZUE_XI/AAAAAAAAAPk/ujG6hHAvdoM/s72-c/IMG_1987.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2781192777197471505</id><published>2009-10-25T09:02:00.000-07:00</published><updated>2010-01-13T11:03:31.530-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computer networks'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>The Fall 2009 Harvard Extension Bi-Semester Review!</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_PruFmbvYRak/SuSNGkMThuI/AAAAAAAAAPU/CFSCHboIMEE/s1600-h/Picture+1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5396593397430716130" src="http://4.bp.blogspot.com/_PruFmbvYRak/SuSNGkMThuI/AAAAAAAAAPU/CFSCHboIMEE/s400/Picture+1.png" style="cursor: pointer; height: 275px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;I highly recommend &lt;a href="http://www.imdb.com/title/tt0805570/"&gt;&lt;span style="font-style: italic;"&gt;The Midnight Meat Train&lt;/span&gt;&lt;/a&gt;. It's a horror flick that gives you everything that you would expect in that genre, including a huh(?)-ending.&lt;br /&gt;&lt;br /&gt;Now let's get onto the fun stuff.  If you've been following my blog you know that I'm currently taking three classes: &lt;a href="http://ddemuth.blogspot.com/search/label/computer%20networks"&gt;CSCI-E 131b&lt;/a&gt;, &lt;a href="http://ddemuth.blogspot.com/search/label/ruby%20on%20rails"&gt;CSCI-E 168&lt;/a&gt;, and &lt;a href="http://ddemuth.blogspot.com/search/label/computation"&gt;CSCI-E 207&lt;/a&gt;.  It's highly likely that if you're thinking about the ALM program that you will be taking one of these classes.  Since we are at the halfway point, let me share my grades and a few thoughts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-size: large;"&gt;Computer Networks and Internet Protocols&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Grades&lt;/span&gt;&lt;br /&gt;So far I've turned in two problem sets.  They both took a bit of work and I'd like to share some of my research in later blogs. If I had to guess how long each took, I'd say about a good 10 hours of writing each. In the end they both consisted of 10 pages including diagrams.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HW 1 : 19/19&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HW 2: Not yet graded&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HW 3: Just started, seems pretty difficult&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Flow&lt;/span&gt;&lt;br /&gt;I find the flow of this class right on.  It's not too difficult or easy for me, but I don't have a ton of computer network experience. Learning about protocols is kind of what you'd expect it to be. It can tend to be really dry. Fortunately, Professor Evenchik and the Teaching Fellow "Joe" are pretty awesome when it comes to explaining the material. I find it interesting to talk about and difficult to read about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Should You Take It&lt;/span&gt;&lt;br /&gt;In a single word, yes. Not being much of a network/systems guy myself I feel much more comfortable understanding how the Internet works. It's been enjoyable. Heck, I even know the implementation details behind &lt;a href="http://ccnablog.globalknowledge.com/2009/10/02/troubleshooting-with-the-traceroute-command/"&gt;traceroute&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Web-based Software with Ruby on Rails&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Grades&lt;/span&gt;&lt;br /&gt;We've had three programming assignments. It's hard to describe how difficult or easy they were. To be honest, at first they were incredible hard. For some reason it's hard for me to decipher the assignment objectives (example: &lt;a href="http://e168f09.plugh.org/assignments/assignment-2-classes-and-methods/"&gt;Assignment 2&lt;/a&gt;). But after spending a few hours understanding what you're supposed to do, it's not &lt;span style="color: #660000; font-style: italic;"&gt;that&lt;/span&gt; bad.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Assignment 1: Ruby One Liners: 97/100&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;This was actually a fun assignment. I spent a weekend working on this for 8 or so hours the first day it came out. If I waited long enough, Professor Norman will cover each answer during class. Thus, the longer you wait the easier the assignment will be.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Assignment 2: Classes and Methods: Not yet graded&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;Again, this was fun. We build upon a game that Professor Norman and his staff created. It's a command prompt game that's similar to pong and &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" style="color: #333333; font-style: italic;"&gt;the game of life&lt;/a&gt;&lt;span style="color: #333333; font-style: italic;"&gt;. Basically all you need to do is to implement the missing methods and build a few objects of your own. I thought it would be cute to add blood-thirsty zombies and vampire slayers. I spent 10 hours on this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Assignment 3: Active Record: Not yet graded&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;You're assigned to save the state of your game in the database and restore it.  A good two hours or so got the job done.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Flow&lt;/span&gt;&lt;br /&gt;I really, really like John Norman and the Teaching Fellow "Keith."  Really cool and smart guys.  For the most part, the flow is okay.  I've never taken a class like this so its hard to say.  I think I had different expectations. The class could be more accelerated if there was more &lt;span style="color: #006600; font-style: italic;"&gt;trust&lt;/span&gt; that the students were capable of learning on their own. Maybe that's a good thing as everything in class is served on a silver platter. You'll definitely learn in this class.  But thank god I'm swamped with my other classes and part-time jobs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Should You Take It&lt;/span&gt;&lt;br /&gt;If you really want to learn Ruby on Rails, then sure. People recommend this class all the time. Plus, the documentation and tutorials on R/o/R are so good it's very easy to teach yourself. Being more comfortable with Ruby, I respect it now as a language. Rails on the other hand... It's not my favorite framework.  I'd like to learn more about the other Ruby frameworks. I'm bitter that Python and Django is not getting the hype that it deserves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Formal Systems and Computational Theory&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Grades&lt;/span&gt;&lt;br /&gt;Five problem sets and a mid-term.  That's almost one problem set every week.  How long does a problem set take you ask?  &lt;span style="font-style: italic;"&gt;About twenty hours&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Working on them is probably the hardest thing I've ever had to do in my life.  Just ask anyone else in the class.  They agree.  One out of every one students will confirm that this is tough-cookies.  The &lt;a href="http://www.courses.fas.harvard.edu/%7Ecscie207/"&gt;assignments&lt;/a&gt; are posted on the web, take a look.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PS 0: Does not count&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PS 1: 61/62, average 50.69&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PS 2: 52.5/56, average 41.63&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PS 3: 61.95/64, average 50.55&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PS 4: Not yet graded&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;Sadly, I totally muffed one of the problems w/ about a page and a half of work. Gosh, it was a 15 pointer also.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Midterm: Not yet graded&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;The midterm wasn't too difficult.  I spaced out the first five minutes and I think I was way too anxious. I got really nervous and just read every problem about 3 times. Then I tried to calm myself down and breathe slowly.  Out of seven or eight questions, I was only kind of confused about one of the problems. The problem was a memory based one, where you either knew the definition or not. I'm hoping that I beat the average here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PS 5: Just started!&lt;br /&gt;&lt;span style="color: #333333; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Flow&lt;/span&gt;&lt;br /&gt;The class consumes you. It gnaws on your toes and spits out your nails. Be prepared to work and you must devote a large block of time to this class. You can &lt;span style="font-style: italic;"&gt;only&lt;/span&gt; take this course and feel overwhelmed. Luckily, I only work part-time but combining this with two other classes is very difficult. I've stayed up til 4~5 A.M. several times this semester already.&lt;br /&gt;&lt;br /&gt;I &lt;span style="color: #cc0000; font-weight: bold;"&gt;HATED&lt;/span&gt; this class around Week 4.  But since this class takes so much time away from everything you can possibly think of -- the class becomes &lt;span style="font-style: italic;"&gt;you&lt;/span&gt;.  And &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; become a theoretician. And &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; realize that something is missing when you're not working on problem sets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Should You Take It&lt;/span&gt;&lt;br /&gt;One should ask oneself if he/she is &lt;a href="http://en.wikipedia.org/wiki/Sadomasochism"&gt;masochistic&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2781192777197471505?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2781192777197471505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2781192777197471505' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2781192777197471505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2781192777197471505'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/fall-2009-harvard-extension-bi-semester.html' title='The Fall 2009 Harvard Extension Bi-Semester Review!'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/SuSNGkMThuI/AAAAAAAAAPU/CFSCHboIMEE/s72-c/Picture+1.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-8271674211580637383</id><published>2009-10-14T08:48:00.000-07:00</published><updated>2009-10-14T20:10:27.246-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ucsd extension'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>Ghetto-Fab Teaching with Technology</title><content type='html'>&lt;blockquote&gt;ghetto-fab [&lt;a href="http://www.urbandictionary.com/define.php?term=ghetto+fab"&gt;urban-dictionary&lt;/a&gt;]: in my use I mean using something for free when there are paid and probably better means&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I loved it when Ali-G said things like, "Tek-mol-lo-gy... It's happening."  And right  he is, &lt;span style="font-style: italic; font-weight: bold;font-size:130%;" &gt;it&lt;/span&gt; is happening!&lt;br /&gt;&lt;br /&gt;Thus, how can we use modern (say Web 2.0) technology to teach or assist in teaching?  As a remote instructor at UCSD-Extension, all I really have is BlackBoard and PowerPoint with voice-over.  So far it has worked out really well.  But it does feel a bit old and really does feel like &lt;span style="font-style: italic;"&gt;remote-learning&lt;/span&gt;.  Hint: it's not a warm and fuzzy feeling.&lt;br /&gt;&lt;br /&gt;This upcoming semester, I am going to try out a few new technologies.  If anyone has tried one before, please let me know! [note: this post will grow]&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;Justin.TV&lt;/span&gt;&lt;br /&gt;I'm also attending school and several of my teaching-fellows use a tool named &lt;a href="http://elluminate.com/"&gt;Elluminate&lt;/a&gt;.  It's more or less a chat room with a shared MS-Paint window.   Elluminate is a useful product but I almost never see the drawing window being used.  Most of the conversation takes place in the chat room where almost any chat software would suffice.&lt;br /&gt;&lt;br /&gt;For a while, I thought to myself "Hey why can't I teach with Elluminate also?!"  But then I realized, heck why bother when I could be streaming live.  &lt;a href="http://justin.tv/"&gt;Justin.tv&lt;/a&gt; is a nifty website that's been around for a few years that allows users to stream themselves.  Perhaps I could hold things up to the camera and at the very least let my students feel like a human-being is teaching the course.&lt;br /&gt;&lt;br /&gt;What's nice is that there's also a chat room feature with all of the common features like private messaging.  What's even better is that there's &lt;a href="http://blog.justin.tv/2007/12/broadcasting-your-desktop.html"&gt;desktop streaming&lt;/a&gt;.  Yup, I'll be able to code and allow me students to see it.   Doesn't it seem like a great way to show examples?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Google Wave&lt;br /&gt;&lt;/span&gt;I'm sure there will be a ton of people trying out Google Wave for education this upcoming year.  It seems like it would be a good tool... I'm still not drinking the wave-water though... I'll need to think on this.  TBC...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-8271674211580637383?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/8271674211580637383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=8271674211580637383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8271674211580637383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8271674211580637383'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/ghetto-fab-teaching-with-justintv.html' title='Ghetto-Fab Teaching with Technology'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3872268044539829340</id><published>2009-10-10T08:40:00.000-07:00</published><updated>2009-10-10T09:46:11.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>How To Do Not Poorly Through Week 6</title><content type='html'>&lt;span style="color: rgb(153, 153, 153);"&gt;Update: Oh cool look at my G-talk status about this post: "&lt;span style="font-style: italic; font-weight: bold;"&gt;How To Do Not Poo&lt;/span&gt;". &lt;/span&gt; &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/StC5-BD5tyI/AAAAAAAAAPM/tcmAJcYSvnU/s1600-h/Screen+shot+2009-10-10+at+12.44.07+PM.png"&gt;&lt;img style="cursor: pointer; width: 161px; height: 104px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/StC5-BD5tyI/AAAAAAAAAPM/tcmAJcYSvnU/s400/Screen+shot+2009-10-10+at+12.44.07+PM.png" alt="" id="BLOGGER_PHOTO_ID_5391013229050312482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;~*~*~*~*~*~*~*~*~*&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I'd like to start off with a short advertisement:  If you want to be organized -- hell I'm a left-handed, left-thinking spaghetti-code mess -- invest in Unikeep binders.  They are &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;wicked cool&lt;/span&gt;. And somehow keeping my life &lt;span style="font-style: italic;"&gt;right&lt;/span&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/StC0RBH_IAI/AAAAAAAAAPE/XHvz6fW3Rqo/s1600-h/11984_main.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/StC0RBH_IAI/AAAAAAAAAPE/XHvz6fW3Rqo/s400/11984_main.jpg" alt="" id="BLOGGER_PHOTO_ID_5391006958415192066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Week 6, And Things Look Better&lt;br /&gt;&lt;/span&gt;I am not 100% sure how well I'm doing in school.  Heck, I'm always worried and second guessing myself.  However, I think it's now safe to assume that I am not doing poorly! Here's why:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CSCI-E 131b (Computer Networks)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I took the time to complete the homework a week and a half in advance.  Additionally, I've somehow forced myself to read all of the reading material even though most of it goes right over my head.  As you could imagine, it is impossible to tell if your peers have done the same.&lt;br /&gt;&lt;br /&gt;This Wednesday, our professor took the realms of section lead over the awesome "Joe-Leader."  What's funny about this is that instead of talking about the material in a practical light, Professor Evenchik interrogated the room!  He asked everyone for a set of questions.  And waited until &lt;span style="font-weight: bold; font-style: italic;"&gt;you&lt;/span&gt; returned a response.&lt;br /&gt;&lt;br /&gt;I had plenty of questions but surprisingly there weren't many others.  Additionally, it seemed that, in this small section, hardly anyone else started the homework.  Now I don't think I'm necessarily ahead of anyone else, but it's nice to know that I was somewhat prepared for his surprise.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:130%;" &gt;Hints (so you can do well too):&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Start the homework early.  Skim the reading material.  Go to the computer lab at 53 Church Street to print out the material for free.  Read Wikipedia for some of the general topics.  Wikipedia will spell out the concepts in layman's terms.  I know it's easier said than done, but prepare a few questions for section or class.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CSCI-E 168 (Ruby and Rails)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Ruby, Rails, easy stuff.  I get it.  It seems that many other people don't because they keep questioning the "philosophy."&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Whyyyyyy&lt;/span&gt; can you do that?&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Jaaaaavaaaaa&lt;/span&gt; is strict and therefore better!&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Caaaaaaaan't&lt;/span&gt; that lead to bad code?&lt;/li&gt;&lt;/ul&gt;Come on people.  Haven't you used an api before?  Learn how to use things and appreciate the features that it has to offer rather than finding every single reason it's not the same as language &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt;.  It's Ruby.  Did you do no research on the topic before joined the class?&lt;br /&gt;&lt;br /&gt;Sorry, the class is a little aggravating.  I love the lectures.  The instructor and section leader are way cool.  But I do wish that the students in the class were a little more progressive and modern -- when it comes to technology.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:130%;" &gt;Hints (so you can do well too):&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Don't question everything.  Try to see the advantage of some of the features that Ruby provides.  There are pros and cons for everything, convince yourself that the pros outweigh the cons.  Think modern.  Be 2009 -- 2010.  Stop living in the 80s -- 70s -- 60s -- 50s -- 40s -- 30s.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;CSCI-E 207 (Formal Systems + Computation&lt;/span&gt;)&lt;br /&gt;Okay, my nightmare.  My thorny devil.  The bane of my existence, &lt;span style="font-style: italic;"&gt;CSCI-E 207&lt;/span&gt;.  How I love you and how I loathe you.&lt;br /&gt;&lt;br /&gt;But how I think I'm getting to know you.&lt;br /&gt;&lt;br /&gt;Now I'm constantly behind on lectures.  And it's very difficult to keep up when the material moves so fast.  Interesting enough, for the material that I make it to I think I'm doing okay.  I was actually able to complete most of Problem Set 3 without the headaches of past.  Amazingly, I am also feeling more comfortable around this material that I can actually communicate about it.  Heck I even "aced" one of the sets (heh, after extra credit).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;*Oh Donnie!  The sky's the limit!  Things are looking brighter son!*&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you take this class, YOU BETTER GO TO SECTION and you better hope that Brian's teaching it.  Otherwise, you can go straight to &lt;a href="http://www.blogger.com/www.harvardfml.com"&gt;www.harvardfml.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:130%;" &gt;Hints (so you can do well too):&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Go to section. &lt;span style="font-size:100%;"&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;Cry here and there.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-size:85%;" &gt;Keep a hearty supply of Kleenex.&lt;/span&gt; &lt;span style="font-size:100%;"&gt; &lt;span style="color: rgb(102, 51, 51);"&gt;Pour any whiskey down the sink.&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 102, 0);"&gt;Do not walk on train-tracks or in the middle of the street.&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;Do not buy any cyanide capsules, etc.&lt;/span&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;Do not talk about fight-club.&lt;/span&gt;  &lt;span style="color: rgb(102, 0, 0); font-weight: bold; font-style: italic;font-size:180%;" &gt;Serve Project Mayhem.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3872268044539829340?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3872268044539829340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3872268044539829340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3872268044539829340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3872268044539829340'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/urhm-its-looking-good.html' title='How To Do Not Poorly Through Week 6'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/StC5-BD5tyI/AAAAAAAAAPM/tcmAJcYSvnU/s72-c/Screen+shot+2009-10-10+at+12.44.07+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2311333290800612166</id><published>2009-10-07T15:10:00.000-07:00</published><updated>2009-10-07T15:24:01.037-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>Ethics and Journalism E-120</title><content type='html'>I had the chance to sit in an &lt;a href="http://www.extension.harvard.edu/courses/13197.jsp"&gt;Ethics and Journalism&lt;/a&gt; session at Harvard Extension.  Actually, the class just happened to take place around me -- while I just sat.  I have never taken a real writing class before so I was really intrigued with the presenter, material, and the students.  Everyone was engaged and participated&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;.  Just about everything I'm not used to seeing in a Computer Science class.  *Sigh*&lt;br /&gt;&lt;br /&gt;I believe the speaker was Allan R. Ryan and he had the splitting image of Anthony Hopkins.  I could probably listen to him all day as he had such a commanding and majestic (is that odd?) voice.  On this particular day, they were talking about an article by Nicolas Kristof at the New York Times.  The article, &lt;a href="http://www.nytimes.com/2008/08/28/opinion/28kristof.html?_r=1"&gt;Media's Balancing Act&lt;/a&gt;, discusses when is it appropriate to publish a story without concrete evidence.  Topics included a case with a priest with molestation allegations and a new &lt;span style="font-style: italic;"&gt;lead&lt;/span&gt; in the Jon Bonnet Ramsey case.  The response by the class was fascinating and I wish I was part of it.&lt;br /&gt;&lt;br /&gt;Some of the statements overheard were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the facts right before you run with a story!&lt;/li&gt;&lt;li&gt;What if the suspect presents "emotional blackmail," where you will feel responsible for the harm that may come from the story.&lt;/li&gt;&lt;li&gt;Do you take the risk of publishing a non-story if it will prevent harm to others?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2311333290800612166?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2311333290800612166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2311333290800612166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2311333290800612166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2311333290800612166'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/ethics-and-journalism-e-120.html' title='Ethics and Journalism E-120'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-536306408752419388</id><published>2009-10-02T13:32:00.001-07:00</published><updated>2009-10-02T14:10:59.736-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>Getting There, But It's Not Looking Good</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CSCI E-207 Week 5 Update&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have I ever mentioned how challenging CSCI E-207/121 is?  It's definitely not for your normal-minded human. Ha, I thought it would be "cool" to actually learn about the theory of computers. Heck!  Why wouldn't it be cool?  Unfortunately, theory and theoreticians:  "&lt;em&gt;are who we&lt;/em&gt; thought &lt;em&gt;they&lt;/em&gt; were."&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cDAq5tyfk9E&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/cDAq5tyfk9E&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Basically, a prerequisite for this class is a certification in genius.  And an admiration for "this guy."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SsZjgqeSyjI/AAAAAAAAAO8/0Ym_RIII6yc/s1600-h/membersonly.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 350px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SsZjgqeSyjI/AAAAAAAAAO8/0Ym_RIII6yc/s400/membersonly.jpg" alt="" id="BLOGGER_PHOTO_ID_5388103417003690546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If he seems like someone that might stomp on your dreams, then maybe a theoretical class ain't for you. Jokes aside, this material isn't for the weak at heart.  If you can't figure everything out on your own then *&lt;span style="font-style: italic;"&gt;honestly&lt;/span&gt;* you're going to have a lot of trouble. Theory has always been one of those things that those that &lt;span style="font-style: italic;"&gt;get it&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;get it&lt;/span&gt;, and those that &lt;span style="font-style: italic;"&gt;don't&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;don't&lt;/span&gt;.  No one is going to hold your hand and help you understand.&lt;br /&gt;&lt;br /&gt;P.S.  I'm just bitter that I'm not a genius.  =)  Oh and I dunno, my neural-pathway-thinga-ma-bobs are leading to dead ends. Grr...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-536306408752419388?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/536306408752419388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=536306408752419388' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/536306408752419388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/536306408752419388'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/csci-e-207-week-5-update.html' title='Getting There, But It&apos;s Not Looking Good'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PruFmbvYRak/SsZjgqeSyjI/AAAAAAAAAO8/0Ym_RIII6yc/s72-c/membersonly.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-8207015092027566353</id><published>2009-10-01T08:44:00.000-07:00</published><updated>2009-10-01T12:33:23.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI 121 and 207 HQ Lectures on Miro</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;The Videos That You Paid For&lt;br /&gt;&lt;/span&gt;I don't know if anyone else is unsatisfied with the live video feeds during a Harvard Extension lecture.  Personally, I would like a better video player.  A High-Quality live stream similar to &lt;a href="http://justin.tv/"&gt;Justin.tv&lt;/a&gt; would be grand!  I know Harvard should have the bandwidth and technology to provide this, but obviously I'm blogging for a reason.&lt;br /&gt;&lt;br /&gt;Right now I am currently stuck with a 320x240 feed where the professor is drawing figures and hieroglyphic symbols on the chalk board and it's not always clear what I'm looking at.  Additionally, it's kind of sad that you can't really pause-and-resume to take notes and try to decipher whats taking place in the feed.  Oh, and don't even think about restarting the stream or trying to start the video up at a particular frame.  Tracking isn't enabled either.   This is pretty much what you get:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SsTK1DkVK3I/AAAAAAAAAOs/oFpO4apKUa0/s1600-h/Picture+1.png"&gt;&lt;img style="cursor: pointer; width: 384px; height: 400px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SsTK1DkVK3I/AAAAAAAAAOs/oFpO4apKUa0/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5387654067081522034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Though more features are available when you're watching the replay of the video.  And it really isn't all that bad.  But I'm sure if you are going through the bother of reading this, the next part will brighten your day.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Same Videos For Free&lt;br /&gt;&lt;/span&gt;So I'm one of those stupid guys who fails to bookmark really important sites -- like the&lt;a href="http://www.courses.fas.harvard.edu/%7Ecscie207/"&gt; CSCI 207 homepage&lt;/a&gt;.  That means, every time I need to find the link for the video feed I have to first search for the 207 homepage...  Yes, it's very annoying and I do this twice a week.&lt;br /&gt;&lt;br /&gt;Fortunately, something good happened in my life the other day.  When searching for the homepage using the terms "&lt;a href="http://www.miroguide.com/items/2062968?page=1"&gt;CSCI 207 Harvard&lt;/a&gt;" I somehow clicked on a link that had lectures from 2007. It's neat because it uses the Quicktime player and you can save the lecture to your disk.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SsTM2Wv0ZII/AAAAAAAAAO0/ALLoeS_7Ip8/s1600-h/Picture+2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 355px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SsTM2Wv0ZII/AAAAAAAAAO0/ALLoeS_7Ip8/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5387656288433104002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition, if you want next's week lecture or any lecture for that matter it's all there (considering that Theory lectures do not change often semester to semester).  I haven't looked ahead yet but I'm loving the ability to have some tracking and control over the video player.  If you plan on taking this class I highly recommend watching &lt;a href="http://www.miroguide.com/items/2062968?page=1"&gt;one of these lectures&lt;/a&gt; to get a good feel of the class. Surprisingly, I did not find the videos posted on the other popular education sites like &lt;a href="http://academicearth.com/"&gt;Academic Earth&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're currently taking this class, try the &lt;a href="http://getmiro.com/"&gt;Miro&lt;/a&gt; video to help supplement your virtual classroom experience.  The awesomely-cool folks could probably put this video on their iPod to learn about theory on the go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-8207015092027566353?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/8207015092027566353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=8207015092027566353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8207015092027566353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8207015092027566353'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/10/csci-121-and-207-hq-lectures-on-miro.html' title='CSCI 121 and 207 HQ Lectures on Miro'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/SsTK1DkVK3I/AAAAAAAAAOs/oFpO4apKUa0/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3089226074642788928</id><published>2009-09-28T12:23:00.000-07:00</published><updated>2009-09-28T12:40:15.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>The Havard Computer Lab, for Extension Students</title><content type='html'>I finally decided to check out the &lt;a href="http://lab.dce.harvard.edu/web/index.php"&gt;computer lab&lt;/a&gt; that's available to us extension students.  It is located at 53 Church St, maybe a block away from 1 Story St (a common place for Computer Science extension courses).  In the picture below, I highlighted the computer facility in red and 1 Story St in purple.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SsENRTnhMBI/AAAAAAAAAOk/_HgDV_SQ3zk/s1600-h/Picture+1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 235px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SsENRTnhMBI/AAAAAAAAAOk/_HgDV_SQ3zk/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5386601220286787602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Gaining Access&lt;/span&gt;&lt;br /&gt;From the street, you'll see a cute little garden.  Entering it you'll most likely see a sign above a heavy glass door that reads "Harvard Computer Center."  Unfortunately, you can not waltz right in.  You'll need an access card.&lt;br /&gt;&lt;br /&gt;Luckily, to get the card all you have to do is push the call button (it's on a button panel to the left of the door).  Ask the receptionist that you would like to get access to the lab.  She'll ring you in.  And all you need to prove your identification is some picture ID.  From that they'll be able to determine whether or not you're a current Harvard Extension student.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;What's Cool About It&lt;/span&gt;&lt;br /&gt;Okay.  I don't know where to begin.  There's a room with 23+  Apple Cinema displays and souped up MacPros.  There are also MacBook Pros and a Windows lab for Windowey-type of people. Printing course documents seems to be free and uber fast.  And it's all very quiet and hardly full. &lt;br /&gt;&lt;br /&gt;Though saving the best for last, there are two sets of bathrooms.  The "Head"-to-'person-head' is excellent!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3089226074642788928?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3089226074642788928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3089226074642788928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3089226074642788928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3089226074642788928'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/havard-computer-lab-for-extension.html' title='The Havard Computer Lab, for Extension Students'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/SsENRTnhMBI/AAAAAAAAAOk/_HgDV_SQ3zk/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3666425728161274591</id><published>2009-09-25T12:43:00.000-07:00</published><updated>2009-09-25T13:19:33.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-207 Week 4 Update</title><content type='html'>I am going to need a LOT of luck.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Harvard Extension&lt;/span&gt;&lt;br /&gt;CSCI E-207: Introduction to Computational Theory&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;The first homework was very difficult.  The second homework is just as hard, though starting to make more sense.  I really want to understand this material but I feel that I will never be intelligent enough for it to click.  Actually I may be scaring myself off from doing well.  At times I feel like I know what I'm doing -- At times isn't often.&lt;br /&gt;&lt;br /&gt;Besides some of the other recommended books, I found that Daniel J. Velleman's &lt;span style="font-style: italic;"&gt;How To Prove It: A Structured Approach&lt;/span&gt; is really helping me understand proofs.  Oh yeah, you're going to need additional books. The one required book is hardly helps someone like me (a nitwit) understand what the problems in the homework mean.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class&lt;/span&gt;&lt;br /&gt;For extension students, lectures or stream or recorded.  For the most part, I kind of like the lectures.  The material is fairly general and I never find it completely over my head.  However, I am not quite sure if watching the lecture will help you do well in the class.  The homework is much harder than anything discussed in class and I suppose there's a valid reason for that.  I just wish that after reading a chapter and watching lecture, I would know how to solve a problem.  And I find myself far from that aspiration.&lt;br /&gt;&lt;br /&gt;*Ding-ding*  But the lecture itself is intended for real Harvard students.  I guess they really are that much smarter than, me (where I do not know how I relate normal folk and I don't want to insult you).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Section&lt;/span&gt;&lt;br /&gt;Our section leader, Brian, is probably the only reason I am still in this course.  The guy is total genius and during the last section I probably hammered him with some of the most idiot questions he's ever heard.  He handled them properly and helped clean up the mess in my mind. What I did find strange is that the other students in the class seem to be doing pretty well.  I was hoping that I would find myself in a pool of the lost and confused.  Maybe it's just me.&lt;br /&gt;&lt;br /&gt;If I bomb this class, and good god I hope I don't, I know that I'll understand theory at some elementary level at least.   Brian's section will save your butt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Pixies&lt;/span&gt;&lt;br /&gt;Gouge Away&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;I'm sticking with it but I bet I'm going to suffer...&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KO2HP8msjC0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/KO2HP8msjC0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3666425728161274591?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3666425728161274591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3666425728161274591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3666425728161274591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3666425728161274591'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-207-week-4-update.html' title='CSCI E-207 Week 4 Update'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2713286035959610732</id><published>2009-09-25T12:01:00.000-07:00</published><updated>2009-09-25T13:23:36.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-168 Week 4 Update</title><content type='html'>So far the R&amp;amp;R class has been pretty easy for me.  Note: I was a little familiar with the language about four-five years ago so I have a bit of a leg up in early in the semester.  I am learning a whole bunch though and I'm loving it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Harvard Extension&lt;/span&gt;&lt;br /&gt;CSCI E-168: Web Applications with Ruby on Rails&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;The first homework involved writing Ruby one-liners.  That means stringing along blocks and methods to create neato functionality on a single line.  I was able to accomplish this task in a few days fairly early.  Since then, we've stumbled on better ways to writing such tasks and we're starting to get into meta-programming.  Fun!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class&lt;/span&gt;&lt;br /&gt;The professor, John, is really-really good.  I believe he said he was not a computer science major in undergrad and it shows.  His presentation skills are slick and I'm sure he'll be a big name in Ruby if he isn't already.  Like my Computer Networks class, I haven't tried listening to the stream of the class but I bet they are awesome.&lt;br /&gt;&lt;br /&gt;In general, the class correlates strongly to the reading assignments and the homework.  If you find the homework to be hard, just attend class and section and it should make more and more sense.  I have a feeling that John wants everyone to actually do well and it would be pretty difficult not to.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Section&lt;/span&gt;&lt;br /&gt;The section for this class ended up on Thursday afternoon around 5:30 PM.  Thus, our section tends to be pretty small as most people can not make this time.  Our section leader, Keith, is a hip (cool, whatever) guy who kind of reminds me of myself.  In fact, his teaching style is a lot like mine which pretty much is "&lt;span style="font-style: italic;"&gt;don't sweat the small stuff&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;I can tell that some of the more mature students in the class want to sweat the small stuff but hopefully they will come to terms that convention is more important... than let's say how fast bing-bong and doo-wap runs.&lt;br /&gt;&lt;br /&gt;Unfortunately, I haven't asked many questions in this section.  To be honest, I feel pretty comfortable and I feel pretty happy that I "get it."  I would like to get my name out there eventually.  I think the leader knows who I am though and he seems like a guy I'd like to get a beer with.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Pixies&lt;/span&gt;&lt;br /&gt;In Heaven&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Whelps, I think I'm doing well!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AsRrQLY5s_8&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/AsRrQLY5s_8&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2713286035959610732?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2713286035959610732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2713286035959610732' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2713286035959610732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2713286035959610732'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-168-week-4-update.html' title='CSCI E-168 Week 4 Update'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2842451374804101330</id><published>2009-09-25T11:36:00.000-07:00</published><updated>2009-09-25T13:16:55.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computer networks'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-131b Week 4 Update</title><content type='html'>We are already in week four of the semester, yikes!  And I am sorry that I have not been able to blog as often as I liked.&lt;br /&gt;&lt;br /&gt;Instead of a detail summary of the material that I am going over, I will talk about the class in general and how I feel about the program.   I would really like to make this blog more technical, but the courses are actually kicking my butt!  That might help me actually get around to writing and inform those curious about taking certain classes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Harvard Extension&lt;/span&gt;&lt;br /&gt;CSCI E-131b: Computer Networks and Internet Protocols&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;The first homework assignment was pretty difficult.  I probably wrote five pages at size eleven Arial font.  However, after going to section the other day I realized that I made the assignment much hard than it should have been.&lt;br /&gt;&lt;br /&gt;Basically the homework asked for, so it seemed, detailed responses to fairly technical questions.  For instance, draw a sliding window diagram for XYZ protocol.  Although I knew what a sliding window looked like, I didn't quite know how to show it in depth with the XYZ protocol.  Fortunately, our section leader told us that the responses did not have to be that technical at all but show that we understood the general idea.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class&lt;/span&gt;&lt;br /&gt;Attending class still seems to be entertaining.  I think that our professor, Len, is still an excellent presenter and I am happy to be there in person every week.  I have a habit of sitting in the front row but I suspect everyone in the back will have no problem listening to his lecture.  Unfortunately, I haven't tried listening to the stream of the class so I can't really judge how the recorded sessions are.&lt;br /&gt;&lt;br /&gt;In general, the class correlates strongly to the reading assignments and the homework.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Section&lt;/span&gt;&lt;br /&gt;So far we have only had two sections so far.  They happen to be on Thursdays around 6:30 PM in a cozy, old-school (ha!) room near Harvard Yard.  The section leader, Joe, is an amazing guy himself and could probably easily teach the class.  What I like about him is that he really tries to help us out, no matter how idiotic the questions may sound.&lt;br /&gt;&lt;br /&gt;The amount of students that show up has been pretty small so far.  About 10 students the first section and maybe 5 the next.  I recently decided to speak up more often in section because I really want to do well and no one seemed to mind.  Unfortunately, I probably asked about 9 of the 10 questions that were asked during the hour.  Cool-guy-Joe didn't seem to mind because it keep him busy scribbling on the blackboard.  I really enjoy the section and I find that it adds value to the overall course.&lt;br /&gt;&lt;br /&gt;Right now we're learning about the Ethernet and LANs.  A few questions that I asked were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Q:&lt;/span&gt; Does it ever make sense to use a hub over a switch if they were the same price?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A:&lt;/span&gt; No, in fact you it would be difficult to buy a hub these days.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Q:&lt;/span&gt; Does the switch-table keep track of other switches on the network?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A:&lt;/span&gt; No, switches do not have Mac Addresses!  But routers do.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Q:&lt;/span&gt; I find the IETF mailing list very intimidating and I do not see how I could ever contribute.  Is this normal?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A:&lt;/span&gt; YUP!  Those guys are geniuses.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;Pixies&lt;/span&gt;&lt;br /&gt;Hey&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Networking...  It's just one of those love/hate relationships.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Lnp9VjhDFYQ&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Lnp9VjhDFYQ&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2842451374804101330?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2842451374804101330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2842451374804101330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2842451374804101330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2842451374804101330'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-131b-week-4-update.html' title='CSCI E-131b Week 4 Update'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-8451355050655023645</id><published>2009-09-09T18:50:00.000-07:00</published><updated>2009-09-09T19:11:28.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='computation'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-207 Introduction to Formal Systems and Computation [Intro and CH. 1]</title><content type='html'>Theory scares me.  It is probably because I have tried to avoid it my entire life.  Maybe it is because I consider myself a practical person, not a theoretical person.  But to be honest that is not a fair argument.  As a computer scientist, I need to become familiar in this area and it is the primary reason I am taking this course, CSCI E-207.&lt;br /&gt;&lt;br /&gt;As of right now I do not understand much about computational theory other than a bit about big-O-notation.  And from several of the lectures and the reading assignments I have already looked at, there is a lot more that I more than I need to know.&lt;br /&gt;&lt;br /&gt;Instead of writing a summary, I think for this class I am just going to blog my thoughts for the time being.  I feel pretty uncomfortable about the topic to actually be writing about it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Book&lt;/span&gt;&lt;br /&gt;I think I enjoy the book so far.  It's "Introduction to the Theory of Computation" by Michael Sipser.  The author explains the material well but for some (including me) it is a bit too brief.  I am in the process in looking for a companion book to cover this topic.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Lecture Observations&lt;/span&gt;&lt;br /&gt;The professor is actually a little entertaining to listen to and he speaks very well and clearly.  The power-point slides are very useful and the professor hardly ever reads them word to word.  Actually, there are many times where he will break from the slides to question the class or illustrate a topic on the blackboard.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Current Assignments&lt;/span&gt;&lt;br /&gt;The first assignment seems is quite challenging.  There are a few easy questions (hurray) but plenty of different ones.  Unfortunately, the book does not cover all of the knowledge you must have to complete the problem set.  I believe that several of the problems are based off material only found on the course's power-point slides.&lt;br /&gt;&lt;br /&gt;Additionally, completing the assignment requires the acquisition of the Latex program -- to produce a pdf of all the formulas.  From what I hear Latex will be easy to learn but I am still trying to grasp it.  I do not believe the claims that the learning curve is only 20 minutes... Especially for math topics!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Run, Donnie.&lt;/span&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/icQHHxPlJMk&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/icQHHxPlJMk&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-8451355050655023645?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/8451355050655023645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=8451355050655023645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8451355050655023645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8451355050655023645'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-207-introduction-to-formal.html' title='CSCI E-207 Introduction to Formal Systems and Computation [Intro and CH. 1]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3226440991575506689</id><published>2009-09-04T14:03:00.000-07:00</published><updated>2009-09-04T14:23:33.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-168 Building Web-Based Software with Ruby and Ruby on Rails  [Lecture 1]</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Lecture Observations&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;We'll learn Ruby fundamentals, meta-programming, Rails fundamentals, Rails plugins, and Rails deployment.&lt;/li&gt;&lt;li&gt;We will not learn File I/O, Threading, Rails Internals.&lt;/li&gt;&lt;li&gt;Minaswan stands for "Matz is nice so we are nice."&lt;/li&gt;&lt;li&gt;There are THREE Teaching Assistants!&lt;/li&gt;&lt;li&gt;A bunch of code was presented fairly quickly and consumed the majority of the class.  It's wasn't worth taking notes about because it was all just part of the language and something you will have to learn.&lt;/li&gt;&lt;li&gt;It was interesting to hear that floating points must be evaluated with some rounding error, "==" will not always work correctly.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A few things that I want to learn more about were "mechanize" and the spaceship operator &lt;=&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Observations about the class&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;It's a very large class where more than 40 people showed up.&lt;/li&gt;&lt;li&gt;The facilities were pretty nice, but not as nice as the Maxwell Dworkin building!&lt;/li&gt;&lt;li&gt;The professor is a very calm and conversational lecturer who prefers to go by "John."&lt;/li&gt;&lt;li&gt;The lecture itself was very interesting and entertaining.  John puts in an effort to crack a few jokes.&lt;/li&gt;&lt;li&gt;Laptops were not recommended to bring to the class.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;A few thoughts...&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;I really liked the class and did not chicken out this time to introduce myself (see my last lecture...).&lt;/li&gt;&lt;li&gt;It's nice to actually talk to a professor and the TA for once in my life.  It isn't THAT scary.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ruby really does have that "friendly" aura about it.  It's actually kind of sad because the Java community always makes me feel un-welcomed (aka an idiot).  I haven't worked with many Ruby guys (any actually) so let's hope that it is different.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Speaking of chicken&lt;/span&gt;&lt;br /&gt;&lt;object style="font-weight: bold;" alt="Arrested Development Chicken Dances Funny Videos" height="376" width="464"&gt;&lt;param name="movie" value="http://embed.break.com/796328"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://embed.break.com/796328" type="application/x-shockwave-flash" allowscriptaccess="always" height="376" width="464"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.break.com/usercontent/2009/6/arrested-development-chicken-dances-796328.html"&gt;Arrested Development Chicken Dances&lt;/a&gt; - Watch more &lt;a href="http://www.break.com/"&gt;Funny Videos&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3226440991575506689?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3226440991575506689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3226440991575506689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3226440991575506689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3226440991575506689'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-168-building-web-based-software_04.html' title='CSCI E-168 Building Web-Based Software with Ruby and Ruby on Rails  [Lecture 1]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5196913392042437894</id><published>2009-09-04T13:15:00.000-07:00</published><updated>2009-09-04T14:03:27.988-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-168 Building Web-Based Software with Ruby and Ruby on Rails  [Intro and CH 1, 2, 6, 7, 4]</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I decided to take the &lt;a href="http://e168f09.plugh.org/"&gt;Ruby and Rails&lt;/a&gt; course because it's been one of those things that I haven't gotten around to.  I feel like I'm so used to Python that picking up Ruby would make me uber confused as I'm sure I'll still work on my python-google projects and want to work on a few Rails things as well.&lt;br /&gt;&lt;br /&gt;Will this help me find a job?  Who knows (I think several students come in thinking it will).  What I do hope is that it will help me get into Harvard Extension's Graduate program though.&lt;br /&gt;&lt;br /&gt;My prior experience with Ruby is from 2005 or so.  I was working on a military project and wanted to try building the multi-million dollar program in a developer-friendly framework (let me tell you it's not Struts).  I discovered Ruby from the beautiful &lt;span style="font-weight: bold;"&gt;Poignant Guide to Ruby&lt;/span&gt; and eventually found Rails from several hyped Slashdot articles.&lt;br /&gt;&lt;br /&gt;At the time, I built a few sys-admin tools using Ruby and probably bought the very first edition of the Pragmatic Series (pre-released in PDF form).  My manager didn't quite trust a framework that hasn't reached the "1.0" milestone. Everything was going really well until I discovered Python and the Django framework.  I kind of liked how Django wasn't spammed on Slashdot every day and I wanted to write the &lt;span style="font-weight: bold;"&gt;Poignant Guide to Python&lt;/span&gt;.  Ruby already had it's celebrity (&lt;span style="font-style: italic;"&gt;_Why&lt;/span&gt;)!&lt;br /&gt;&lt;br /&gt;Since then, I haven't looked back and now that I do it's a whole new world.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Chapter 1: Getting Started&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;The first chapter covers installing Ruby and the command prompt.&lt;/li&gt;&lt;li&gt;There's a bit on the Interactive Ruby shell (irb).&lt;/li&gt;&lt;li&gt;Ruby programs use the .rb file extension.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Chapter 2: Ruby.new&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A Class followed by the new method accesses it's constructor.&lt;/li&gt;&lt;li&gt;Ruby supports interpolation with #{ expression } to place code within strings.&lt;/li&gt;&lt;li&gt;Methods start with the &lt;span style="font-weight: bold;"&gt;def&lt;/span&gt; keyword and is closed with the &lt;span style="font-weight: bold;"&gt;end&lt;/span&gt; keyword.&lt;/li&gt;&lt;li&gt;Most variables start with a lower case letter (a convention).&lt;/li&gt;&lt;li&gt;Global variables start with a $, example $global_var_name.&lt;/li&gt;&lt;li&gt;Instance variables start with @, example @instance_var_name.&lt;/li&gt;&lt;li&gt;Class variables start with @@, example @@count_of_fingers.&lt;/li&gt;&lt;li&gt;A ruby hash supports any object as a key.&lt;/li&gt;&lt;li&gt;Ruby provides shortcuts to build arrays and hashes with the [] and {} symbols.&lt;/li&gt;&lt;li&gt;Ha, there's millions of shortcuts including %w{} to build an array of strings.&lt;/li&gt;&lt;li&gt;You can create a hash with a default value with Hash.new(def_val).&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Control Structures&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Blocks all close with the end keyword, but there's a shortcut to use {} to create a single line block.&lt;/li&gt;&lt;li&gt;while line = gets {} is an interesting block because first "line = gets" occurs before the while condition is evaluated.  The conditional is actually while (line) after the input is retrieved.&lt;/li&gt;&lt;li&gt;It's possible to place the if or while condition after the statement for brevity.&lt;/li&gt;&lt;li&gt;Yields are mentioned and I am confused...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Chapter 6: Standard Types&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;It is possible to handle rational and complex numbers. (I hope I never have to!)&lt;/li&gt;&lt;li&gt;You can cast a string as an integer with: Integer(some_string)&lt;/li&gt;&lt;li&gt;Ruby always tries to return the most natural result for an expression.&lt;/li&gt;&lt;li&gt;Working with numbers is just plain awesome:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;25.downto(20).with_index { |num, index| puts "#{index}: #{num}" }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interpolated code can consist of multiple lines!&lt;/li&gt;&lt;li&gt;There are shortcuts for creating strings, %q or %Q or %{}&lt;/li&gt;&lt;li&gt;Here documents allow you to wrote large blocks of text in your ruby files.  Basically you define a label to start and end a chunk of text.&lt;/li&gt;&lt;li&gt;The Ruby String class has over 100 standard methods.&lt;/li&gt;&lt;li&gt;There are two types of ranges, inclusive (..) and exclusive (...).  Both include the first number.&lt;/li&gt;&lt;li&gt;You can use ranges in conditions, to test if a number falls in a range.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Chapter 7: Regular Expressions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Not a fun chapter to read, but I'm sure it will be resourceful.  The stuff covered here is pretty darn complicated.&lt;/li&gt;&lt;li&gt;Luckily there are plenty of Ruby conventions to allow you to perform common RE tasks.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Chapter 4: Containers, Blocks, and Iterators&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Arrays hold references, not copies of objects.&lt;/li&gt;&lt;li&gt;You are allowed to use negative indexes and ranges to splice data.&lt;/li&gt;&lt;li&gt;Arrays themselves have tons of useful methods.&lt;/li&gt;&lt;li&gt;To loop through an array you can use the following syntax, though I think there's also a python way using a for loop.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;[1,2,3].each do |num| puts num end&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5196913392042437894?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5196913392042437894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5196913392042437894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5196913392042437894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5196913392042437894'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-168-building-web-based-software.html' title='CSCI E-168 Building Web-Based Software with Ruby and Ruby on Rails  [Intro and CH 1, 2, 6, 7, 4]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-680910633764668299</id><published>2009-09-03T08:26:00.000-07:00</published><updated>2009-09-03T09:19:29.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='internet architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='communication protocols'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-131b Communication Protocols and Internet Architectures [Lecture 1]</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Lecture Observations&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;To understand the internet architecture, you must understand the foundation.&lt;/li&gt;&lt;li&gt;The course is not a course on specific products (Cisco, etc).&lt;/li&gt;&lt;li&gt;It's also not a programming course.&lt;/li&gt;&lt;li&gt;We'll need to understand the error characteristics of wired vs wireless, and why to choose one over the other.&lt;/li&gt;&lt;li&gt;Network diagrams are always out of date, things change and boxes move.&lt;/li&gt;&lt;li&gt;How do telephone networks work?  I don't quite know but a few students did know know the transmission rates.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Transmission rate is based on distance.&lt;/li&gt;&lt;li&gt;Bit errors are rare, 1 error for every million bits.  As distance increases so does the probably of a bit error occurring.&lt;/li&gt;&lt;li&gt;It's typically that a particular server/room to only have one error in an entire 7 day span.&lt;/li&gt;&lt;li&gt;If an error occurs in a packet the whole packet is thrown away.&lt;/li&gt;&lt;li&gt;It was less expensive to layout a HUGE wire that could support 24 channels rather than to use a single wire with the latest packet switching technology.&lt;/li&gt;&lt;li&gt;Multiplexing is like asking the whole class to exit the front door.  We would have to form a single-file to squeeze out of the room.&lt;/li&gt;&lt;li&gt;Circuit-switching involved physically connecting wires to form a connection from Boston &gt; Providence &gt; Hartford &gt; New York&lt;/li&gt;&lt;li&gt;Fixed Time Division Multiplexing is easy to develop but inefficient.  Especially when certain connections are not being used.  It's more or less specifying a permanent time-slot for each connection.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The following are important components of a network: error correction, error detection, user interface, applications (voip, email, web), fragmentation, encryption, flow control, the physical interface, sequencing, addressing&lt;/li&gt;&lt;li&gt;A packet is encapsulated.  It has a header and a payload, where a payload may also have it's own header and payload.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Observations about Len Evenchik and the classroom&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;The classrooms in the Maxwell Dworkin are very high-tech and CLEAN.&lt;/li&gt;&lt;li&gt;This class is going to be online-only next semester and I am so glad I am able to experience this in person.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Professor Evenchik is very clear and I think he likes getting the class involved.&lt;/li&gt;&lt;li&gt;The TAs were introduce and I hope to meet them during the class meetings.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Occasionally he will sneak in a joke and some humor into the lecture.&lt;/li&gt;&lt;li&gt;There was one 3-5 minute break during the two-hour class.&lt;/li&gt;&lt;li&gt;The students in the class range from young to mature and was very diverse.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;A few thoughts...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;I was a little intimidated during class to ask a question.  I need to get over my fear of sounding "stupid".  At the end of the class I wanted to introduce myself to Len and I also chickened out.  I felt like just saying "Hi" would be a waste of his time. &lt;br /&gt;&lt;br /&gt;Next class, I will try to prepare a question from the reading...  Actually, I am having trouble understanding some of the exercises at the end of the chapter.  I wish there were more examples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-680910633764668299?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/680910633764668299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=680910633764668299' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/680910633764668299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/680910633764668299'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-131b-communication-protocols-and_03.html' title='CSCI E-131b Communication Protocols and Internet Architectures [Lecture 1]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-9072772514871834581</id><published>2009-09-03T06:20:00.000-07:00</published><updated>2009-09-03T10:36:18.700-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='internet architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='communication protocols'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-131b Communication Protocols and Internet Architectures [Math Stuff]</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Conversions and Numbers&lt;br /&gt;&lt;/span&gt;1 Byte = 8 bits&lt;br /&gt;&lt;br /&gt;Mbps is Mega-bits-per-second&lt;br /&gt;MB is Mega-bytes&lt;br /&gt;&lt;br /&gt;Kilo = 10^3&lt;br /&gt;Mega (Mbps) = 10^6&lt;br /&gt;Giga = 10^9&lt;br /&gt;&lt;br /&gt;Speed of Light is 2.3 * 10^8 on a wire&lt;br /&gt;&lt;br /&gt;100ms is a good cross-country round-trip-time (RTT)&lt;br /&gt;1ms is the RTT for a local area connection&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Equations&lt;br /&gt;&lt;/span&gt;Latency = Propagation * Transmit * Queue&lt;br /&gt;Propagation = Distance / Speed of Light&lt;br /&gt;Transmit = Size / Bandwidth&lt;br /&gt;&lt;br /&gt;Throughput = Transfer Size / Transfer Time&lt;br /&gt;Transfer Time = RTT +  Transfer Size / Bandwidth&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Exercises&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ch. 1&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;5-a.) Calculate the total time required to transfer a 1000 KB file, assuming RTT is 100 ms, packet size is 1 KB, and an initial 2 * RTT handshake is required.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First we need to know the equation for Transfer Time.  It's RTT + Transfer Size / Bandwidth.  We can determine the RTT parts right now.&lt;br /&gt;&lt;br /&gt;The handshake costs = .2 seconds (2 * 100 * 1/1000)&lt;br /&gt;The one way latency = .05 seconds ( RTT / 2 or (100 * 1/1000) / 2)&lt;br /&gt;Note, this times how long a packet travels from start to finish.&lt;br /&gt;&lt;br /&gt;The amount of time it takes to transfer the whole file is determined by:&lt;br /&gt;Transfer Size / Bandwidth or 1,000 KB / 1.5 Mbps = 5.3 seconds.  This can be calculated by:&lt;br /&gt;&lt;br /&gt;1,000 KB / 1.5 Mbps =&lt;br /&gt;8 * 1,000 * 10^3 / 1.5 * 10^6 =&lt;br /&gt;8 * 10^6 / 1.5 * 10^6 =&lt;br /&gt;8 / 1.5 =&lt;br /&gt;I did this freehand so I determined 5.3 by dividing 16 / 3 = 5.3&lt;br /&gt;&lt;br /&gt;Thus, adding the latency, handshake time, and how long it takes to transfer a file:&lt;br /&gt;.2 s + .05 s + 5.3 s = 5.55s&lt;br /&gt;&lt;br /&gt;It takes roughly 5.55 seconds (using a lot of approximations) to transfer the entire file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;** Will be updating throughout the course **&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-9072772514871834581?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/9072772514871834581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=9072772514871834581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/9072772514871834581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/9072772514871834581'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/csci-e-131b-communication-protocols-and.html' title='CSCI E-131b Communication Protocols and Internet Architectures [Math Stuff]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-7382330223189746752</id><published>2009-09-01T17:29:00.000-07:00</published><updated>2009-09-03T09:20:25.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='internet architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='communication protocols'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>CSCI E-131b Communication Protocols and Internet Architectures [Intro and CH. 1]</title><content type='html'>For Fall '09, Harvard Extension is offering a &lt;a href="http://www.extension.harvard.edu/2009-10/courses/21387.jsp"&gt;Communication Protocols &amp;amp; Internet Architectures with Len Evenchik&lt;/a&gt;.  The meetings are Mondays from 5:30-7:30 PM.&lt;br /&gt;&lt;br /&gt;I decided to take the class because the &lt;span style="font-weight: bold;"&gt;Web&lt;/span&gt; is my world and it's been a while since I understood &lt;span style="font-weight: bold;"&gt;how&lt;/span&gt; it actually works. Right now I see it as a bunch of TLAs (three-letter-acronyms) that scare the heck out of me.  &lt;span style="font-style: italic;"&gt;Why should I care about TCPs, UDPs and IPs? &lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; I'm just a developer!&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;But after working for a major newspaper and trying to run my own start-ups I realized that's an awful mindset to have.  I need to have a better picture of this whole world -- wide web -- that I love to work in.  At times I'm not just a back-end developer, I'm the front-end guru, or the database genius, the sys-admin g*d, etc, etc.&lt;br /&gt;&lt;br /&gt;Now let's get started.  In blogs titled "Communication Protocols and Internet Architectures" I'll be referencing the book &lt;span style="font-weight: bold;"&gt;Computer Networks&lt;/span&gt; by Larry L. Peterson and Bruce S. Davie (Fourth Edition).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Note: &lt;span style="font-size:100%;"&gt;All of my bullets can probably start off with the phrase "&lt;span style="font-style: italic;"&gt;I think that&lt;/span&gt;" or "&lt;span style="font-style: italic;"&gt;I don't really know but it seems like&lt;/span&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Sp3BY2mfIdI/AAAAAAAAAN8/6ZtqEaEHDek/s1600-h/cn_cs131b.jpg"&gt;&lt;img style="cursor: pointer; width: 325px; height: 400px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Sp3BY2mfIdI/AAAAAAAAAN8/6ZtqEaEHDek/s400/cn_cs131b.jpg" alt="" id="BLOGGER_PHOTO_ID_5376666162868199890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Chapter 1: Foundation&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;A &lt;span style="font-style: italic;"&gt;network&lt;/span&gt; was a term originally used to describe the relationship between remote terminals and a main-frame computer. Think using a keyboard and a LCD screen but having the Computer itself (CD-ROM, etc) 200 ft away.&lt;/li&gt;&lt;li&gt;Many networks are optimized for a specific task.  There are telephone networks, cable networks, and satellite networks to name a few.  Not all networks support computer, phone, or cable traffic as efficiently as another.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1.1 Applications&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;The World Wide Web (Web for short) is not the internet.  The Web is an application that uses the internet.&lt;/li&gt;&lt;li&gt;Everything selectable item on a web page has a special identifier.  It's referred to as a URL or URI (Universal Resource Locator/Identifier).&lt;/li&gt;&lt;li&gt;Every time you click on a URL, many messages are sent between you and remote computers.  Some include establishing connections and discovering IP-addresses in order to retrieve data.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1.2 Requirements&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Building the internet involves trying to please almost everyone.&lt;/li&gt;&lt;li&gt;Application programmers (speed), network designers (efficiency), and the network providers (administration) all have different goals.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1.2.1 Connectivity&lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Scale&lt;/span&gt; is a popular buzzword.  It means to support growth and typically refers to a system built to grow-and-grow-and-grow-and-grow.  The internet scales as new users and systems are added to it.&lt;/li&gt;&lt;li&gt;A &lt;span style="font-style: italic;"&gt;link&lt;/span&gt; is a connection between computers (a cable, fiber, or wireless).  Several machines sharing a link forms a &lt;span style="font-style: italic;"&gt;switched networked&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There are two main types of switched networks, &lt;span style="font-style: italic;"&gt;circuit-switched&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;packet-switched&lt;/span&gt;.  If you've ever watched Mad Men you'll occasionally see circuit-switched networks.  It's when -- way-back-when, a telephone operator would physically move widgets and doodads in order to get your call through.  I wasn't alive then but I imagine it looking like:&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sp3JN5QUheI/AAAAAAAAAOE/Gr60BB5j2eM/s1600-h/telephone_operator_maryland-735014.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 298px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Sp3JN5QUheI/AAAAAAAAAOE/Gr60BB5j2eM/s400/telephone_operator_maryland-735014.jpg" alt="" id="BLOGGER_PHOTO_ID_5376674770694997474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;Packet-switched refers to a trickier concept.  It's where packets (blocks of data) are passed from machine to machine, at times using shared resources and links.  Since ALL data cannot flow instantaneously, the data or packets "take turns."&lt;/li&gt;&lt;li&gt;A packet-switched network uses a store-and-forward strategy.  A machine will first save the data and then pass it to the next machine.  In your office you may have a piece of hardware called a switch whose primary function is to do this well.&lt;/li&gt;&lt;li&gt;The process of determining where certain packets go is called &lt;span style="font-style: italic;"&gt;routing&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.2.2. Cost-Effective Resource Sharing&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sharing a common resource such as a link is called &lt;span style="font-style: italic;"&gt;multiplexing&lt;/span&gt;.  It's how data from several machines can somehow "fit" on the same wire.  De-multiplexing is how the same data makes it off of the wire and to its destination.&lt;/li&gt;&lt;li&gt;There are several ways to share a resource.  The time-share way is called synchronous time-division multiplexing (STDM).  As you can imagine, it is sharing based on predetermined time-slots.  This can be inefficient when the time-slots are not being used.&lt;/li&gt;&lt;li&gt;Frequency division multiplexing (FDM) transmits data at different frequencies over the same resource.  I'm believe this is how we can cable-tv, internet, and phone through the same coaxial cable.&lt;/li&gt;&lt;li&gt;When computers talk to each other, the data is sent in smaller blocks of data called packets.  Occasionally, packets are lost or dropped when too much data is passing through a switch.  Remember store-and-forward?  When someone can't be stored (like a packet) it's good-bye!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.2.3 Reliability&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;There are three classes of network issues: bit errors (0s turning into 1s and vice versa), lost packets, and physical issues (blue-screen-of-death).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.3 Network Architecture&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A network architecture (blueprint) helps network designers plan and implement a network.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.3.1 Layering and Protocols&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Layering allows you to modify or add functionality at a specific layer.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A protocol provides a communication service that things (higher-language-objs) can use.&lt;/li&gt;&lt;li&gt;A protocol has two parts/interfaces (a service and a peer interface)&lt;/li&gt;&lt;li&gt;The service interface defines how software on the same computer can use the protocol.&lt;/li&gt;&lt;li&gt;The peer interface defines how to different machines can use the protocol to communicate.&lt;/li&gt;&lt;li&gt;A protocol specification defines how a protocol is designed and implemented.&lt;/li&gt;&lt;li&gt;Interoperate is a term used to describe two protocol modules that implement a specification, thus allowing communication.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.3.1 Encapsulation&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As there are different layers, or network modules, there are specific ways to handle the piece of data that is being transferred.  Encapsulation is a process of only showing a particular part of useful data to each particular module.&lt;/li&gt;&lt;li&gt;There are two main parts, the header and the payload.&lt;/li&gt;&lt;li&gt;The header is like a mailing label, it describes just enough information to know where a packet is heading and where it came from.&lt;/li&gt;&lt;li&gt;The payload is the data itself.&lt;/li&gt;&lt;li&gt;Encapsulation is a recursive process where each layer can wrap and unwrap a packet.&lt;/li&gt;&lt;li&gt;The demultiplexing key (demux key) seems to be an identifier to how messages were multiplexed and demultiplexed.  Maybe this helps a particular layer dissemble and reassemble a set of packets?&lt;/li&gt;&lt;li&gt;ISO is a common term: International Standards Organization.&lt;/li&gt;&lt;li&gt;They helped define a common way to connect computers using an architecture called Open Systems Interconnection (OSI).&lt;/li&gt;&lt;li&gt;It's more or less a 7-layer system (application [...] network)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.3.3 Internet Architecture&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The internet architecture is often called the TCP/IP architecture after its two main protocols.&lt;/li&gt;&lt;li&gt;The protocols, when illustrated top to bottom, for an hour-glass shaped figure where everything is funneled through a common IP layer.&lt;/li&gt;&lt;li&gt;The protocol modules at the top (application) and bottom (network) may be interchanged, while IP is necessary for any internet traffic.&lt;/li&gt;&lt;li&gt;Interesting enough, the layering is not strict and modules may leap-frog over a module... An application may use the IP protocol directly.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.4.1 Application Programming Interface (Sockets)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Operating System (OS) provides a way to hook into and use network protocols.  It's called an Application Programming Interface (API) or socket.&lt;/li&gt;&lt;li&gt;A protocol is a provider -- of a service -- and the API/socket is the syntax that the OS provides.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.4.3 Protocol Implementation Issues&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There are 2 main ways that an Operating System allocations resources for a network subsystem.&lt;/li&gt;&lt;li&gt;Process-per-protocol involves starting and stopping a process/thread for each layer or protocol module that's involved.&lt;/li&gt;&lt;li&gt;A protocol module is subsystem that handles a particular protocol (TCP, IP, UDP, etc)&lt;/li&gt;&lt;li&gt;Process-per-message involves allocating a process/thread for the message as it traverses through the entire network stack.&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;[??]  &lt;span style="color: rgb(204, 0, 0);"&gt;I am confused about what this all means.&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: normal;"&gt;The OS maintains an abstract data type for the message as it is handled by the system.  This allows for the OS to by-pass the store-and-forward process, not having to copy the message up and down the network stack.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.5 Performance&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Network designers build for performance.&lt;/li&gt;&lt;li&gt;Performance is measured by bandwidth and latency.&lt;/li&gt;&lt;li&gt;Bandwidth (heavily related to throughput) is how much data can be transmitted at a given time.&lt;/li&gt;&lt;li&gt;Bandwidth is constantly improving as technology improves.  More bits (1s and 0s) can fit on the same wire.&lt;/li&gt;&lt;li&gt;Latency (delay) is how long it takes data to reach its destination.&lt;/li&gt;&lt;li&gt;Its more important to measure latency by it's round-trip-time RTT.  This is how long data takes to reach its destination and back.&lt;/li&gt;&lt;li&gt;Bandwidth is more significant latency with larger file sizes.  Latency is significant when fewer packets are being transferred.&lt;/li&gt;&lt;li&gt;The specific amount of time that it takes to send a signal from one end to the other is called the propagation-delay.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.5.2 Delay x Bandwidth Product&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If the delay is how long, and bandwidth is how much at a time, then the product is the volume (of the channel/pipe).&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;[??] &lt;span style="color: rgb(204, 0, 0);"&gt;I'm not sure if I understand the significance.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.5.4 Application Performance Needs&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Some apps, such as video, can state a ceiling on how much bandwidth is needed.&lt;/li&gt;&lt;li&gt;Video can be compressed and only the bits that change from frame to frame can be sent.&lt;/li&gt;&lt;li&gt;Jitter describes the latency between packets or the interpacket-gap.&lt;/li&gt;&lt;li&gt;If you know the upper and lower bounds of latency on a network, you can delay the start of a video to wait in order to stream the video without any hiccups.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.6 Summary&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Networks must be cost effective.&lt;/li&gt;&lt;li&gt;The layered internet architecture defines a blueprint and the protocols are the means of communication.&lt;/li&gt;&lt;li&gt;The socket interface is the interface between applications and the OS networking subsystem.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Networks have an emphasis on high-performance.  Delay * Bandwidth is important in protocol design.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-7382330223189746752?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/7382330223189746752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=7382330223189746752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7382330223189746752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7382330223189746752'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/communication-protocols-and-internet.html' title='CSCI E-131b Communication Protocols and Internet Architectures [Intro and CH. 1]'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/Sp3BY2mfIdI/AAAAAAAAAN8/6ZtqEaEHDek/s72-c/cn_cs131b.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6723207087548617475</id><published>2009-09-01T16:16:00.000-07:00</published><updated>2009-09-04T08:41:03.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fall 09'/><category scheme='http://www.blogger.com/atom/ns#' term='graduaint'/><category scheme='http://www.blogger.com/atom/ns#' term='harvard extension'/><title type='text'>from harvard import education</title><content type='html'>I recently decided to start taking some Computer-Science classes at Harvard University's Extension College.  During the next three months I plan on sharing my education (as legally possible).  Hint, the economy and the job market probably had something to do with it.&lt;br /&gt;&lt;br /&gt;If you are one of my previous students, I hope you find this helpful.  If you're a friend... wish me luck!  I'll need it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Goals&lt;/span&gt;&lt;br /&gt;I am terribly excited and nervous about school.  Anxiety is probably my middle name -- or is it Modest.  I hope blogging about what I'm learning will help me overcome my insecurities.  But that's just a secondary goal.&lt;br /&gt;&lt;br /&gt;My main objective is to discuss the required reading and lectures -- probably through quick bulleted summaries.&lt;br /&gt;&lt;br /&gt;Additionally, I'll do my best to simplify the material and draw pictures when I have the time.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6723207087548617475?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6723207087548617475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6723207087548617475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6723207087548617475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6723207087548617475'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/09/ttyl-python-from-harvard-import.html' title='from harvard import education'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3823501413215978207</id><published>2009-08-12T08:44:00.000-07:00</published><updated>2009-08-12T09:10:53.990-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Keeping your AppEngine projects loaded in memory</title><content type='html'>After creating a new google app-engine project you might notice a delay when accessing your site.  What gives?!  You thought this was &lt;span style="font-weight: bold;font-size:130%;" &gt;Google&lt;/span&gt; right?  Stuff deployed on the app-engine should be fast...?! Right...? Am I Right?!!&lt;br /&gt;&lt;br /&gt;Well, &lt;span style="font-weight: bold;"&gt;yes&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;no&lt;/span&gt;.  To keep this simple, Google does not keep every application loaded in memory.  Whenever you site has not been accessed for 5 seconds, it will be dropped.  Thus, when you first go to your website it will need to loaded back in order to handle your request.  This causes a unfortunate and noticeable delay.  It makes showing your site to friends and colleagues a pain if it's not being constantly hammered by thousands of users.  People will just assume that you code &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;inefficiently&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Your website is SLOW!"&lt;/li&gt;&lt;li&gt;"I think your queries must suck or something?"&lt;/li&gt;&lt;li&gt;"Maybe you have too much JavaScript?"&lt;/li&gt;&lt;li&gt;"Have you thought of a CDN?"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To avoid silly questions like this, you can do something.  1) Market and make your website insanely popular or 2) HAMMER IT!&lt;br /&gt;&lt;br /&gt;Here's a super simple python script that will ping your website forever, thus keeping it loaded by Google.  You should be able to run this on a computer 24/7:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;import time, httplib&lt;br /&gt;&lt;br /&gt;urls = (&lt;br /&gt;"www.aboutaplace.com",&lt;br /&gt;"www.canihavea.com",&lt;br /&gt;"www.gaegigs.com",&lt;br /&gt;"www.yurlp.com"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;while(True):&lt;br /&gt;for u in urls:&lt;br /&gt;  try:&lt;br /&gt;    c = httplib.HTTPConnection(u)&lt;br /&gt;    c.request("HEAD", "/")&lt;br /&gt;    res = c.getresponse()&lt;br /&gt;    print "touched %s, %s %s" % (u, res.status, res.reason)&lt;br /&gt;  except:&lt;br /&gt;    print "could not touch %s" % u&lt;br /&gt;time.sleep(3)&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;To make this work for you, change the urls to your own domain.  I suggest making &lt;span style="font-weight: bold;"&gt;HEAD&lt;/span&gt; requests to keep the bandwidth minimal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3823501413215978207?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3823501413215978207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3823501413215978207' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3823501413215978207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3823501413215978207'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/08/how-to-keep-your-new-appengine-projects.html' title='Keeping your AppEngine projects loaded in memory'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-522791814551262591</id><published>2009-08-04T15:56:00.001-07:00</published><updated>2009-08-04T16:07:15.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google wave'/><title type='text'>Wave Rocks and Sucks because...</title><content type='html'>&lt;span style="color: rgb(51, 51, 51);"&gt;So I was playing with wave and I was actually able to delete a few people's conversations... Sorry!  I really didn't mean to... &lt;span style="font-style: italic; color: rgb(102, 102, 0);font-size:180%;" &gt;*sigh*&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;While perusing a waves I came across one named &lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);font-size:100%;" &gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Discoveries and Observations about Wave&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; and it's worth sharing with the rest of the world. Personally, I can see why some people love wave but I don't see it being &lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-size:130%;" &gt;&lt;span style="font-style: italic;"&gt;all that and a bag of chips&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; the way it is right now.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;WAVE ROCKS&lt;/span&gt; BECAUSE...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The pattern of write-reply communication is rampant in today's internet software solutions. Blogs, forums, chat, social sites, the classic "guest book", etc. are all write-reply patterns. Wave builds on this pattern while leveraging today's browser technologies and the user's higher bandwidth connection to both consolidate these technologies into an open platform for real-time, social communication.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Mixing realtime IM/Threading/document-collaboration is a great idea.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Aug 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mario Viviani:&lt;/span&gt;&lt;br /&gt;in my opinion Wave is going to be the Super-Social Network. I mean that this stream-oriented flux of informations will obviously be used to share "social" informations. Think about organizing a meeting with your friends using Wave: it's much less complicated than using Facebook or Twitter.. With wave it's easier discuss about a video or a link.. In this way, i think Wave is going to be super-used by actual Social Network users.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Aug 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mickael Faivre-Maçon:&lt;/span&gt;&lt;br /&gt;right now, facebook is easier than wave.... I don't see wave as a social network thingy.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wave as an open standard will revolutionise the interwebs.&lt;/li&gt;&lt;li&gt;Wave can become a platform to collaborate and communicate in for other applications.&lt;/li&gt;&lt;li&gt;Can make other applications easily accessible over the web in standardized way.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Aug 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Omar Balbuena:&lt;/span&gt;&lt;br /&gt;I see. I don't understand what is being standardized though. Maybe user credentials?&lt;br /&gt;I just find it weird to see "new features" and "standardization" in the same sentence, it's an oxymoron and it still doesn't make sense to me. Familiar interface maybe?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Having multiple people working on one document will decrease work time ten-fold!&lt;/li&gt;&lt;li&gt;Seeing exactly what people are working on will save time.&lt;/li&gt;&lt;li&gt;Will remove necessity of having multiple communication platforms (im, e-mail, forums, letters, smoke signals)&lt;/li&gt;&lt;li&gt;You can read while they are typing, conversations become much quicker.&lt;/li&gt;&lt;li&gt;It puts almost no constraints in how you shape communication at any point in time (an email can become a conversation can become a chat can become a document can become a game)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;WAVE SUCKS&lt;/span&gt; BECAUSE...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Robots can fundamentally break the wave experience (e.g. groupy)&lt;/li&gt;&lt;li&gt;And there is currently no way of removing ones that you add.&lt;/li&gt;&lt;li&gt;Permissions and wave management (kicking people etc...) are currently too limited&lt;/li&gt;&lt;li&gt;It's bewildering; I can't see the things that are interesting to me or get rid (easily or obviously) of the things that I don't care about&lt;/li&gt;&lt;li&gt;Difficult to give priority to different waves. Some may need attention more than others.&lt;/li&gt;&lt;li&gt;Wave is more complicated than alternatives such as email/forums etc... It risks alienating the less technically capable.&lt;/li&gt;&lt;li&gt;Needs more visual cues for when/where other editors are when editing the wave document.&lt;/li&gt;&lt;li&gt;Needs more server CPU added in current dev preview :)&lt;/li&gt;&lt;li&gt;Puts a lot of stress on the Javascript engine (currently works better using v8, no surprise there)&lt;/li&gt;&lt;li&gt;Though when Wave becomes an open standard, we can hope to see non-browser implementations also&lt;/li&gt;&lt;li&gt;No chrome on Mac yet, so can't test... http://www.google.com/chrome/intl/en/eula_dev.html?dl=mac go download it :D&lt;/li&gt;&lt;li&gt;I tested Wave in MacOS Chrome and it crashed after 2 min. Too early for the transation weight of Wave&lt;/li&gt;&lt;li&gt;Refactoring threaded conversations is painful with the existing wave client.&lt;/li&gt;&lt;li&gt;Drag/drop restructuring of threads and easier deletion of wavelets would be handy (via a keyboard shortcut).&lt;/li&gt;&lt;li&gt;It may be difficult to get wide adoption because people will have to learn something new, and that in turn may significantly decrease usefulness of the platform.&lt;/li&gt;&lt;li&gt;Feels wrong, in such an application-like environment, to not have right click menus&lt;/li&gt;&lt;li&gt;Too hard to see who has edited what.&lt;/li&gt;&lt;li&gt;it hammers the hell out of my firefox&lt;/li&gt;&lt;li&gt;it's difficult to see when it's doing something, like is it fetching data or just sleeping. Feels like it needs a progress bar&lt;/li&gt;&lt;li&gt;It puts almost no constraints in how you shape communication at any point in time (you never know what you are supposed to be doing)&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Jul 31&lt;br /&gt;Omar Balbuena:&lt;br /&gt;I don't see why that is bad.&lt;br /&gt;&lt;br /&gt;Jul 31&lt;br /&gt;Anton Babushkin:&lt;br /&gt;Having no clear direction is always bad, especially for those who are simply "meh" and don't want to put too much thought into things (i.e. your regular user)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is essentially a new type of mail, yet, isn't backwards compatible (e.g. being able to send emails with it would be useful for those without wave)&lt;/li&gt;&lt;li&gt;Much information is lost when the wave turns into a rant, could be a problem for longer waves.&lt;/li&gt;&lt;li&gt;Can't get to the newest item in a Wave easily. When there's lots of items, it would be convinient for a keyboard shortcut (left arrow?) to go to the newest item, which may, in some cases, not be the bottom.&lt;/li&gt;&lt;li&gt;I don't like scroll bars but I don't like that my cursor keys don't work line at a time. They're more like page keys. Fine on the small entries but entries like this one that are bigger than a page, it fails badly.&lt;/li&gt;&lt;li&gt;I hate to scroll back to find edit/reply button when the comment is too long. ditto 'done' button at bottom.&lt;/li&gt;&lt;li&gt;The search isn't good enough. If I was adding someone called "Fred" to a Wave, and my criteria was "fred" then it wouldn't find "Fred"&lt;/li&gt;&lt;li&gt;Hard to see what's new in a wave when there has been a lot of edits&lt;/li&gt;&lt;li&gt;Navigation (e.g. the center list of waves, content on the right) is a little archaic feeling.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Thank you Dion Hinchcliffe for starting this wave.  I agree with most of your points.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-522791814551262591?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/522791814551262591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=522791814551262591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/522791814551262591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/522791814551262591'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/08/wave-rocks-and-sucks-because.html' title='Wave Rocks and Sucks because...'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6842192011879767360</id><published>2009-08-04T11:00:00.000-07:00</published><updated>2009-08-04T11:08:43.978-07:00</updated><title type='text'>Google Wave Frequently Asked Questions (FAQ)</title><content type='html'>&lt;div id="faq"&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 0);"&gt;I found this on a Wave and though it was worth putting up on a public blog.  Cheers!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-weight: bold; font-size: 3em;" t="h1"&gt;WaveFAQ&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;&lt;span style="font-style: italic;"&gt;This is a public FAQ. Please feel fre&lt;/span&gt;&lt;span style="font-style: italic;"&gt;e to edit the top portion, keeping it clean and concise, deleting redundant text. As Wikipedia says, "Be &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Bold&lt;/span&gt;&lt;span style="font-style: italic;"&gt;".&lt;/span&gt;&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+hhLCQlH-%A" class="JGB"&gt;&lt;div dc="focusFrame"&gt;&lt;div class="BIB"&gt; &lt;div class="KIB"&gt;&lt;/div&gt; &lt;div class="IIB"&gt;&lt;/div&gt; &lt;div class="JIB"&gt;&lt;/div&gt; &lt;div class="PIB"&gt;&lt;/div&gt; &lt;div class="FIB"&gt;&lt;/div&gt; &lt;div class="OIB"&gt;&lt;/div&gt; &lt;div class="MIB"&gt;&lt;/div&gt; &lt;div class="NIB"&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;&lt;span style="font-style: italic;"&gt;The content of this FAQ is licensed under the Public Domain, so as to be compatible with Wikipedia et al. You are considered to agree to that by editing here.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;&lt;span style="font-style: italic;"&gt;If you really want to add a wave comment or reply, do so at the bottom, rather than inserting it inline in the actual FAQ where it will break the flow. But &lt;/span&gt;&lt;span style="font-style: italic;"&gt;in&lt;/span&gt;&lt;span contenteditable="false"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Wikipedia style, we'll probably want to split commentary off to another "discussion" wave somehow, so &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;don't count on your comments staying here&lt;/span&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Getting started&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Why don't I know what to do when I get here?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was difficult to figure out this much. It appears we need a welcome wave when we join the service to understand how it works.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=1969666845951186091#restored:wave:wavesandbox.com%21w%252BywmqSkT9%25254"&gt;Welcome to Wave&lt;/a&gt; has links to several other getting started&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+eialUobq%A" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt; waves created by Wave developers to help you learn the UI, keyboard shortcuts, how to use search to manage your workspace.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;As of July 23, search for public waves has been implemented. For more info try these searches:&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;with:public tag:welcomewaves&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;with:public tag:help&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;with:public tag:faq&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Where is the documentation?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Resources within the Sandbox.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;with:public tag:welcomewaves&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Resources Outside of the Sandbox&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fcode.google.com%2Fapis%2Fwave%2Fguide.html"&gt;Google Wave API Overview&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fcode.google.com%2Fapis%2Fwave%2Fextensions%2F"&gt;Wave Extensions&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fsites.google.com%2Fa%2Fwaveprotocol.org%2Fwave-protocol%2Fdraft-protocol-spec"&gt;Google Wave Federation Protocol&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Where is the sample code?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fcode.google.com%252Fapis%252Fwave%252Fsamples%252Findex.html"&gt;http://code.google.com/apis/wave/samples/index.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Sharing waves&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Public waves&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A public wave is a wave that all users with a sandbox account can access even if they are not explicitly added as participants of the wave.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;Note: If you want to see updates to a public wave in your inbox, you must become a participant of the wave. Another option (see below) is to define and save a search that would return the wave and check Searches folders instead of the inbox.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do you make a wave public?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To allow all users access to your wave, add the special address public@a.gwave.com as a participant of the wave.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: You can link to a public wave and anyone [with a sandbox account?] will be able to open it and participate in it. However, unlike sending it to them directly or via a group it does not spam their Inbox.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do we find/lookup this user?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You need to add public@a.gwave.com to your contacts (either through the external contacts manager or through the wave client).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do you then share that wave with other users? Ctrl+L and wave ID to create a link?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[If you are using Chrome] you can drag and drop your wave into other waves to create a hyperlink.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's also possible to select "get wave ID" from the Debug menu at right top of the page. Copy this url, mark some text you want to transform&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+m8gVx3Ul%A" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt; into the wave link and press ctrl+l. You will get a popup window where you can paste your wave ID. Note: You must be in edit mode to do this.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How can I find other public waves?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As of July 23, public waves are searchable.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;with:public&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can refine the search in various ways. For example,&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;with:public tag:help&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;with:public about:avatar&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What does yellow box 'The wave is published at an unknown url.' at the top of the wave mean?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It means that the wave has a public url.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Why do I get the message "You are not a participant  in this wave"?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;The wave is not a public wave and you are not a participant.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;The link to the wave is wrong.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;You are a participant via the wave-discuss group but you were not a member of the wave-discuss group at the time the wave-discuss group was added to the wave.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Embedding waves&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I embed a Wave to my blog?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fcode.google.com%2Fapis%2Fwave%2Fembed%2Fguide.html"&gt;Wave Embed API Tutorial&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is it true that embedded wave can only be viewed in browsers with Google Gears &amp;gt;=0.5.21.0?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No, you can also view it with earlier versions (0.5.19.0 works for example), but drag-and-dropping images is not supported in earlier versions.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do you add yourself to a wave (like this one) without editing it or adding a comment?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click the "+Add" button that is in the top bar with all of the other participants' avatars. Type your own username in the search box that appears and hit enter.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is an embedded Wave viewable by non-Wave users?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No. Currently, you need a Wave account to view the embedded Waves.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Future?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What will happen to our sandbox accounts when Wave goes public?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Brian Kennish: We're going to try to migrate data, but &lt;span style="font-weight: bold;"&gt;no guarantees&lt;/span&gt;. You should treat everything in the sandbox as though it might get deleted.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Can my other friends who did not go to Google I/O sign up to use the dev preview of Wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have them fill out the &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=https%3A%2F%2Fservices.google.com%2Ffb%2Fforms%2Fwavesignupfordev%2F"&gt;Google Wave Sandbox Account Request&lt;/a&gt; and the Wave devs will get them on as soon as possible (which will likely be a few weeks at the earliest). Source: Gregory Dalesandrev&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Browsers&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What browser release should I be on?&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Chrome&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;You&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+gFb__2iH%B" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt; can switch between the chrome "channels" (stable, beta, dev) using the channel changer.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Firefox&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;3.0+ is recommended, though 2.0 seems to work (though not that well)&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Safari&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;4.0 seems to work okay&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;iPhone 3G2 V. 3.2 works okay, little slow&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Internet Explorer and Opera are not supported&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Midori (linux experimental build )&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Editing in a wave&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Why is there no "modeless" editing?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have to click the pen at the top of the wavelet and then the done button on the bottom. Isn't that unnecessary?&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Why is still unknown. However keyboard shortcuts ease the pain. For example:&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;To edit a document (blip), select it and press Ctrl-e.&lt;br /&gt;&lt;/div&gt;&lt;div class="simulated-li bullet-type-1" style="margin-left: 28px;" t="li" i="1"&gt;To save your edits, press Shift-enter.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Are there any keyboard shortcuts?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes. See the &lt;a href="http://www.blogger.com/post-create.g?blogID=1969666845951186091#restored:wave:wavesandbox.com%21w%252BywmqSkT9%25256"&gt;Keyboard Shortcuts Cheat Sheet&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Edit Toolbar&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Add your comments to the &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fcode.google.com%2Fp%2Fgoogle-wave-resources%2Fissues%2Fdetail%3Fid%3D78"&gt;Issue 78 at &lt;/a&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fcode.google.com%2Fp%2Fgoogle-wave-resources%2Fissues%2Fdetail%3Fid%3D78" style="font-weight: bold; color: rgb(0, 0, 0);"&gt;google-wave-resources&lt;/a&gt; to show support for a floating edit toolbar.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Links&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I add a link?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click on the G+ tool and search for it.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;But how do I insert a link when I already know the URL?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Select some text, then hit Ctrl+L and it will open a window where you can paste a save id or URL.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want to link to another wave, open a document (blip) in Edit mode and drag a wave into it. [Chrome only?]&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;If I can't drag a wave to create a link, how do I find the wave ID to link to?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Get the wave ID from the Debug menu.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I remove a link?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You edit the wave and delete it.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Tags&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I tag a wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click the small (+) button below the wave. Type the tag and then press return.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Current tags appear to the left of the button.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1.66667em;" t="h3"&gt;Replies&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;How do I create an inline reply?&lt;/span&gt;&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+wxaLFzv4%D" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Two ways:&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Select (highlight) the text you want the inline reply to appear after&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+BPCcMKsW%A" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt; and press ENTER.&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+DzzTlp_C%A" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Select a blip. Press Ctrl-e. If necessary reosition the cursor where you want the inline blip to be position (without adding any space). The press Ctrl+Enter.&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+8WPYKp54%A" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I move the inline replies around in the wave&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Inline blips can be folded/unfolded by clicking on the little speech bubble with a plus inside. If folded you can easily drag the bubble around.&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+HR-SbtDE%C" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt; Unfortunately dropping does not work right now.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;You can delete them by folding them (see above) and hitting backspace when the cursor is right before the bubble icon.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;This will delete the blip and all its children.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" i="1"&gt;Note: You can't recreate them as they were so make sure the content is preserved.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;There is also a menu in the upper right corner of each document (blip) in a wave with a "delete" option.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is it possible to configure a wave so that by default when first viewed, all inline comments are folded, or to fold all comments in a wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not yet but it is something that is planned.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is there any way to create a private inline reply?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not currently.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only workaround is to publicly reply inline with an empty message, and then add a private reply to your all blank message.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I embed an mp3 player like from &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252FBandcamp.com"&gt;Bandcamp.com&lt;/a&gt;?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Bugs&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I report a bug?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is noted as a current issue. Clicking on "Report a bug" in the upper right leads to this url which doesn't work (I get "Firefox can't find the server at b.", at least outside google I presume): &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fb%252FcreateIssue%253Fnotes%253D%255BEnter%252Ba%252Bquick%252Bdescription"&gt;http://b/createIssue?notes=[Enter+a+quick+description&lt;/a&gt; ....&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Is there another visible way to get to a bug tracker or should we just wait for the issue to be fixed?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fcode.google.com%252Fp%252Fgoogle-wave-resources%252Fissues%252Flist"&gt;http://code.google.com/p/google-wave-resources/issues/list&lt;/a&gt; is the official bug reporting place according to &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Ftinyurl.com%252Fofl5fs"&gt;http://tinyurl.com/ofl5fs&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Are there any tweaks to make Wave run with fewer resources?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I open this FAQ Wave, Chrome's memory usage spikes up to 280MBs for at least a few minutes and my machine becomes unresponsive even in other apps. Mem is now back down to about 200MBs for this process. Not as bad as Outlook but still high.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;No, not presently.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Why do I get "Wave has no contents. Consult backend logs for wave id" and "Everything's shiny, Cap'n. Not to fret!" Unfortunately, you'll need to refresh." on some waves?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fcode.google.com%252Fp%252Fgoogle-wave-resources%252Fissues%252Fdetail%253Fid%253D20"&gt;http://code.google.com/p/google-wave-resources/issues/detail?id=20&lt;/a&gt; link to bug report. We think we know why this happens, read the issue above or the "known issues" wave discussion of casing of contact names. .&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is there some way to make the Debug menu smaller?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not at present. It's likely it will go away soon.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Contacts, Avatars&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I add contacts?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before you can invite someone to collaborate on a wave, they must be in your list of contacts.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Select their contact card.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Select &lt;span style="font-weight: bold;"&gt;Add to contacts&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I use the Search box in the Contacts panel, I can't find other people in the sandbox.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;The Search box returns only names in your Contacts&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Finding contacts&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a link to search for contacts contacts page (it seems as if Wave is part of a Google Apps installation on &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fwavesandbox.com"&gt;wavesandbox.com&lt;/a&gt;) that goes straight to the familiar Gmail contacts page, only that the contacts there are from @wavesandbox.com.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The search on that contacts page seems to be not fully functional. I can find 73 (Test) accounts when searching for "test" but 3 or 4 when searching for "e".&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can add contacts to groups and then they are visible on the Wave main page in the 'Contacts' box.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I delete contacts from my Contacts panel?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At this point, the only way to delete contacts is by managing them with the regular contacts Google Apps. For that, go to &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fwww.google.com%252Fcontacts%252Fa%252Fwavesandbox.com"&gt;http://www.google.com/contacts/a/wavesandbox.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I change my avatar/profile picture?&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;At the top of the "Contacts" panel, click the picture/placeholder to the left of your name, and select "Change photo" to open gmail settings.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;To make your avatar visible to others be sure to make it publicly available.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: It can take a little while to take effect or you may need to refresh your browser.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Participants&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I delete participants in a wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not yet implemented.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it is implemented, click on the contact card and select, Remove &amp;lt;username&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Could we add read-only participants?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not yet implemented but it's planned. (per Gregory Dalesandre, June 3, 2009)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;I made a public wave by adding public@a.wavesandbox.com but it doesn't appear as a participant.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At some point, it stopped getting added to the participant list but you can tell it worked if you get the yellow banner which reads "The wave is published at an unknown url."&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Navigation&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Does the Navigation dialog have a scroll bar? It seems like it's kinda cropped oddly or something?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The scroll bar is displayed only when you have user-defined searches or folders that don't fit in the Navigation panel&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What does the mute function mean? Can I unmute something?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When a wave is muted, it will not appear in your inbox even when there is new content in the wave.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;In order to 'unmute' a wave, you should move it back to Inbox (via the Move to command).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Are there currently problems with archiving items out of the inbox?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I searched for with:wave-discuss and saved the search with the auto-archive option. However, my inbox is still filled with existing waves. I click on one or shift click on a range of them and click the Archive button, but nothing happens.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Per &lt;a href="http://www.blogger.com/post-create.g?blogID=1969666845951186091#restored:wave:wavesandbox.com%21w%252B1SflrTxi%25252"&gt;Known Issues with Wave&lt;/a&gt;, "archive still a bit flaky".&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Workaround: Treat your inbox as an RSS feed and create and save user-defined searches to track topics or people with whom you want updates.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Will the wave client source be released at some point?&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Steph says they don't know yet.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 14px;" class="simulated-li bullet-type-0" t="li"&gt;Seem that they've just (27 July) released some &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fgooglewavedev.blogspot.com%2F2009%2F07%2Fgoogle-wave-federation-protocol-and.html"&gt;simple prototype code for server and client&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+vqBbTF5k%C" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How to use playback backwards?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to follow the last (say) 10 entries I need to jump from the g of the slider all the way to the end and move backwards (in large waves this usually doesn't work before I get the Refresh msg)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Are there plans to allow sorting of the blips within a wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seeing the newest waves at the top is sometimes more useful. Seriously this is a much-needed feature. We need blip-sorting asap :(&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 2.33333em;" t="h2"&gt;Extensions and Robots&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How can I add my own Robot or extension to a wave?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Each robot has an address looking like an email. You just add it to a wave like any other contact.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To add an extension see the documentation at this link &lt;a target="_blank" href="http://www.google.com/url?sa=D&amp;amp;q=http%253A%252F%252Fcode.google.com%252Fapis%252Fwave%252Fextensions%252F%2523installing"&gt;http://code.google.com/apis/wave/extensions/#installing&lt;/a&gt; I've tried this myself with an extension I wrote and it works fine.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What is settie@gwave.com doing?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently nothing. But it will show and enable the modification of wave settings in the future.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What are some robots to try?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can add "polly-wave@appspot.com" or "tweety-wave@appspot.com". Both these robots were demoed during the Keynote.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See [Google-Wave Extensions List]&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Is Rosy the translator bot working?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No. She is on vacation at the moment. (as of Jul 22, 2009)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Add rosy@wavesandbox.com as a contact, then add "her" to your waves, and she will translate between 40 languages.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;And how can I tell Rosy from which language to translate?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;What is a "been soup" test?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's a section of the "Google Wave I/O Developer Preview" where Lars demonstrates the context sensitivity of the spell checker with "I want some been soup. It's bean a long time." Along with "icland is an icland" (yes, the same non-word twice) which corrects to "Iceland is an island".&lt;span class="IKB HKB" unselectable="on" contenteditable="false"&gt;&lt;div style="display: none;" class="MHB OHB"&gt;&lt;div title="Hide replies" class="button AIB up cat enabled"&gt;&lt;/div&gt;&lt;div style="display: none;" class="JKB PHB"&gt;&lt;div class="PKB" dc="blipThreadItemContainer"&gt; &lt;div unselectable="on"&gt; &lt;div class="fs bbfp bbnw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="yr bbfp bbw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbsw" unselectable="on"&gt;&lt;/div&gt; &lt;div class="xr bbfp bbs" unselectable="on"&gt;&lt;/div&gt; &lt;div class="fs bbfp bbse" unselectable="on"&gt;&lt;/div&gt; &lt;/div&gt;    &lt;div style="display: none;" dc="blipId=b+BPCcMKsW%B" class="JGB"&gt;&lt;div class="MGB" style="display: none;"&gt;&lt;/div&gt; &lt;div style="display: none; opacity: 0;" class="AHB"&gt; &lt;div class="CHB"&gt;&lt;/div&gt; &lt;div class="BHB"&gt;&lt;div dc="reply" title="Reply to this message" class="button PGB GHB up cat enabled"&gt;&lt;/div&gt;&lt;div style="" dc="edit" title="Edit this message" class="button PGB NGB up cat enabled"&gt;&lt;/div&gt;&lt;div dc="menu" title="More actions" class="button PGB EHB up cat enabled menu off"&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="DHB"&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" title="Continue the conversation here" class="KKB"&gt;&lt;div class="OKB"&gt;&lt;/div&gt; &lt;div class="MKB"&gt;&lt;/div&gt; &lt;div class="NKB"&gt; &lt;div class="LKB"&gt;&lt;/div&gt; &lt;span&gt;Continue&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Spell checking doesn't always work. What's wrong?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Spelly participates automatically in all waves.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if it's not working, just be patient and check back later.Well, it seems like Spelly is under heavy development and is sometimes not available/broken.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;How do I turn off the Swedish Chef robot?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Add LEAVEMEALONE in all caps to your document (blip).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;you can also use Bouncy the bouncer add bouncy-wave@appspot.com and then type bounce:robot@appspot.com&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold; font-size: 1em;" t="h4"&gt;Why do I keep getting security errors?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Someone probably added the Risk Gadget to your wave. The Risk Gadget is evil.&lt;br /&gt;&lt;/div&gt;&lt;div _t="title"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6842192011879767360?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6842192011879767360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6842192011879767360' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6842192011879767360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6842192011879767360'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/08/faq-p-margin-0-wavefaq-this-is-public.html' title='Google Wave Frequently Asked Questions (FAQ)'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-7208784459420909691</id><published>2009-08-04T09:59:00.000-07:00</published><updated>2009-08-04T10:39:46.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Wave First Impressions, Sorry Google!</title><content type='html'>I recently logged onto &lt;a href="http://www.wavesandbox.com/"&gt;Google Wave&lt;/a&gt; with my developer's key and here are my initial and &lt;span style="font-style: italic; color: rgb(204, 0, 0); font-weight: bold;"&gt;raw&lt;/span&gt; impressions.  Please keep in mind that Wave is in a development state and any of the issues I may be mentioning will be resolved eventually!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;LOGGING&lt;/span&gt; IN&lt;/span&gt;&lt;br /&gt;The log-in process is relatively easy.  Google e-mailed me my user name and password and there were no issues.  I would like to note that you if you try to use your full Wave e-mail address you will be prompted with a log-in error.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;THE WAVE&lt;/span&gt; DASHBOARD AND LAYOUT&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SnhpMgaW79I/AAAAAAAAANc/dCL2rc9ApUU/s1600-h/Picture+9.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SnhpMgaW79I/AAAAAAAAANc/dCL2rc9ApUU/s400/Picture+9.png" alt="" id="BLOGGER_PHOTO_ID_5366154619591782354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you log into Wave, you're redirected to the dashboard.  It's very similar to the G-mail process but a LOT more sluggish.  When Wave first loaded on my Ubuntu laptop, I was prompted with an error where Google wanted to know what I did to break the 'experience.'  I believe I wrote:&lt;br /&gt;&lt;blockquote&gt;I just logged in.  For some reason it broke.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Okay, so logging back in the first thing I noticed was how 'sluggish' the interface felt.  I opened Wave on my MacBook and noticed the same feeling.  I am sure this will be improved.  However, one glaring issue that I saw was how Wave looks a lot like OutLook/Entourage.  Within your middle-well you have all of your messages and on the right-well you have the message that you've opened.  This might work well on desktops but not on a laptop.  With my 13", 15", and 17" screens and playing around clicking on messages this was an &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;AWFUL&lt;/span&gt;&lt;/span&gt; experience.  G-mail works because each message utilizes the majority of your screen to read a message.  I hope Wave becomes more laptop/smaller screen friendly in the future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MAILBOX&lt;/span&gt; OF SPAM&lt;br /&gt;&lt;br /&gt;Again, I'm new to Wave and I may not understand how everything currently works.  It is wierd that when you log in you have thousands of 'waves' in your mailbox.  I guess it's similar to connecting to a newsgroup but I definitely was not expecting that.  I suppose I assumed it would look and feel like 'gmail'.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SnhphXIQdOI/AAAAAAAAAN0/RqnbjA76yKs/s1600-h/Picture+13.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 334px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SnhphXIQdOI/AAAAAAAAAN0/RqnbjA76yKs/s400/Picture+13.png" alt="" id="BLOGGER_PHOTO_ID_5366154977877193954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;This is annoying to me because a significant portion of these 'waves' in my mailbox are unreadable!  If you try to click on them, you will be prompted with:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SnhpbTt01jI/AAAAAAAAANs/9lEtEa6AnY8/s1600-h/Picture+12.png"&gt;&lt;img style="cursor: pointer; width: 376px; height: 80px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SnhpbTt01jI/AAAAAAAAANs/9lEtEa6AnY8/s400/Picture+12.png" alt="" id="BLOGGER_PHOTO_ID_5366154873881810482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why show someone an e-mail if they can't read it?  If I'm not a participant for a wave, then how can I request access?  It wasn't obvious where to click or go.  That said, it also isn't clear how to delete a wave (e-mail) that you created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SLUGGISH&lt;/span&gt;&lt;span&gt;NESS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, maybe playing with Wave at 11:30 AM on a Tuesday was a bad thing to do.  Not only did the interface act unresponsive, the glitches were popping up all over the place.  Yay, development stage!  :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SnhpVD_r_hI/AAAAAAAAANk/z-jpFVnRR0k/s1600-h/Picture+11.png"&gt;&lt;img style="cursor: pointer; width: 326px; height: 225px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SnhpVD_r_hI/AAAAAAAAANk/z-jpFVnRR0k/s400/Picture+11.png" alt="" id="BLOGGER_PHOTO_ID_5366154766582545938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;SUGGESST&lt;/span&gt;&lt;span style="font-size:130%;"&gt;IONS&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I think Wave may become an invaluable tool but I don't see it yet.  My biggest gripe is the User Interface and I wish it was a lot less cluttered.  The G-mail UI is excellent probably because it's simple and makes sense.  Wave's UI does not make sense and I doubt that my Mother or technical Father would be able to log in and know what to do.  My initial suggestions are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I would like the option for messages to open up and fill the full screen.&lt;/li&gt;&lt;li&gt;Checkboxes would make sense for tasks like deleting or moving messages, why aren't they there?&lt;/li&gt;&lt;li&gt;Only show public messages (things you can read) in your mailbox.&lt;/li&gt;&lt;li&gt;Provide an "e-mail" mode, allowing G-mailers a way to adapt to Wave.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-7208784459420909691?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/7208784459420909691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=7208784459420909691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7208784459420909691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7208784459420909691'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/08/google-wave-first-impressions-sorry.html' title='Google Wave First Impressions, Sorry Google!'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/SnhpMgaW79I/AAAAAAAAANc/dCL2rc9ApUU/s72-c/Picture+9.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-549928881411935675</id><published>2009-07-29T17:09:00.000-07:00</published><updated>2009-07-31T12:51:13.333-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Google App Engine (Java Flavor) and Google Wave</title><content type='html'>Yesterday I began my journey using the Java-version of the Google App Engine.  I love the Python implementation but I have noticed there are much more Java jobs out there than Python jobs.  It's super sad but true.  Actually I guess it would be hard to say there are "jobs" out there.&lt;br /&gt;&lt;br /&gt;I think my first project will be gaegigs.com. Yes, I know the domain name sounds funny but it will be a simple job board for Google App Engine developers and projects. Alternatives would be &lt;a href="http://rubynow.com/"&gt;rubynow.com&lt;/a&gt; and &lt;a href="http://djangogigs.com/"&gt;djangogigs.com&lt;/a&gt;.  Maybe this GAE thing will take off some day?&lt;br /&gt;&lt;br /&gt;I recently completed the tutorial for the GAE-Java flavor and hoisted it up onto &lt;a href="http://www.gaegigs.com/"&gt;gaegigs.com&lt;/a&gt;.  I'm still learning the ins-and-outs so right now the site may be a simple guest book.&lt;br /&gt;&lt;br /&gt;Additionally, I recently received my Google Wave API key!  I can't wait to start playing around with it -- time, I need more of it.  Any requests? I'm curious about building a commenting system with it that could trail blog or story postings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-549928881411935675?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/549928881411935675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=549928881411935675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/549928881411935675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/549928881411935675'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/google-app-engine-java-flavor-and.html' title='Google App Engine (Java Flavor) and Google Wave'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5204093159413322954</id><published>2009-07-29T08:27:00.001-07:00</published><updated>2009-07-29T08:32:20.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Creating or Editing a Java File</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana;font-family:Arial;font-size:100%;"  &gt;This is part in a series where I blog some of the common threads from my Intro to Programming course.&lt;br /&gt;&lt;br /&gt;Writing a Java program requires the use of a text-editor.  And any will do actually.&lt;/span&gt;&lt;div style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style=";font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style=";font-size:100%;" &gt;If you're using Linux based system, I'm sure you're already familar with using an editor. However, for my Windows-based students this may be new territory.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A text-editor that you may be familiar with is MS Word. Word, like many document editors offer various helpful features. When you save a document in Word, it generates a file with an extension of ".doc" that you can move or re-open later. HOWEVER, we're writing programs and we need an editor that actually helps us write a file with a ".java" file extension.  Please do not use MS Word to write your programs :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Simple text-editors that you may use are: Notepad, Notepad++, and ConTEXT among many others.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Notepad: Notepad is already installed with Windows. You can access it from the Start menu or use the following commands: "cntrl-r: then type notepad". If you try to write a Java program with notepad, make sure that the file is saved as a ".java" program. Notepad will always try to save a new file as ".txt", so the first save may look like "Assignment1.java.txt". You will need to rename that file through the explorer or command prompt.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Notepad++: From the website - "Notepad++ is a free (as in "free speech" and also as in "free beer") source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GPL Licence.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Based on a powerful editing component Scintilla, Notepad++ is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendlyness, Notepad++ is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://notepad-plus.sourceforge.net/uk/site.htm&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ConTEXT: From the website - "is a small, fast and powerful freeware text editor, developed to serve as a secondary tool for software developers. After years searching for a suitable Windows text editor, we didn't find any of them to satisfy our needs, so we wrote our own."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.contexteditor.org/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What editor do you use or recommend?  I personally use Text-Mate or Vi.  Occasionally I'll use Eclipse (it's way too powerful for a new programmer though).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Jeff mentioned:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;My computer is a Mac, and I'm using a text editor called SubEthaEdit. I recommend using it because is has syntax highlighting, which puts the Java keywords and comments in different colors. I'm using SubEthaEdit version 1.1.5 (version 2.2 didn't work on my computer).  I downloaded it for free at http://www.codingmonkeys.de/subethaedit/old.html&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Campbell and Stephen wrote:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;I found a decent integrated development environment program that is a free download that works well with Java.  You can edit java files and compile them from the same window, and it automatically formats your indents from line to line.&lt;br /&gt;http://sourceforge.net/projects/scintilla/files/SciTE/Sc177.exe/download&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5204093159413322954?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5204093159413322954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5204093159413322954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5204093159413322954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5204093159413322954'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/creating-or-editing-java-file.html' title='Creating or Editing a Java File'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5447232504587963095</id><published>2009-07-29T08:23:00.000-07:00</published><updated>2009-07-29T08:26:24.634-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>So you've written a .java file, now what?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;This is part of a series where I am posting a few of my common threads from the Introduction to Programming (Java) course that I'm teaching.&lt;br /&gt;&lt;br /&gt;After writing a .java file, there are a few steps that must take place in order for you to run your code. Let's use the file "MyProgram.java" for the following example.&lt;br /&gt;&lt;br /&gt;Step 1: Locate your .java file. Where did you save the file? Let's pretend that the file exists here "c:/JavaPrograms/MyProgram.java"&lt;br /&gt;&lt;br /&gt;Step 2: Open up your command prompt. A shortcut is to press "control-R" and type "cmd". (Windows users only)&lt;br /&gt;&lt;br /&gt;Step 3: Change Directory to the .java file. In the command prompt you can type "cd c:/JavaPrograms/"&lt;br /&gt;&lt;br /&gt;Step 4: Compile the Java file. In the command prompt you can type "javac MyProgram.java"&lt;br /&gt;&lt;br /&gt;Step 5: Fix and Errors. If step 4 produces and errors, you must fix them. To fix an error, you must open up the .java file in an editor and make sure that the code is correct. Typical errors are missing symbols and typos. After you ATTEMPT to fix the errors, you must re-compile again until all of the errors are gone.&lt;br /&gt;&lt;br /&gt;Step 6: Run the program. If there were no compile errors, a .class file will be generated. It may look like "c:/JavaPrograms/MyProgram.class" and exist in the same directory. To run the file, you can type the following on your command prompt "java MyProgram"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5447232504587963095?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5447232504587963095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5447232504587963095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5447232504587963095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5447232504587963095'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/so-youve-written-java-file-now-what.html' title='So you&apos;ve written a .java file, now what?'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4200405046363448174</id><published>2009-07-29T08:15:00.000-07:00</published><updated>2009-07-29T08:23:03.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>The Command Prompt</title><content type='html'>There are a few threads I use every semester and I will be posting them on my blog for future reference.  This blog covers accessing the command prompt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To open the command prompt in windows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click on the &lt;span style="font-weight: bold;"&gt;Start&lt;/span&gt; menu button&lt;/li&gt;&lt;li&gt;Click on the &lt;span style="font-weight: bold;"&gt;Run..&lt;/span&gt; button&lt;/li&gt;&lt;li&gt;Type in "&lt;span style="font-style: italic;"&gt;cmd&lt;/span&gt;" and push &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt; push the &lt;span style="font-weight: bold;"&gt;Windows-Key&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;R&lt;/span&gt; button simultaneously&lt;/li&gt;&lt;li&gt;and type in "&lt;span style="font-style: italic;"&gt;cmd&lt;/span&gt;" and push &lt;span style="font-weight: bold;"&gt;OK&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To open the Terminal in OSX:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the &lt;span style="font-weight: bold;"&gt;Finder&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;span style="font-weight: bold;"&gt;Applications&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;span style="font-weight: bold;"&gt;Utilities&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Then double-click on &lt;span style="font-weight: bold;"&gt;Terminal&lt;/span&gt;&lt;/li&gt;&lt;li&gt;It's useful to add Terminal to a more convenient location, to do so just drag and drop it onto your dock&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of you may think that using the shell (command prompt/terminal) is the OLD way of using computers.  Now-a-days, we use a window manager and graphical user interface such as Windows, Linux, or OSX.  However, as a programmer its fairly typical to spend a lot of your time on a command-line interface.  In this course it's fairly important because the The command-line is important in this course because it will help you compile, debug, and run your programs.&lt;br /&gt;&lt;br /&gt;List the files in the current directory:&lt;br /&gt;{WINDOWS}  C:\DOCUME~1\Student &gt;   dir&lt;br /&gt;{LINUX/OS}   $ ls&lt;br /&gt;&lt;br /&gt;Change to a new directory:&lt;br /&gt;&gt;     cd folder1&lt;br /&gt;&lt;br /&gt;Go back one directory:&lt;br /&gt;List the files in the current directory:&lt;br /&gt;&gt;     cd ..&lt;br /&gt;&lt;br /&gt;Rename a file, from MyApp.java.txt to MyApp.java:&lt;br /&gt;{WINDOWS} C:\DOCUME~1\Student &gt; rename MyApp.java.txt MyApp.java&lt;br /&gt;{LINUX/OS}   $ mv MyApp.java.txt MyApp.java&lt;br /&gt;&lt;br /&gt;Compile a Java file (.java) to ByteCode:&lt;br /&gt;&gt;     javac MyApp.java&lt;br /&gt;&lt;br /&gt;Run a Java program (after it's been compiled):&lt;br /&gt;&gt;     java MyApp&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the Summer 2009 course, Andrew pointed out:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I'd also like to share the following keyboard shortcuts for the command prompt.  Using the Up/Down arrow keys to recall previous entries is very helpful.&lt;br /&gt;(Source: &lt;a href="http://forums.techarena.in/tips-tweaks/1151516.htm"&gt;http://forums.techarena.in/tips-tweaks/1151516.htm&lt;/a&gt; )&lt;br /&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'times new roman';font-size:16;" class="Apple-style-span"  &gt;&lt;span style="text-align: left;font-family:verdana;font-size:13;" class="Apple-style-span"  &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;ul&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;F1 – Repeat text typed in preceding line, one character at a time&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;F2 + Key – Repeat text typed in preceding line, up to first character matching key&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;F3 – Repeat text typed in preceding line&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;F6 – Place an end of file character (ˆZ) at current position of command line&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;F7 – Show all entries in command buffer&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Alt + F7 – Clear all entries in command buffer&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Ctrl + C – Used to interrupt the output of most command prompt applications&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Left Arrow – Move back one character&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Right Arrow – Move forward one character&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Ctrl + Left Arrow – Move back one word&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Ctrl + Right Arrow – Move forward one word&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Up Arrow – Display previous command entered&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Down Arrow – Display next command entered&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Insert – Toggle insert/overtype mode (block cursor implies overtype mode)&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Page Up – Display oldest command entered&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Page Down – Display newest command entered&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Home – Move to beginning of line&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;End – Move to the end of line&lt;/li&gt;&lt;li style="font-family: verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;Esc – Erase current line&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4200405046363448174?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4200405046363448174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4200405046363448174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4200405046363448174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4200405046363448174'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/command-prompt.html' title='The Command Prompt'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3427699855409176628</id><published>2009-07-28T22:10:00.000-07:00</published><updated>2009-07-28T23:33:46.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Generators in Plain English</title><content type='html'>A buddy of mine needed help understanding what a &lt;a href="http://docs.python.org/tutorial/classes.html#generators"&gt;generator&lt;/a&gt; was in Python.  He tried searching the web but unfortunately the web is not kind to the non-uber-technical.&lt;br /&gt;&lt;br /&gt;If you don't want to read, here's a summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a generator vs a list is more memory friendly&lt;/li&gt;&lt;li&gt;you can create a generator using parenthesis or defining a method with the yield keyword&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In order to understand what a generator is, you need to start with an iterator.  In Python, an &lt;a href="http://docs.python.org/tutorial/classes.html#iterators"&gt;Iterator&lt;/a&gt; is an object that has two main functions, __&lt;span style="font-style: italic;"&gt;iter&lt;/span&gt;__() and &lt;span style="font-style: italic;"&gt;next&lt;/span&gt;().  The whole purpose of this object is to return an element from a list or collection of objects.&lt;br /&gt;&lt;br /&gt;Every collection-class and list has an iterator object that's accessible through the __&lt;span style="font-style: italic;"&gt;iter&lt;/span&gt;__() method.  In addition, whenever you use the &lt;span style="font-weight: bold;"&gt;for loop&lt;/span&gt; statement you actually call __&lt;span style="font-style: italic;"&gt;iter&lt;/span&gt;__() on the collection following the &lt;span style="font-style: italic;"&gt;in&lt;/span&gt; keyword.&lt;br /&gt;&lt;br /&gt;The code:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;for i in [1,2,3]:&lt;br /&gt; print i&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;roughly translates to:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;iterator = [1,2,3].__iter__()  # or iter([1,2,3])&lt;br /&gt;while True:&lt;br /&gt; try: print iterator.next()&lt;br /&gt; except: break&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;As most people define it, a generator is a way to &lt;span style="font-style: italic;"&gt;automatically create an iterator&lt;/span&gt;.  That may confuse the heck out of you but let's think about it.  An iterator is a way to access each individual thingy in a container right?  By default it seems that Python provides us those iterators  with the typical square-brackety list objects that we all love.&lt;br /&gt;&lt;br /&gt;Now what if you wanted to go through a particular object but you had special conditions with how you wanted access the data.  A good example is trying to determine the first 20 Fibonacci numbers.  It's common to program the Fibonacci sequence using a recursive method, so let's compare it to using a generator.&lt;br /&gt;&lt;br /&gt;But first, let's look at how you create a generator using the &lt;span style="font-style: italic;"&gt;yield&lt;/span&gt; keyword.  The &lt;span style="font-style: italic;"&gt;yield&lt;/span&gt; keyword allows you to return data within a function and return to this statement when the subsequent &lt;span style="font-style: italic;"&gt;next&lt;/span&gt;() method is called.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt;&gt; def hello_world_generator():&lt;br /&gt;...   yield 'hello'&lt;br /&gt;...   yield 'world'&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; iterator = hello_world_generator()&lt;br /&gt;&gt;&gt;&gt; iterator.next()&lt;br /&gt;'hello'&lt;br /&gt;&gt;&gt;&gt; iterator.next()&lt;br /&gt;'world'&lt;br /&gt;&gt;&gt;&gt; iterator.next()&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt; File "&lt;stdin&gt;", line 1, in &lt;module&gt;&lt;br /&gt;StopIteration&lt;/module&gt;&lt;/stdin&gt;&lt;/blockquote&gt;&lt;stdin&gt;&lt;module&gt;&lt;br /&gt;Notice how the first time you call next on the iterator, the "hello" string was printed.  Then on the subsequent next call, "world" was printed.  With that, we move onto the Fibonacci example.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt;&gt; def fibo():&lt;br /&gt;...    a, b, n = 0, 1, 1&lt;br /&gt;...    while n &lt;= 20:&lt;br /&gt;...      yield a&lt;br /&gt;...      a, b = b, a+b&lt;br /&gt;...      n += 1&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; def fibo_recursive(n):&lt;br /&gt;...   if n &lt; 2: return n&lt;br /&gt;...   else: return fibo_recursive(n-2) + fibo_recursive(n-1)&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; import datetime&lt;br /&gt;&gt;&gt;&gt; start = datetime.datetime.now().microsecond&lt;br /&gt;&gt;&gt;&gt; for i in fibo():&lt;br /&gt;...   print i&lt;br /&gt;...&lt;br /&gt;0&lt;br /&gt;1&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;5&lt;br /&gt;8&lt;br /&gt;13&lt;br /&gt;21&lt;br /&gt;34&lt;br /&gt;55&lt;br /&gt;89&lt;br /&gt;144&lt;br /&gt;233&lt;br /&gt;377&lt;br /&gt;610&lt;br /&gt;987&lt;br /&gt;1597&lt;br /&gt;2584&lt;br /&gt;4181&lt;br /&gt;&gt;&gt;&gt; print (datetime.datetime.now().microsecond - start)&lt;br /&gt;2380&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&gt;&gt;&gt; start = datetime.datetime.now().microsecond&lt;br /&gt;&gt;&gt;&gt; for i in range(0,20):&lt;br /&gt;...   print fibo_recursive(i)&lt;br /&gt;...&lt;br /&gt;0&lt;br /&gt;1&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;5&lt;br /&gt;8&lt;br /&gt;13&lt;br /&gt;21&lt;br /&gt;34&lt;br /&gt;55&lt;br /&gt;89&lt;br /&gt;144&lt;br /&gt;233&lt;br /&gt;377&lt;br /&gt;610&lt;br /&gt;987&lt;br /&gt;1597&lt;br /&gt;2584&lt;br /&gt;4181&lt;br /&gt;&gt;&gt;&gt; print (datetime.datetime.now().microsecond - start)&lt;br /&gt;10519&lt;br /&gt;&gt;&gt;&gt; &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Boy what a difference!  In this simple case, using a generator was about 5 times faster.  Basically, a generator allows you to dictate how you will examine a collection without storing everything upfront in memory.  When working with large sets, or stacks as seen with the Fibonacci sequence, a generator could be very useful.  Only evaluate where you're currently at in a collection (or method) and remember where you left off.&lt;br /&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;br /&gt;&lt;stdin&gt;&lt;module&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3427699855409176628?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3427699855409176628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3427699855409176628' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3427699855409176628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3427699855409176628'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/python-generators-in-plain-english.html' title='Python Generators in Plain English'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-2200513110479271141</id><published>2009-07-23T19:50:00.000-07:00</published><updated>2009-07-23T20:02:45.747-07:00</updated><title type='text'>WGBH Redesign</title><content type='html'>Tomorrow, I'll get the opportunity to talk to the &lt;a href="http://www.wgbh.org"&gt;WGBH&lt;/a&gt; folks.  While doing a little bit of research I noticed that their homepage looked a little stale and decided to procrastinate and redesign it. It's not really creativity but I think it would look great with a more modern feel.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SmkiAzAjLfI/AAAAAAAAANU/2UOzm-APRfc/s1600-h/Picture+8.png"&gt;&lt;img style="cursor: pointer; width: 578px; height: 336px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SmkiAzAjLfI/AAAAAAAAANU/2UOzm-APRfc/s800/Picture+8.png" alt="" id="BLOGGER_PHOTO_ID_5361854228449144306" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-2200513110479271141?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/2200513110479271141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=2200513110479271141' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2200513110479271141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/2200513110479271141'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/wgbh-redesign.html' title='WGBH Redesign'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/SmkiAzAjLfI/AAAAAAAAANU/2UOzm-APRfc/s72-c/Picture+8.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-8982112929716235864</id><published>2009-07-23T11:15:00.000-07:00</published><updated>2009-07-23T11:49:42.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Getting Virtualenv to Run on Your Mac</title><content type='html'>I've seen a lot of chatter on the django-user-groups about using the &lt;a href="http://pypi.python.org/pypi/virtualenv"&gt;virtualenv&lt;/a&gt; utility.  If you're running multiple apps on various environments, maybe one on Django v96 and something slightly newer on Django v1.02, &lt;span style="font-weight: bold; font-style: italic;"&gt;virtualenv&lt;/span&gt; can be a lifesaver.&lt;br /&gt;&lt;br /&gt;In the past I would download and setup various packages while not installing them globally. Thus, whenever working on a particular app I would have to make sure to change my PYTHONPATH with various &lt;span style="font-weight: bold; font-style: italic;"&gt;set&lt;/span&gt;/&lt;span style="font-weight: bold; font-style: italic;"&gt;alias&lt;/span&gt; commands. Now, with &lt;span style="font-weight: bold; font-style: italic;"&gt;virtualenv&lt;/span&gt;, it's a little easier to develop an app with its own local environment.  Each "virtual environment" you will have your own python executable and site-packages, keeping everything nice and isolated when you're testing out new doo-dads.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;INSTALLING&lt;/span&gt; VIRTUALENV&lt;/span&gt;&lt;br /&gt;Here, I'll go over the few steps needed to get &lt;span style="font-weight: bold; font-style: italic;"&gt;virtualenv&lt;/span&gt; up and running on a Mac.  First &lt;a href="http://ddemuth.blogspot.com/2009/07/installing-pip-and-ipython-on-mac.html"&gt;install pip&lt;/a&gt;.  Then on the terminal type the following:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;donnie-demuths-macbook-air:Sites donnie$ &lt;span style="color: rgb(0, 102, 0);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;sudo pip install virtualenv&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Password: *******&lt;br /&gt;Downloading/unpacking virtualenv&lt;br /&gt;  Downloading virtualenv-1.3.3.tar.gz (1.0Mb): 1.0Mb downloaded&lt;br /&gt;  Running setup.py egg_info for package virtualenv&lt;br /&gt;Installing collected packages: virtualenv&lt;br /&gt;  Running setup.py install for virtualenv&lt;br /&gt;    Installing virtualenv script to /usr/local/bin&lt;br /&gt;Successfully installed virtualenv&lt;br /&gt;donnie-demuths-macbook-air:Sites donnie$&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Unfortunately, if you don't have xcode installed yet you will need to get it. It's a real pain because the file is so HUGE (2.5GB+) and it's mandatory.  You can get evil &lt;a href="http://developer.apple.com/technology/xcode.html"&gt;xcode&lt;/a&gt; here but be sure to remember you apple ID and password. Btw, I hate any mandatory huge files that I don't really want.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;CREATING&lt;/span&gt; A PYTHON VIRTUAL ENVIRONMENT&lt;/span&gt;&lt;br /&gt;Using virtualenv may seem confusing and will probably take a bit of tinkering around.  I suggest trying the following:&lt;br /&gt;&lt;blockquote&gt;virtualenv MyFirstEnv&lt;/blockquote&gt;&lt;br /&gt;This will create MyFirstEnv/lib/python2.X/site-packages and MyFirstEnv/bin/python. To start using this environment, use the source command.&lt;br /&gt;&lt;blockquote&gt;source MyFirstEnv/bin/activate&lt;/blockquote&gt;&lt;br /&gt;Now you when install any new packages using easy_install or pip it will be installed to the MyFirstEnv environment rather than globally!  To get out of this environment, you can go back to global by using the deactivate command.&lt;br /&gt;&lt;blockquote&gt;deactivate&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;MORE&lt;/span&gt; REFERENCES&lt;/span&gt;&lt;br /&gt;&lt;a href="http://arthurkoziel.com/2008/10/22/working-virtualenv/"&gt;Working with virtualenv -- Arthur Koziel&lt;/a&gt;&lt;br /&gt;&lt;a href="http://justindriscoll.us/2008/11/setting-up-django-development-virtual.html"&gt;Justin Driscoll: Setting Up A Django Development Virtual Environment on OS X&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-8982112929716235864?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/8982112929716235864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=8982112929716235864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8982112929716235864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/8982112929716235864'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/getting-virtualenv-to-run-on-your-mac.html' title='Getting Virtualenv to Run on Your Mac'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5803126017869710507</id><published>2009-07-23T10:11:00.000-07:00</published><updated>2009-07-23T10:58:14.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Installing pip and ipython on a Mac</title><content type='html'>Way back when I met &lt;a href="http://clemesha.org/"&gt;Alex Clemesha&lt;/a&gt; and &lt;a href="http://twitter.com/dio_rian"&gt;Dorian Raymer&lt;/a&gt;, two talented surfers/pythonistas, who recommended &lt;a href="http://ipython.scipy.org/moin/"&gt;iPython&lt;/a&gt;. For some reason I never knew of it and it became an indepensible tool when hacking through the shell. &lt;span style="font-style: italic;font-size:85%;" &gt;Note: these guys are the masterminds behind &lt;a href="http://www.codenode.org/"&gt;CodeNode&lt;/a&gt; and &lt;a href="http://www.wikipediagame.com/"&gt;WikipediaGame&lt;/a&gt; and I expect to read about these guys in the future.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this posting, I want to show you how to install ipython on your Mac using &lt;a href="http://pypi.python.org/pypi/pip"&gt;pip&lt;/a&gt; (a utility for installing python packages).&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;GETTING&lt;/span&gt; RIGHT TO IT&lt;/span&gt;&lt;br /&gt;First, let's get our &lt;span style="font-style: italic; font-weight: bold;"&gt;pip&lt;/span&gt; on.  Installing &lt;span style="font-style: italic; font-weight: bold;"&gt;pip&lt;/span&gt; is really easy and it actually uses the &lt;span style="font-style: italic; font-weight: bold;"&gt;easy_install&lt;/span&gt; python command itself.  Open your terminal  and type in:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;donnie-demuths-macbook-air:Sites donnie$ &lt;span style="font-weight: bold; color: rgb(0, 102, 0);font-size:100%;" &gt;sudo easy_install pip&lt;/span&gt;&lt;br /&gt;Password: *******&lt;br /&gt;Searching for pip&lt;br /&gt;Best match: pip 0.4&lt;br /&gt;Processing pip-0.4-py2.5.egg&lt;br /&gt;pip 0.4 is already the active version in easy-install.pth&lt;br /&gt;Installing pip script to /usr/local/bin&lt;br /&gt;&lt;br /&gt;Using /Library/Python/2.5/site-packages/pip-0.4-py2.5.egg&lt;br /&gt;Processing dependencies for pip&lt;br /&gt;Finished processing dependencies for pip&lt;br /&gt;donnie-demuths-macbook-air:Sites donnie$ &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Now we can install ipython using the pip install command.  Again, in your terminal type:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;donnie-demuths-macbook-air:Sites donnie$ &lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;sudo pip install ipython&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Downloading/unpacking ipython&lt;br /&gt;Downloading ipython-0.9.1.tar.gz (2.8Mb): 2.8Mb downloaded&lt;br /&gt;In the tar file /tmp/tmpNxQZPw/ipython-0.9.1.tar.gz the member ipython-0.9.1/IPython/testing/attic/ipdtlib.py&lt;br /&gt;Running setup.py egg_info for package ipython&lt;br /&gt;Installing collected packages: ipython&lt;br /&gt;Running setup.py install for ipython&lt;br /&gt;Installing iptest script to /usr/local/bin&lt;br /&gt;Installing ipythonx script to /usr/local/bin&lt;br /&gt;Installing ipcluster script to /usr/local/bin&lt;br /&gt;Installing ipython script to /usr/local/bin&lt;br /&gt;Installing pycolor script to /usr/local/bin&lt;br /&gt;Installing ipcontroller script to /usr/local/bin&lt;br /&gt;Installing ipengine script to /usr/local/bin&lt;br /&gt;Successfully installed ipython&lt;br /&gt;donnie-demuths-macbook-air:Sites donnie$ &lt;/span&gt;&lt;/blockquote&gt;Now you can use ipython by typing &lt;span style="font-weight: bold; font-style: italic;"&gt;ipython&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OKAY&lt;/span&gt; SO WHY SHOULD I DO THIS?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; So why should I use &lt;span style="font-weight: bold; font-style: italic;"&gt;pip&lt;/span&gt;?&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; &lt;span style="font-weight: bold; font-style: italic;"&gt;pip&lt;/span&gt; is the new hotness.  It's a huge upgrade over &lt;span style="font-weight: bold; font-style: italic;"&gt;easy_install&lt;/span&gt; and makes sure you have all of the dependencies before it tries to install a package.  We (royal "we") have all tried to install a package that just would not work: missing dependencies, corrupt files, poor error messages.  Nope, that's not going to happen anymore!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; And what's the benefit of using &lt;span style="font-weight: bold; font-style: italic;"&gt;ipython&lt;/span&gt;?&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; It provides a lot of extra features not included in the basic &lt;span style="font-weight: bold; font-style: italic;"&gt;python&lt;/span&gt; shell. Some are syntax higlighting, tab-completion, and being able to &lt;span style="font-style: italic;"&gt;man&lt;/span&gt; (or find more info) about a particular variable. Check it out...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SmijTiqC0YI/AAAAAAAAANE/cAT5Bey-O78/s1600-h/Picture+3.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 315px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SmijTiqC0YI/AAAAAAAAANE/cAT5Bey-O78/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5361714912500568450" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5803126017869710507?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5803126017869710507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5803126017869710507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5803126017869710507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5803126017869710507'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/installing-pip-and-ipython-on-mac.html' title='Installing pip and ipython on a Mac'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/SmijTiqC0YI/AAAAAAAAANE/cAT5Bey-O78/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6987259054780838971</id><published>2009-07-22T19:27:00.000-07:00</published><updated>2009-07-22T19:43:18.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><title type='text'>A Puzzling Take Home Interview Assignment</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;pre style="font-family: georgia;"&gt;&lt;/pre&gt;&lt;div style="text-align: left;"&gt;If you really want a challenge, give the following a shot. I received it a while ago and I thought it was quite challenging... and oddly fun. For this assignment I was required to write a Java program to solve the puzzle. My response, &lt;a href="http://donniedemuth.s3.amazonaws.com/TeamBuilder.java"&gt;TeamBuilder.java&lt;/a&gt;, was received as adequate.&lt;br /&gt;&lt;br /&gt;I'm not sure where this puzzle originated, if anyone knows please let me know.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The TeamBuilder Puzzle&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;You are arranging a weird game for a team building exercise. In this game there are certain locations that people can stand at, and from each location there are paths that lead to other locations, but there are not necessarily paths that lead directly back. You have everything set up, but you need to know two important numbers. There might be some locations from which every other location can be reached. There might also be locations that can be reached from every other location. You need to know how many of each of these there are.&lt;br /&gt;&lt;br /&gt;Create a class TeamBuilder with a method specialLocations that takes a String[] paths that describes the way the locations have been connected, and returns a int[] with exactly two elements, the first one is the number of locations that can reach all other locations, and the second one is the number of locations that are reachable by all other locations. Each element of paths will be a String containing as many characters as there are elements in paths. The i-th element of paths (beginning with the 0-th element) will contain a '1' (all quotes are for clarity only) in position j if there is a path that leads directly from i to j, and a '0' if there is not a path that leads directly from i to j.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Definitions&lt;/span&gt;&lt;br /&gt;Class:  TeamBuilder&lt;br /&gt;Method: specialLocations&lt;br /&gt;Parameters: String[]&lt;br /&gt;Returns:  int[]&lt;br /&gt;Method signature: int[] specialLocations(String[] paths)&lt;br /&gt;(be sure your method is public)&lt;br /&gt;  &lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Constraints&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;paths will contain between 2 and 50 elements, inclusive.&lt;/li&gt;&lt;li&gt;Each element of paths will contain N characters, where N is the number of elements of paths.&lt;/li&gt;&lt;li&gt;Each element of paths will contain only the characters '0' and '1'.&lt;/li&gt;&lt;li&gt;The i-th element of paths will contain a zero in the i-th position.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Examples&lt;/span&gt;&lt;br /&gt;      &lt;blockquote&gt;input:    {"010","000","110"}&lt;br /&gt;output:  { 1,  1 }&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Locations 0 and 2 can both reach location 1, and location 2 can reach both of the other locations, so we return {1,1}.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;input:    {"0010","1000","1100","1000"}&lt;br /&gt;output:  { 1,  3 }&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Only location 3 is able to reach all of the other locations, but it must take more than one path to reach locations 1 and 2. Locations 0, 1, and 2 are reachable by all other locations. The method returns {1,3}.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;input:    {"01000","00100","00010","00001","10000"}&lt;br /&gt;output:  { 5,  5 }&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Each location can reach one other, and the last one can reach the first, so all of them can reach all of the others.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;input:    {"0110000","1000100","0000001","0010000","0110000","1000010","0001000"}&lt;br /&gt;output:  { 1,  3 }&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6987259054780838971?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6987259054780838971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6987259054780838971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6987259054780838971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6987259054780838971'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/puzzling-take-home-interview-assignment.html' title='A Puzzling Take Home Interview Assignment'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3695177029794581341</id><published>2009-07-22T17:09:00.000-07:00</published><updated>2009-07-22T19:02:02.122-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><category scheme='http://www.blogger.com/atom/ns#' term='programming questions'/><title type='text'>Stuff in a Cup, A Logic Interview Question</title><content type='html'>Okay, so the interviewer didn't prompt me with "stuff in a cup."  I'm certain it was marbles, pebbles, or maybe it was coins.  Anyhoo, the question was:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's the fastest way to determine which cup has the heavier &lt;span style="font-style: italic;"&gt;stuff&lt;/span&gt;?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There are &lt;span style="font-style: italic;"&gt;9&lt;/span&gt; cups&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;8&lt;/span&gt; of the cups have coins that weight exactly 1.0 grams each&lt;/li&gt;&lt;li&gt;1 cup has coins that weight 1.1 grams each&lt;/li&gt;&lt;li&gt;Each cup has an infinite number of items&lt;/li&gt;&lt;li&gt;Using a scale to weigh an item counts as a move&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The key word in this probably "fastest," as in how can we find the answer in as little moves as possible.  My first, and naive, attempt was:&lt;br /&gt;&lt;blockquote&gt;First survey half of the population by collecting an item from the first 4 cups.  Weigh all 4 of the elements and if the sum contains (.1) then take a item from half, or 2, of the cups from this group. On the other hand, if (.1) does not exist in the set, gather items from the other half. Eventually, using a logarithm algorithm like this you'll find the answer without weighing an item from each cup.&lt;br /&gt;&lt;/blockquote&gt;Obviously there's a better way.  I found out that you can write an algorithm to solve this in O(1), or simply a constant, move.  This slightly better approach is:&lt;br /&gt;&lt;blockquote&gt;Pull 1 item from the first cup.  Then pull 2 items from the second cup... ...and finally pull 9 items from the ninth cup.  Combine all of the items and weigh them all together.  By looking at the sum you can determine which cup contained the (1.1) element because the possible sums will range from (45.1 to 45.9). If the sum is (45.6) then you can assume that the (1.1) item came from the 6th cup.&lt;br /&gt;&lt;/blockquote&gt;Unfortunately, there's more! What if the cups contained items that had the following weights:&lt;br /&gt;&lt;blockquote&gt;cup 1: 1.3 g&lt;br /&gt;cup 2: 8.2 g&lt;br /&gt;cup 3: 1.9 g&lt;br /&gt;...&lt;br /&gt;cup 8: 2.2 g&lt;br /&gt;cup 9: x.y g&lt;br /&gt;&lt;/blockquote&gt;How would you find the cup that has the weight of x.y in O(1), using a single weighing?  This gets a little trickier but it's possible.  The previous solution will not work because the sum would be much more dynamic.  The correct way to solve this is:&lt;br /&gt;&lt;blockquote&gt;Pull 10 items from cup 1&lt;br /&gt;Pull 1000 items from cup 2&lt;br /&gt;Pull 100000 items from cup 3&lt;br /&gt;...&lt;br /&gt;Pull 10 ^ (15) items from cup 8&lt;br /&gt;Pull 10 ^ (17) items from cup 9&lt;br /&gt;or&lt;br /&gt;Pull 10 ^ (n*2 - 1)  items from cup n&lt;/blockquote&gt;And weigh all of the items together in one fell swoop. The sum will be a very large number, but in a single move we'll find our answer.  It might look like:  &lt;span style="font-weight: bold; font-style: italic;"&gt;xy22[...]198213&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then by looking at each pair of numbers, you can determine which cup a particular pair of numbers came from.  (xy) came from the 9th and (19) came from the 3rd cup.&lt;br /&gt;&lt;br /&gt;If the weights of the items changed from tenths to hundredths or thousandths then use 100 ^ (n*2-1) or 1000 ^ (n*21) accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3695177029794581341?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3695177029794581341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3695177029794581341' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3695177029794581341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3695177029794581341'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/stuff-in-cup-logic-interview-question.html' title='Stuff in a Cup, A Logic Interview Question'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4510273316468322712</id><published>2009-07-22T16:12:00.000-07:00</published><updated>2009-07-22T18:48:50.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><category scheme='http://www.blogger.com/atom/ns#' term='programming questions'/><title type='text'>The Fibonacci Number, A Logic Interview Question</title><content type='html'>I've seen a share of logic questions recently and I'd like to share and discuss them.  Obviously, my answers aren't the best out there but you may be able to use them to help you find some direction.&lt;br /&gt;&lt;br /&gt;In an interview I was asked to program the Fibonacci Sequence/Number.  Slow as I am sometimes, it took me a while to remember what a Fibonacci number was. In general there are three rules:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;1) The Fibonacci number of 0 is 0.&lt;br /&gt;2) The Fibonacci number of 1 is 1.&lt;br /&gt;3) The Fibonacci number of any other number is determined by the function:&lt;br /&gt;&lt;br /&gt;F(n) = F(n-1) + F(n-2)&lt;/span&gt;&lt;/blockquote&gt;That is the Fibonacci number of 2 is equal to the Fibonacci number of 1 added to the Fibonacci number of 0.  Or a Fibonacci number can be determined by the addition of the two Fibonacci numbers before it (other than 0 or 1). This is all well defined on &lt;a href="http://en.wikipedia.org/wiki/Fibonacci_number"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So let's look at a series of Fibonacci numbers.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;f(0) = 0&lt;br /&gt;f(1) = 1&lt;br /&gt;f(2) = 1 + 0 = 1&lt;br /&gt;f(3) = 1 + 1 = 2&lt;br /&gt;f(4) = 2 + 1  = 3&lt;br /&gt;f(5) = 3+ 2 = 5&lt;br /&gt;f(6) = 5 + 3 = 8&lt;br /&gt;f(7) = 8 + 5 = 13 &lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Now before we look at the code, let's go over the business logic or rules.  It's super easy.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;We'll need a function that returns an int and accepts an int as an argument&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;When you pass in the value of 0, return the value of 0&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;When you pass in the value of 1, return the value of 1&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;When you pass in the value of anything else, return the value of the method with n-1 added to the value of the method with n-2&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;A Java implementation of this using recursion is:&lt;br /&gt;&lt;pre&gt;&lt;div class="code" style="color: rgb(0, 153, 0);"&gt;class FiboTest {&lt;br /&gt;public static int fibo(int num) {&lt;br /&gt;   if (num == 0) return 0;&lt;br /&gt;   else if (num == 1) return 1;&lt;br /&gt;   else {&lt;br /&gt;     return fibo(num-1) + fibo(num-2);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//  This will test out the fibonacci numbers for 0, 1, 2, 3, 4, 5, 10, and 20&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;   System.out.println(fibo(0));&lt;br /&gt;   System.out.println(fibo(1));&lt;br /&gt;   System.out.println(fibo(2));&lt;br /&gt;   System.out.println(fibo(3));&lt;br /&gt;   System.out.println(fibo(4));&lt;br /&gt;   System.out.println(fibo(5));&lt;br /&gt;   System.out.println(fibo(10));&lt;br /&gt;   System.out.println(fibo(20));&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;In my Intro-to-Programming course, I presented this problem to my students.  One of them attempted to program it without using recursion and opting for a simple iterative loop. His code looks like:&lt;br /&gt;&lt;pre&gt;&lt;div class="code" style="color: rgb(0, 153, 0);"&gt;import java.util.Scanner;&lt;br /&gt;public class Fibonacci&lt;br /&gt;{&lt;br /&gt;public static void main(String args[])&lt;br /&gt;{&lt;br /&gt;Scanner input = new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;// Time to initialize a bunch of variables&lt;br /&gt;int countto;&lt;br /&gt;int counting;&lt;br /&gt;int num1L;&lt;br /&gt;int num2L;&lt;br /&gt;int num3L;&lt;br /&gt;&lt;br /&gt;// Starting values&lt;br /&gt;counting = 1;&lt;br /&gt;num1L = 0;&lt;br /&gt;num2L = 0;&lt;br /&gt;System.out.print ("What number in the fibonacci sequence do you want? ");&lt;br /&gt;countto = input.nextInt();&lt;br /&gt;&lt;br /&gt;if (countto == 0)&lt;br /&gt;num3L = 0;&lt;br /&gt;else&lt;br /&gt;num3L = 1;&lt;br /&gt;&lt;br /&gt;while (countto &gt; counting)&lt;br /&gt;{&lt;br /&gt;num1L = num2L;&lt;br /&gt;num2L = num3L;&lt;br /&gt;num3L = num1L+num2L;&lt;br /&gt;counting = counting+1;&lt;br /&gt;}&lt;br /&gt;System.out.println(num3L);&lt;br /&gt;}&lt;br /&gt;}&lt;span style="font-family:Georgia,serif;"&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;                                           &lt;br /&gt;Want more interview questions? I've blogged recently about some of the questions I've been asked. You might want to glance over them to what employers are asking these days:&lt;span style="font-size:100%;"&gt;&lt;a href="http://ddemuth.blogspot.com/2009/07/interview-questions-from-mid-sized.html" rel="bookmark" title="Permanent Link to Interview Questions from a Mid-Sized Company"&gt;&lt;br /&gt;Interview Questions from a Government-Influenced Company&lt;/a&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://ddemuth.blogspot.com/2009/07/interview-questions-from-start-up.html"&gt;Interview Questions from a Start-Up&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://ddemuth.blogspot.com/2009/07/interview-questions-from-mid-sized.html" rel="bookmark" title="Permanent Link to Interview Questions from a Mid-Sized Company"&gt;Interview Questions from a Mid-Sized Company&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4510273316468322712?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4510273316468322712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4510273316468322712' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4510273316468322712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4510273316468322712'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/fibonacci-method-logic-interview.html' title='The Fibonacci Number, A Logic Interview Question'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-163631823737920465</id><published>2009-07-22T14:50:00.000-07:00</published><updated>2009-07-22T15:58:34.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='programming questions'/><title type='text'>Interview Questions from a Government-Influenced Company</title><content type='html'>Occasionally the same questions come up but it's nice when you get a few new ones thrown your way.  Here are several questions that were prompted for a generic Software Engineering position.  This company deals primarily with the government and military.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;GENERAL&lt;/span&gt; QUESTIONS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;How do you analyze, or time/measure, algorithms?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; The interviewer stated that a person that's been working probably wouldn't understand this question.  The answer she was looking for was &lt;a href="http://en.wikipedia.org/wiki/Big_O_notation"&gt;Big-O-Notation&lt;/a&gt;.  Basically Big-O-Notation is used to measure the growth or how long something of size "n" may take.  Constant, logarithmic, and linear algorithms would be defined as O(1), O(log n), and O(n) respectively.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Are you familiar with the acronym SBIR?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; I did not but found out that the government provides financial support to businesses engaged in research and development for government applications. The term itself stands for Small Business Innovation Research. A quick google search provided the following SBIR &lt;a href="http://www.acq.osd.mil/osbp/sbir/"&gt;documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;JAVA&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt; QUESTIONS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is inheritance?&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; Inheritance allows you to define a class with the default behavior and fields of another pre-existing class.  When declaring a class you would use the extends keyword.  Java only supports single-inheritance (you can only inherit from one class).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is an abstract class?&lt;/span&gt;&lt;br /&gt; &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; An abstract class can not be instantiated and is a class declared with the &lt;span style="font-style: italic;"&gt;abstract&lt;/span&gt; keyword. In general this allows you to provide a general blueprint for other classes.  The methods defined as abstract within an abstract class must be overwritten by any of its subclasses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Can you have an abstract method within a non-abstract (normal) class?&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; No.  Any class that has abstract methods must also be defined as abstract.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is the difference between an Abstract class and an Interface?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; A typical abstract class may or may not have abstract methods.  An interface only has abstract methods.  With interfaces you can &lt;span style="font-style: italic;"&gt;implement&lt;/span&gt; the functionality of class defined with the &lt;span style="font-style: italic;"&gt;interface&lt;/span&gt; keyword. Actually, you can implement from multiple interfaces if you need to. You can only inherit from one source, but implement many.  The java documentation explains all of this in a easy to understand manner, see the article on the &lt;a href="http://java.sun.com/docs/books/tutorial/java/IandI/abstract.html"&gt;abstract&lt;/a&gt; keyword.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Can an abstract class have a default behavior?&lt;/span&gt;&lt;br /&gt; &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; Yes, an abstract class may have normal methods.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Can an interface have a default behavior?&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; No, an interface only has abstract methods and an abstract method has no body.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-163631823737920465?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/163631823737920465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=163631823737920465' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/163631823737920465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/163631823737920465'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/interview-questions-from-government.html' title='Interview Questions from a Government-Influenced Company'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4717836097584703862</id><published>2009-07-21T19:37:00.000-07:00</published><updated>2009-07-22T05:26:06.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming questions'/><title type='text'>Interview Questions from a Start-Up</title><content type='html'>I have also recently had a phone-screen with a Start-Up located in the Boston metropolitan area.  Here are the questions that were asked for a Python/Java related programmer position.  Maybe when you are asked these questions, you'll have a better response!  :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;PYTHON&lt;/span&gt;&lt;br /&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is the syntax of a lambda function and why would you use it?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; It starts off with the lambda keyword followed by argument(s), a colon, and a statement(s).  A very simple lambda to return the square of an element may look like:  lambda x: x*x&lt;br /&gt;&lt;br /&gt;Lambdas are commonly use to apply a function across a set of data.  Using it will allow you to use a function without actually defining one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What's the difference between a list and a tuple?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; A tuple is an immutable data set, where the data will not change.  A list is a collection of elements whose size varies with the data it contains.  A tuple is typically faster and takes up less memory compared to an identical list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Explain the difference between calling .items or .iteritems on a dictionary?  How about the functions range or xrange?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; Calling items() will return a list of all key-value elements in the dictionary.  The other method, iteritems(), will return an interator object and can be more memory efficient when working with large data sets.  The xrange() method is similar to iteritems() as it provides a similar iterator when defining a numerical range: i.e. 1 to 1,000,000.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is the metaclass?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; From what I understand, it allows you to modify the definition of a class at run-time.  It's typically used as a "factory" or a template for creating classes.  In some examples, it seems as a way to extend a class, providing it some of the same functionality of another class.  The write-up at &lt;a href="http://www.voidspace.org.uk/python/articles/metaclasses.shtml"&gt;voidspace.uk.org&lt;/a&gt;  helped a bit when trying to understand some of the black magic that I've seen a few times in the past.  Sigh, I do not have much experience here.&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;br /&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What are list comprehensions?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; Example: [person.name for person in people_list] will return a list of names.  Basically, list comprehension is an efficient way of creating a new list (it just is!) without using the typical for-loop construct, or a map() or lambda function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;JAVA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is the difference between an int and a Integer?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; An int is a primitive type and the value is stored in memory.  An Integer is the reference type, or Object, form of the int primitive.  The value of this Object is points to an address and does not contain the value of the integer.  You would use Integer when working with collections or other various methods that require an Object rather than a specified primitive type.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is the difference between the == and dot-equals operator?&lt;/span&gt; &lt;span style="font-style: italic;font-size:85%;" &gt; (Actually, I didn't understand what the interviewer was asking and I thought he meant a .= operator, not the .equals method... whoops!)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; The double equals sign represents equality between two objects.  This operator checks whether or not two addresses are the same.   The .equals() operator is typically an overrideable method where you define which variables will be compared to determine the equality of two objects.  By default, it is similar to the == operator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Explain a String, the StringBuffer, and StringBuilder and how they differ.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; A String is a reference type that represents a set of characters.  Strings combined together will create new instances in memory as a String itself is immutable.  The StringBuffer and StringBuilder Objects are common utilities to use to improve the efficiency of concatenating strings.  The difference between the two is StringBuffer is synchronized and StringBuilder is not.  Thus, StringBuilder is typically faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4717836097584703862?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4717836097584703862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4717836097584703862' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4717836097584703862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4717836097584703862'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/interview-questions-from-start-up.html' title='Interview Questions from a Start-Up'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5424452158492943127</id><published>2009-07-21T18:00:00.000-07:00</published><updated>2009-07-22T05:28:10.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview questions'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='programming questions'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Interview Questions from a Mid-Sized Company</title><content type='html'>I've recently interviewed at a mid-sized company, probably best classified as a "Start-Up."  This took place near the Boston metropolitan area.  Unfortunately, I may have not answered all of the questions correctly or coherently but I'm certain someone will appreciate this in the future.  I've provided a very simple and general response to most and I suggest you do a little more research.&lt;br /&gt;&lt;br /&gt;Below are the Java, JS/CSS, and Database questions that I was able to remember.  The company had a little more than 50 employees and they were looking for a UI Java Developer.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;JAVA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What does the keyword synchronized mean?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; That a particular field of an object may only be accessed by one thread at a time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Can you describe polymorphism?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; I gave a convoluted answer and the interviewer was actually just looking for "Having multiple forms."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;How do you create a thread?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; You can inherit the Thread class or implement Runnable.  You would have to implement Runnable if your class is already extending another class.  Java only supports single-inheritance.  This question is very common and a good resource is at &lt;a href="http://www.exampledepot.com/egs/java.lang/BasicThread.html"&gt;exampledepot.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What will happen with the following class when you have several threads accessing both methods at a particular instance in time?&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;class Thing {&lt;br /&gt;void doThis() {&lt;br /&gt;System.out.println("Hello");&lt;br /&gt;}&lt;br /&gt;void synchronized doThat() {&lt;br /&gt;System.out.println("Goodbye");&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;Each thread that accesses &lt;span style="font-weight: bold; font-style: italic;"&gt;doThis&lt;/span&gt; will cause the statement "Hello" to be printed.  However, "Goodbye"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt; will only be printed once as every other thread will have to wait until a lock a released on this method.  Synchronize will only allow this method to be accessed by one thread at a time.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;JAVASCRIPT&lt;/span&gt;&lt;span style="font-size:180%;"&gt;/CSS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;What's the best way to concatenate or combine several strings?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   Put the strings in an array and combine them with the join method.  Example:&lt;br /&gt;&lt;br /&gt;some_text = new Array("Python", "does","this.")&lt;br /&gt;resulting_text = some_text.join(" ");&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;/* The result is "Python does this."&lt;/span&gt; */&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;Why would you pass JSON instead of XML?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   In general, parsing data in a JSON object within HTML/JS is typically much faster.  A good discussion on "when to prefer JSON over XML" took place on &lt;a href="http://stackoverflow.com/questions/325085/when-to-prefer-json-over-xml/325172"&gt;StackOverflow&lt;/a&gt;.  A user, Robert Rossney wrote:&lt;br /&gt;&lt;div class="post-text"&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;div class="post-text"&gt;&lt;p&gt;Favor XML over JSON when any of these is true:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;You need message validation&lt;/li&gt;&lt;li&gt;You're using XSLT&lt;/li&gt;&lt;li&gt;Your messages include a lot of marked-up text&lt;/li&gt;&lt;li&gt;You need to interoperate with environments that don't support JSON&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Favor JSON over XML when all of these are true:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Messages don't need to be validated, or validating their deserialization is simple&lt;/li&gt;&lt;li&gt;You're not transforming messages, or transforming their deserialization is simple&lt;/li&gt;&lt;li&gt;Your messages are mostly data, not marked-up text&lt;/li&gt;&lt;li&gt;The messaging endpoints have good JSON tools&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;What does a JSON object look like?  How do you create one?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   From what I know, it starts and ends with a curly brace.  Within it are key-value pairings that describe the data.&lt;pre class="de1"&gt;&lt;span class="br0"&gt;&lt;/span&gt;&lt;blockquote  style="font-weight: bold; color: rgb(0, 0, 153);font-family:courier new;"&gt;&lt;span class="br0"  style="font-size:85%;"&gt;{&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"first_name"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"Donnie"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;,&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"last_name"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"Demuth"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;,&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"location"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span class="br0"  style="font-size:85%;"&gt;{&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"city"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"San Diego"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;,&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"state"&lt;/span&gt;&lt;span class="sy0"  style="font-size:85%;"&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span class="st0"  style="font-size:85%;"&gt;"CA"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="br0"  style="font-size:85%;"&gt;}&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="br0"  style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;    &lt;span style="font-weight: bold;"&gt;How do you bind a function to a variable?  And why would you do this?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;    Simply assign a function, as you would normally but with or without a name, to a variable.  By doing so, you can assign functions to particular Objects or pass a function as an argument.  Justin Palmer explains it in a real fun way at &lt;a href="http://alternateidea.com/blog/articles/2007/7/18/javascript-scope-and-binding"&gt;alternateidea.com&lt;/a&gt;.  Here's a very simple example:&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-family:georgia;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var my_obj = new Object();&lt;br /&gt;my_obj.add = function(x, y) { return x + y }; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;/* The object has a function named add and you can use it by */&lt;br /&gt;my_obj.add(1, 2);&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is faster, $("p #dog") or $("#dog")?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   The later is faster, $("#dog") because the first example would first have to find all "p" (paragraph) elements and then parse those elements for the "dog" key.  You can simply search for that key immediately because all ids should be unique.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;What is faster, $("p div.dog") or $(".dog")?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt; Since a class can be used multiple times, the first would be faster.  We first narrow down the search and then look for a particular element with the "dog" class-name.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;DATABASE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;What's the difference between an inner and outer join?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;    An inner join returns a combined set of data where two tables share a common criteria.  An outer join is a data set of all records from one table with data from the other where a common criteria is also met.&lt;br /&gt;&lt;br /&gt;It's probably best to think about a two-circle Venn-Diagram.  The center, or where the two circles overlap could be considered the results of an inner join.  An outer join could be either circle and the part other the other where the two overlap.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;Describe the relationship between the following three tables: an Employee, an Application, and an Account Table.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;Employee&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;int employee_id&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;String first_name&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;String last_name&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;String email&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;Application&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;int application_id&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;String app_name&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;Account&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;int account_id&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;int employee_id&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102); font-weight: bold;font-family:courier new;font-size:85%;"  &gt;int application_id&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   The Employee and Application tables do not have any foreign relationships.  The Account table maps the two tables together, defining which users have access to an Application.  The Account table would probably not have unique restraints on the employee_id or application_id columns.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;Write a query that returns the email for all users that can access a particular Application.  Let's say, an Application with the name of "Sales".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   Note: There's probably a better way to do this.  Here's an excellent write up on &lt;a href="http://www.devx.com/dbzone/Article/17403/1954"&gt;multiple sql joins&lt;/a&gt;.&lt;br /&gt;&lt;blockquote  style="color: rgb(0, 0, 153); font-weight: bold;font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;SELECT Employee.email FROM Employee&lt;br /&gt;INNER JOIN Account ON&lt;br /&gt;Employee.employee_id = Account.employee_id&lt;br /&gt;INNER JOIN Application ON&lt;br /&gt;Account.application_id = Application.application_id&lt;br /&gt;WHERE&lt;br /&gt;Application.app_name = "Sales";&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:180%;"&gt;Q.&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;How would you map these tables to Java objects and what would those objects look like?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;A.&lt;/span&gt;   I would probably create Pojos (plain old java objects) that map directly to these tables.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);font-family:courier new;font-size:85%;"  &gt;class Employee {&lt;br /&gt;int id;&lt;br /&gt;String first_name;&lt;br /&gt;String last_name;&lt;br /&gt;Email email;  // use a specific Email class for emails&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Application {&lt;br /&gt;int id;&lt;br /&gt;String name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Account {&lt;br /&gt;int id;&lt;br /&gt;Employee employee;&lt;br /&gt;Application application;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5424452158492943127?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5424452158492943127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5424452158492943127' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5424452158492943127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5424452158492943127'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/interview-questions-from-mid-sized.html' title='Interview Questions from a Mid-Sized Company'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-3422218806145891786</id><published>2009-07-12T12:15:00.000-07:00</published><updated>2009-07-23T13:41:41.352-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Setting up PostgreSQL on a Mac (for Django)</title><content type='html'>Due to my infatuation with the &lt;a href="http://code.google.com/p/app-engine-patch/"&gt;google-app-engine&lt;/a&gt; and &lt;a href="http://code.google.com/p/app-engine-patch/"&gt;aep&lt;/a&gt; I feel like I haven't set up Django with PostgreSQL in quite a while.  In this post, I'll go over the few simple steps you can choose to follow to get postgres up and running on a Mac.  If you haven't done so already, please &lt;a href="http://ddemuth.blogspot.com/2009/07/installing-pip-and-ipython-on-mac.html"&gt;install pip&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;POSTGRESQL&lt;/span&gt; INSTALLATION&lt;/span&gt;&lt;br /&gt;Okay, so there's many different ways to install PostgreSQL but I'll go over the point-and-click method a lot of you are used to. First you need to find the thingy to click on so download the &lt;a href="http://www.enterprisedb.com/products/pgdownload.do#osx"&gt;PostgreSQL dmg&lt;/a&gt; (installation file).  At the time of this writing the version is 8.04. After downloading the file, give it a good double-click. A dialog window will pop up enabling you to click on the postgresql-8.4.0-1-osx icon.  Give that a good click and follow it up with clicking on "Open" and entering your password.&lt;br /&gt;&lt;br /&gt;There's a good probably that you'll be prompted to reboot your computer before the installation continues.  If so, please reboot and double click on the dmg after your system starts up again.  Following the installation setup, you will be asked to enter the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enter a installation directory: &lt;span style="font-style: italic;"&gt;/Library/PostgreSQL/8.4&lt;/span&gt; (default)&lt;/li&gt;&lt;li&gt;Enter a data directory:&lt;span style="font-style: italic;"&gt; /Library/PostgreSQL/8.4/data&lt;/span&gt; (default)&lt;/li&gt;&lt;li&gt;Enter a superuser password: &lt;span style="font-style: italic;"&gt;kryptonite &lt;/span&gt;&lt;span&gt;(can be anything)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Default port &lt;span style="font-style: italic;"&gt;5432&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; You may be asked if you'd like &lt;span style="font-style: italic; font-weight: bold;"&gt;StackBuilder&lt;/span&gt; to run after the installation completes.  Say yes.&lt;br /&gt;&lt;br /&gt;StackBuilder will allow you to install a few goodies such as phpPgAdmin to help with DB administration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Smi-ke5-CZI/AAAAAAAAANM/19GNGx0OTtU/s1600-h/Picture+5.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 212px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Smi-ke5-CZI/AAAAAAAAANM/19GNGx0OTtU/s320/Picture+5.png" alt="" id="BLOGGER_PHOTO_ID_5361744890365348242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depending on what you clicked on, you may have to go through a few installing procedures. Just click on the next button until all those pop-up windows disappear.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SETTING &lt;/span&gt;UP THE REST&lt;/span&gt;&lt;br /&gt;We'll have to add a few items to our environment so open up a terminal window and enter the following:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;donnie-demuths-macbook-air$ echo "export PATH=$PATH:/Library/PostgreSQL/8.4/bin" &gt;&gt; .bash_profile&lt;br /&gt;donnie-demuths-macbook-air$ echo "export PGDATA=/Library/PostgreSQL/8.4/data" &gt;&gt; .bash_profile&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Those two commands will modify your system's &lt;span style="font-weight: bold;"&gt;PATH&lt;/span&gt; variable and add a new one called &lt;span style="font-weight: bold;"&gt;PGDATA&lt;/span&gt;.  After running both, close and reopen a terminal window.  You can now use a tool called psql to work with your database in a shell.&lt;br /&gt;&lt;br /&gt;Before you use psql, let's start the server via the easy way.  Click on your finder and go to Applications &gt; PostgreSQL 8.4 &gt; and double-click on the Start Server button.  There you'll also find a Stop Server button when you need it.  Obviously, there's way to control your db via the command line but it's pretty easy to forget those commands/scripts.&lt;br /&gt;&lt;br /&gt;Once the server is started, open up a terminal and type:&lt;br /&gt;&lt;blockquote&gt;psql -U postgres&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To enter the postgres shell with the postgres default user.  You'll be prompted to enter in a password, mine was "&lt;span style="font-style: italic;"&gt;kryptonite&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;If you want to use PostgreSQL with Django, you'll need the psycop2 python package.  Install it with the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;donnie-demuths-macbook-air$ &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;sudo pip install psycopg&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To install Django you can also use the pip utility:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;donnie-demuths-macbook-air$ &lt;span style="font-weight: bold;"&gt;sudo pip install django&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Be sure to add django-admin.py to your bin by typing:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;donnie-demuths-macbook-air$ &lt;span style="font-weight: bold;"&gt;sudo ln -s /Library/Python/2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/bin/django-admin.py /usr/local/bin/django-admin.py&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-3422218806145891786?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/3422218806145891786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=3422218806145891786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3422218806145891786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/3422218806145891786'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/07/setting-django-102-up-with-postgresql.html' title='Setting up PostgreSQL on a Mac (for Django)'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/Smi-ke5-CZI/AAAAAAAAANM/19GNGx0OTtU/s72-c/Picture+5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-5376723922257612906</id><published>2009-06-19T08:33:00.000-07:00</published><updated>2009-06-19T08:38:20.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Full Django support on the GAE, 1.2.3?</title><content type='html'>Gosh... It looks like I have a lot of porting to do.&lt;br /&gt;&lt;br /&gt;Google just released the 1.2.3 version of the App Engine which includes full support for Django 1.0.2.  What this means is that I can now ditch the Google App Engine Patch (a collection of hacks to get Django running on the G.A.E) for one of my current sites, www.aboutaplace.com.&lt;br /&gt;&lt;br /&gt;I am extremely excited to test this out.&lt;br /&gt;&lt;br /&gt;Btw, the Google Maps version 3 is completely amazing.  I've recently developed tools for it on www.signonsandiego.com and www.aboutaplace.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-5376723922257612906?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/5376723922257612906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=5376723922257612906' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5376723922257612906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/5376723922257612906'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/06/full-django-support-on-gae-123.html' title='Full Django support on the GAE, 1.2.3?'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-7265128484697132357</id><published>2009-05-28T08:35:00.000-07:00</published><updated>2009-05-28T09:03:57.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Naked Domains for Google App Engine, (WWW)ahoo!</title><content type='html'>After several months of frustration, I can finally assign a Google App Engine project a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;www&lt;/span&gt;&lt;/span&gt; domain easily.  No more URL Frames *shudders* or Redirects!  Cheers!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the past, when trying to add an AppEngine project to the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;www&lt;/span&gt;&lt;/span&gt; domain, I would be prompted with a conflict:  &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Sorry, the www sub-domain is taken.  Please choose a different sub-domain for your project.&lt;/span&gt;&lt;/span&gt;  Actually, the error message was a bit more USELESS than that but if you ever saw it, you'd know what I mean.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, guess what?  It was taken.  By &lt;span class="Apple-style-span" style="font-style: italic;"&gt;google-sites&lt;/span&gt;!&lt;/div&gt;&lt;div&gt;To free your domain of the &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;www&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; hi-jacking, follow these &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt; easy steps&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;(1)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;First, log into your google apps account by going to &lt;a href="ttp://www.google.com/a/"&gt;http://www.google.com/a/&lt;/a&gt;.  You'll need to click on the &lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); font-weight: bold; "&gt;Returning user, sign in here &lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-weight: normal; "&gt;on the right hand side to enter your credentials. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sh6xrlyZSAI/AAAAAAAAAKo/yAq4DpdYR90/s1600-h/Picture+7.png"&gt;&lt;img src="http://4.bp.blogspot.com/_PruFmbvYRak/Sh6xrlyZSAI/AAAAAAAAAKo/yAq4DpdYR90/s320/Picture+7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5340901570543962114" style="cursor: pointer; width: 320px; height: 139px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;(2)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Click on the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;Service Settings&lt;/span&gt;&lt;/span&gt; tab on the far right of the tool bar.  And then click on &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;Sites&lt;/span&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sh60h35IcFI/AAAAAAAAAKw/w2eRq47MfEo/s1600-h/Picture+9.png"&gt;&lt;img src="http://4.bp.blogspot.com/_PruFmbvYRak/Sh60h35IcFI/AAAAAAAAAKw/w2eRq47MfEo/s320/Picture+9.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5340904702140248146" style="cursor: pointer; width: 320px; height: 88px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;(3)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Here you'll find a little bugger of a tab named &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;Web address mapping&lt;/span&gt;&lt;/span&gt;.  Click on it!  That's where the evil pirates are hiding...  After doing so, you'll see that www.mywebdomain.com was pwn3d by &lt;span class="Apple-style-span" style="font-style: italic;"&gt;google-sites&lt;/span&gt;!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sh61RT1FIYI/AAAAAAAAAK4/2sbM2XeDdQI/s1600-h/Picture+12.png"&gt;&lt;img src="http://3.bp.blogspot.com/_PruFmbvYRak/Sh61RT1FIYI/AAAAAAAAAK4/2sbM2XeDdQI/s320/Picture+12.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5340905517093298562" style="cursor: pointer; width: 320px; height: 122px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Delete!  delete!  delete!!!+shift1!!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-7265128484697132357?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/7265128484697132357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=7265128484697132357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7265128484697132357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7265128484697132357'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/05/naked-domains-for-google-app-engine.html' title='Naked Domains for Google App Engine, (WWW)ahoo!'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/Sh6xrlyZSAI/AAAAAAAAAKo/yAq4DpdYR90/s72-c/Picture+7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-4462468032299950142</id><published>2009-04-15T06:15:00.000-07:00</published><updated>2009-07-22T18:57:16.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><title type='text'>The Bear Minimum - Decision Making, The If Statement</title><content type='html'>What would you do if somebody asked you the question:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Are you ready for some football?!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you like football, I'm sure you would say something like "I can't wait, I &lt;span style="font-style: italic;"&gt;looOOove&lt;/span&gt; the {{insert Team Name here}}!".  Otherwise you'd say "Nope" to some degree.&lt;br /&gt;&lt;br /&gt;An expression like this can easily be represented in code.  A super simple program may be represented as:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 0, 0);"&gt;Prompt a message "Are you ready for some football?"&lt;br /&gt;If the user types in "Yes" the display "I can't wait!"&lt;br /&gt;otherwise display "No way!"&lt;/blockquote&gt;The general form of making a decision in a programming language is with the if-statement.  A single if-statement performs a task similarly to if something is true then do this.  Additionally, the if-statement has a best friend -- the else keyword.  In most languages you can follow the if-statement with an else to do if something is true then do this else do that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java Examples:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-family:courier new;font-size:100%;"  &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 51, 0);font-family:courier new;font-size:100%;"  &gt;boolean cond = true;&lt;br /&gt;if (cond) System.out.println("The condition is true!");&lt;br /&gt;&lt;br /&gt;boolean conditionTwo = false;&lt;br /&gt;if (conditionTwo) System.out.println("The second condition is true!");&lt;br /&gt;else System.out.println("The second condition is false!");&lt;/span&gt;&lt;/blockquote&gt;The above will print out "The condition is true!" and "The second condition is false!"  When you've mastered the art of using if-else, you can also pick up another trick -- the else-if-statement.  This allows you to chain together multiple if statements where only one of the statements will ever be executed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt;&lt;br /&gt;Here's a simple program named DecisionMaker.java.  This program attempts to compare an integer with various conditions.&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;class DecisionMaker {&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;    int i = 0;&lt;br /&gt;    if (i == 1) System.out.println("one!");&lt;br /&gt;    else if (i == 2) System.out.println("two!");&lt;br /&gt;    else if (i == 3) System.out.println("three!");&lt;br /&gt;    else System.out.println("The variable i is not one, two, or three!");&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt;&lt;/pre&gt;The output will be "The variable i is not one, two, or three!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JavaScript&lt;/span&gt;&lt;br /&gt;In a file named DecisionMaker.html&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;i = 0&lt;br /&gt;if (i == 1) document.write("one!")&lt;br /&gt;else if (i == 2) document.write("two!")&lt;br /&gt;else if (i == 3) document.write("three!")&lt;br /&gt;else document.write("The variable i is not one, two, or three!")&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;/pre&gt;The output will be "The variable i is not one, two, or three!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Python&lt;/span&gt;&lt;br /&gt;In a file named DecisionMaker.py&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;i = 0&lt;br /&gt;if i == 1: print "one!"&lt;br /&gt;elif i == 2: print "two!"&lt;br /&gt;elif i == 3: print "three!"&lt;br /&gt;else: print "The variable i is not one, two, or three!"&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;The output will be "The variable i is not one, two, or three!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-4462468032299950142?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/4462468032299950142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=4462468032299950142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4462468032299950142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/4462468032299950142'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-decision-making-if.html' title='The Bear Minimum - Decision Making, The If Statement'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-7626977135948224041</id><published>2009-04-09T18:15:00.000-07:00</published><updated>2009-04-09T18:15:00.611-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><title type='text'>The Bear Minimum - Variables and Simple Arithmetic</title><content type='html'>In order to program, you need to be familiar with some basic algebra concepts even though you don't need to be any decent at math.  The following should make sense to you and you should be able to tell me the answer in every situation:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;a = 1&lt;br /&gt;b = 2&lt;br /&gt;c = a + b + 1&lt;br /&gt;What is the value of c?&lt;br /&gt;&lt;br /&gt;m = 3&lt;br /&gt;n = m - c&lt;br /&gt;What is the value of n?&lt;br /&gt;&lt;br /&gt;x = 5&lt;br /&gt;y = x * 2   (where the asterisk is the multiplication symbol)&lt;br /&gt;What is the value of y?&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With algebra we are introduced to the concept of variables.  A variable, as daunting as it may sound, is simply some 'thing' that contains 'something' else.  Above we have several variables: a, b, c, m, n, x, and y and they will store a number.  In these examples, these numbers are whole numbers -- oh that's just an observation for now.&lt;br /&gt;&lt;br /&gt;Going through this from the top to the bottom we can conclude that:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;c = 4&lt;br /&gt;n = -1&lt;br /&gt;and y = 10&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But that took brain power to solve.  Let's get the computer to perform the calculations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Java&lt;/span&gt;&lt;br /&gt;In order to create a variable in Java we need to specify what type of 'thing' it is going to contain.  One of the types you can use is an Integer or int.  An int represents a smaller whole number.  You should use it for a variable that you know will never be greater than a trillion.  To declare what type a variable is going to be write it before the variable name.  If you want the variable "a" to be an "int" you can write it as "int a".&lt;br /&gt;&lt;br /&gt;Here's the code and make sure that you save it as SimpleArithmetic.java:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;class SimpleArithmetic {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;          int a = 1;&lt;br /&gt;          int b = 2;&lt;br /&gt;          int c = a + b + 1;&lt;br /&gt;          System.out.println("What is the value of c? " + c);&lt;br /&gt;          int m = 3;&lt;br /&gt;          int n = m - c;&lt;br /&gt;          System.out.println("What is the value of n? " + n);&lt;br /&gt;          int x = 5;&lt;br /&gt;          int y = x * 2;&lt;br /&gt;          System.out.println("What is the value of y? " + y);&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sd5lalvwmPI/AAAAAAAAAH4/ksdYEsXXhHQ/s1600-h/Picture+19.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 175px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Sd5lalvwmPI/AAAAAAAAAH4/ksdYEsXXhHQ/s320/Picture+19.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803317081938162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Compile and run the java file and you'll get he desired results.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5lawss1hI/AAAAAAAAAIA/XhiJtmrLBlM/s1600-h/Picture+21.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 61px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5lawss1hI/AAAAAAAAAIA/XhiJtmrLBlM/s320/Picture+21.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803320021898770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;JavaScript&lt;/span&gt;&lt;br /&gt;JavaScript and Python is a little more 'loose' than Java where you don't need to specify the type of your variables.  The same code in JavaScript should look very similar to the algebraic expressions.  Also, in this example and printing out three "break" tags in order to print the messages on separate lines so I hope that doesn't confuse anyone.&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;a = 1&lt;br /&gt;b = 2&lt;br /&gt;c = a + b + 1&lt;br /&gt;document.write("What is the value of c? " + c)&lt;br /&gt;document.write("&amp;lt;br /&amp;gt;");&lt;br /&gt;m = 3&lt;br /&gt;n = m - c&lt;br /&gt;document.write("What is the value of n? " + n)&lt;br /&gt;document.write("&amp;lt;br /&amp;gt;");&lt;br /&gt;x = 5&lt;br /&gt;y = x * 2&lt;br /&gt;document.write("What is the value of y? " + y)&lt;br /&gt;document.write("&amp;lt;br /&amp;gt;");&lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Sd5l7-WCp_I/AAAAAAAAAII/Cuzjzc-X5S8/s1600-h/Picture+24.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 315px; height: 219px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Sd5l7-WCp_I/AAAAAAAAAII/Cuzjzc-X5S8/s320/Picture+24.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803890620639218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Open up the file in your favorite browser and you'll be greeted with the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5l7ylEeMI/AAAAAAAAAIQ/72mAUmvE98k/s1600-h/Picture+23.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 255px; height: 101px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5l7ylEeMI/AAAAAAAAAIQ/72mAUmvE98k/s320/Picture+23.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803887462447298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Python&lt;/span&gt;&lt;br /&gt;Like JavaScript, this is a loosly-typed language.  You don't have to specify what the type of your variables.  In this file, named SimpleArithmetic.py -- BTW unlike Java, Python files aren't coupled to the name of the class -- we can write code that look eerily easy to understand.&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;a = 1&lt;br /&gt;b = 2&lt;br /&gt;c = a + b + 1&lt;br /&gt;print "What is the value of c? %s" % c&lt;br /&gt;m = 3&lt;br /&gt;n = m - c&lt;br /&gt;print "What is the value of n? %s" % n&lt;br /&gt;x = 5&lt;br /&gt;y = x * 2&lt;br /&gt;print "What is the value of y? %s" % y&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sd5l79rD9bI/AAAAAAAAAIY/-YeIM9-anUI/s1600-h/Picture+26.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 265px; height: 147px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Sd5l79rD9bI/AAAAAAAAAIY/-YeIM9-anUI/s320/Picture+26.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803890440369586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Doesn't python look beautiful?  Executing the code is easy as pie as well.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5l72I0p-I/AAAAAAAAAIg/jSj8Bbz6F3k/s1600-h/Picture+27.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 51px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Sd5l72I0p-I/AAAAAAAAAIg/jSj8Bbz6F3k/s320/Picture+27.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322803888417712098" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-7626977135948224041?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/7626977135948224041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=7626977135948224041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7626977135948224041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7626977135948224041'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-variables-and-simple.html' title='The Bear Minimum - Variables and Simple Arithmetic'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/Sd5lalvwmPI/AAAAAAAAAH4/ksdYEsXXhHQ/s72-c/Picture+19.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-7007472282081591467</id><published>2009-04-09T05:26:00.000-07:00</published><updated>2009-04-09T14:24:11.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='helloworld'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><title type='text'>The Bear Minimum - Simple programs using "Hello World!"</title><content type='html'>Whenever you try learning a new program language, I guarantee that you'll run into the phrase "Hello World," among others like "Foo Bar."  HelloWorld is a simple application that prints out a phrase to the user and provides an experienced programmer the syntax and grammar on how to use this language.  In some ways, its referred to the simplest application you can write for a programming language.&lt;br /&gt;&lt;br /&gt;Below we'll create three different HelloWorld programs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Java&lt;/span&gt;&lt;br /&gt;In order to create this program in Java we'll have to create a file named HelloWorld.java.  Please use a text-editor such as NotePad or Vi to do so.  Within this file, we'll write out some java code that will allow us to print the message to the user.&lt;br /&gt;&lt;br /&gt;Here are the contents:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;class HelloWorld {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        System.out.println("Hello World!");&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Sd4wVaI8UqI/AAAAAAAAAHQ/sR2fj0zU9tU/s1600-h/Picture+14.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 105px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Sd4wVaI8UqI/AAAAAAAAAHQ/sR2fj0zU9tU/s320/Picture+14.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322744953950720674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Before you can run this file, you will have to compile it first.  Compiling takes the code that you've written and converts it into a language that the machine (Java Virtual Machine) can understand.  Before you compile, go to the directory that contains the file with your command-line tool.  If you saved the file under "c:/myprograms" you can type "cd c:/myprograms".  Make sure that the file exists and has the ".java" extension.  You can do this with the "dir" command.&lt;br /&gt;&lt;br /&gt;To compile type:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;javac HelloWorld.java&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If your code is valid, it will create a file named HelloWorld.class and not prompt you with any errors.&lt;br /&gt;&lt;br /&gt;To run the program type:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;java HelloWorld&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice that when compiling you must pass it the filename and when you try to run the program you only use the name of the class.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sd4wVX4Vs9I/AAAAAAAAAHI/WeHbSVDAjN4/s1600-h/Picture+13.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 42px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Sd4wVX4Vs9I/AAAAAAAAAHI/WeHbSVDAjN4/s320/Picture+13.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322744953344209874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;JavaScript&lt;/span&gt;&lt;br /&gt;To create a HelloWorld app in JavaScript, let's create a new file named HelloWorld.html.  Within this file use the following:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;document.write("Hello World!");&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sd4wVmplExI/AAAAAAAAAHo/CC-GIVz4nck/s1600-h/Picture+17.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 263px; height: 81px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Sd4wVmplExI/AAAAAAAAAHo/CC-GIVz4nck/s320/Picture+17.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322744957308834578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Make sure that the editor that you're using saves the html file without adding any extra markup.  Some will manipulate the characters above in order to make it "readable" to humans rather than executing it as code.&lt;br /&gt;&lt;br /&gt;To run this code, open HelloWorld.html in any web browser such as Internet Explorer or FireFox.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/Sd4wa5NKLPI/AAAAAAAAAHw/MXPBVMDPtaY/s1600-h/Picture+18.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 251px; height: 86px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/Sd4wa5NKLPI/AAAAAAAAAHw/MXPBVMDPtaY/s320/Picture+18.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322745048189250802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Python&lt;/span&gt;&lt;br /&gt;In a file named "HelloWorld.py" type:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;print "HelloWorld!"&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/Sd4wVqy1f4I/AAAAAAAAAHg/XV4a6i2j82c/s1600-h/Picture+16.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 187px; height: 55px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/Sd4wVqy1f4I/AAAAAAAAAHg/XV4a6i2j82c/s320/Picture+16.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322744958421401474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then on the command-line, within the same directory as HelloWorld.py, run the code with the following command:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;python HelloWorld.py&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/Sd4wVnOwLaI/AAAAAAAAAHY/790QSwxQLLI/s1600-h/Picture+15.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 310px; height: 29px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/Sd4wVnOwLaI/AAAAAAAAAHY/790QSwxQLLI/s320/Picture+15.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322744957464751522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Easy ain't it?!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-7007472282081591467?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/7007472282081591467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=7007472282081591467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7007472282081591467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/7007472282081591467'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-simple-programs-using.html' title='The Bear Minimum - Simple programs using &quot;Hello World!&quot;'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PruFmbvYRak/Sd4wVaI8UqI/AAAAAAAAAHQ/sR2fj0zU9tU/s72-c/Picture+14.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6571521087305603789</id><published>2009-04-01T23:54:00.000-07:00</published><updated>2009-07-22T18:59:47.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>The Bear Minimum - Finding your path</title><content type='html'>Since most people are Windows users, you will probably have to modify your path variable to make programming a little easier for you.  If you're using Ubuntu or OSX this should already be set up for your or you'll already know how to do it!&lt;br /&gt;&lt;br /&gt;The path variable allows you to access files and programs easily from any directory or folder on your computer.  For the most part, you will be compiling and running Java programs from the command-prompt so making sure your path correctly is extremely helpful.  Before you modify your path variable, first you'll need to know where the JDK was installed -- it generally installs to c:\Program Files\Java\jdk1.6.0_13 where these numbers at the end specify the version.&lt;br /&gt;&lt;br /&gt;Make sure that the jdk directory exists and you may want to look within the bin folder.  Within it you should see a file named "javac.exe".&lt;br /&gt;&lt;br /&gt;We want to be able to easily access the javac program from anywhere on the command-prompt so we'll want to add that bin directory to our System's path.  Based on your flavor of Windows, finding the path variable may be a journey of it's own.  You should be able to find it by following:&lt;br /&gt;&lt;br /&gt;Start &gt; Control Panel &gt; System &gt; Advanced &gt; Environment &gt; Variables&lt;br /&gt;OR&lt;br /&gt;Start &gt; Control Panel &gt; System &gt; Advanced Settings &gt; Change Settings &gt; Advanced &gt; Environment &gt; Variables&lt;br /&gt;&lt;br /&gt;Basically we need to modify the environment variables.  Once you find it, there should be two lists: one for user variables and one for system variables.  Let's change the system variable as it will make the change for all users and programs.  Within the system variables list, find the word "path" under the variable column and then click on edit.&lt;br /&gt;&lt;br /&gt;And carefully add the following line to the front (or to the left of the existing text):&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;c:\Program Files\Java\jdk1.6.0_13\bin;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Remember, if your jdk directory exists at a different location on your computer, please make sure you use it!  Your jdk and bin directory may be at c:\Program Files\Java\jdk1.5.0\bin or c:\java\current_jdk\bin so make sure you found it first.&lt;br /&gt;&lt;br /&gt;And yes, there was a semi-colon.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;br /&gt;You will not have to add anything to your path.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python&lt;/b&gt;&lt;br /&gt;You may need to add the Python folder to your path.  Find out where you installed python and make sure that the directory has the python.exe file.  It may be at c:\python26 or c:\python.&lt;br /&gt;&lt;br /&gt;Follow the same steps from above and add the following to your path variable:&lt;br /&gt;&lt;pre&gt;&lt;div class="code"&gt;c:\python;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Don't forget the semi-colon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6571521087305603789?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6571521087305603789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6571521087305603789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6571521087305603789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6571521087305603789'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-finding-your-path.html' title='The Bear Minimum - Finding your path'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-1690858164519532567</id><published>2009-04-01T22:00:00.000-07:00</published><updated>2009-04-09T14:23:29.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><title type='text'>The Bear Minimum - Finding and Installing the required software</title><content type='html'>In order to write code all you really need is a keyboard and a text-editor.  You don't need anything special at all!  You can even write code with a pen and paper, but I doubt a computer would ever make sense of it.&lt;br /&gt;&lt;br /&gt;The code is meaningless without the tools you need to compile and run it.  For Java, these tools are packaged in the Java Standard Edition (SE) Software Developers Kit (SDK) -- yes I know, it's a long name.  Navigating http://java.sun.com is pretty complicated so here are some images to help.&lt;br /&gt;&lt;br /&gt;On the right rail, you'll see a list of Popular Downloads, click on Java SE.  Try to fight the temptation of clicking on Java EE 5 SDK!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SdTxLD1JfRI/AAAAAAAAAG4/s52m1OKvl5Y/s1600-h/Picture+9.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 177px; height: 135px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SdTxLD1JfRI/AAAAAAAAAG4/s52m1OKvl5Y/s320/Picture+9.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5320142232140479762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then on the downloads page, click on the Download button that follows Java SE Development Kit (JDK).  And again, avoid the temptation of clicking on the first button, Java SE Runtime Environment (JRE).  The JRE allows you to run java programs but not compile or "make" them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PruFmbvYRak/SdTxSBhnvPI/AAAAAAAAAHA/wU_5nYDyUXc/s1600-h/Picture+10.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://2.bp.blogspot.com/_PruFmbvYRak/SdTxSBhnvPI/AAAAAAAAAHA/wU_5nYDyUXc/s320/Picture+10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5320142351780789490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, on the next page fill out the required information to begin the download.  After it's completed, install it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Javascript&lt;/span&gt;&lt;br /&gt;JavaScript is a programming language that you probably already have.  It's packaged with most modern browsers.  Congrats!  You don't have anything extra to do here... Except that if you're using Internet Explorer you may want to consider downloading FireFox or Opera.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Python&lt;/span&gt;&lt;br /&gt;Python is sometimes considered as a lowly-scripting-language but it's a very powerful and modern language that I highly recommend.  In order to install this language go to http://python.org and click on the download link on the left rail.  You'll want to download a version of Python 2.6+ because the next version, Python 3+ is not fully adopted yet.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SdTxCSbT0KI/AAAAAAAAAGw/GvHWbvjhkWY/s1600-h/Picture+11.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 45px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SdTxCSbT0KI/AAAAAAAAAGw/GvHWbvjhkWY/s320/Picture+11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5320142081439813794" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-1690858164519532567?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/1690858164519532567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=1690858164519532567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1690858164519532567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/1690858164519532567'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-finding-and-installing.html' title='The Bear Minimum - Finding and Installing the required software'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/SdTxLD1JfRI/AAAAAAAAAG4/s52m1OKvl5Y/s72-c/Picture+9.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6198544738142082276</id><published>2009-04-01T21:00:00.000-07:00</published><updated>2009-04-09T14:23:17.373-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bearminimum'/><title type='text'>The Bear Minimum - Introduction</title><content type='html'>The Java programming language can be daunting to learn.  Especially for you, someone with little to no programming experience!  Learning a programming language is like learning a spoken language such as Spanish or Mandarin Chinese -- but probably much easier! &lt;br /&gt;&lt;br /&gt;But hopefully by the end of the class you would have picked up some of these programming basics and feel a little more comfortable with Java.  Many programmers (see PHP/Ruby programmers) complain about how HARD Java is, so consider learning this a real accomplishment.&lt;br /&gt;&lt;br /&gt;Within this series of guides I'll cover some of the "bare minimum" topics that you really should memorize.  I'll also show you how to do the same things with JavaScript and Python -- although consider that an optional and additional lesson.  At the end of the nine weeks, I'll package everything up into a pdf and send it out to you all. &lt;br /&gt;&lt;br /&gt;Oh an I'm calling this guide "The Bear Minimum" because of the following Yahoo question and answer:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PruFmbvYRak/SdTnmeSTPiI/AAAAAAAAAGo/hRjMXqMbfRw/s1600-h/Picture+8.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_PruFmbvYRak/SdTnmeSTPiI/AAAAAAAAAGo/hRjMXqMbfRw/s320/Picture+8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5320131707982265890" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6198544738142082276?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6198544738142082276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6198544738142082276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6198544738142082276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6198544738142082276'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/04/bear-minimum-introduction.html' title='The Bear Minimum - Introduction'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PruFmbvYRak/SdTnmeSTPiI/AAAAAAAAAGo/hRjMXqMbfRw/s72-c/Picture+8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-6351216676718865038</id><published>2009-02-15T21:38:00.000-08:00</published><updated>2009-07-22T18:49:29.345-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Programming on a MacBook Air</title><content type='html'>I program.  I plan systems.  I build them.  I design them.  So why aren't I using a MacBook Pro?&lt;br /&gt;&lt;br /&gt;The main reason for this is that I'm frugal and that I'm a coffee house junky.  When I noticed that MacBook Airs were finally on the refurb list at the Apple Store, I had to jump on one.  For $1299, I purchased an Air with 1.8Ghz and a 64gb SSD Hard-drive.  If I bought this last year, it would have easily ran me over $3,000.&lt;br /&gt;&lt;br /&gt;My biggest concern with this purchase is how it would hold up.  Could I bare the 13 inch screen?  Can I transition from a powerful and clunky Thinkpad to a stick thin sheet of aluminum?&lt;br /&gt;&lt;br /&gt;I scoured the web for answers.  I wanted to know whether or not someone is actually using the Air as a rig for programming.  If you tried performing this query, you may find this thread from google:&lt;br /&gt;http://forums.macrumors.com/showthread.php?t=635322&lt;br /&gt;&lt;br /&gt;Unfortunately, no one really provides any answers in it.  I would have to find the answer out for myself.&lt;br /&gt;&lt;br /&gt;Before we look at the Air, let me first tell you about my previous rigs.&lt;br /&gt;- MacPro Desktop w/ 23" Cinema Display @ 1920 by 1200&lt;br /&gt;- 15.4" Lenovo Thinkpad T61p @ 1440 by 900&lt;br /&gt;- 17" Dell XPS fully upgraded @ 1920 by 1200&lt;br /&gt;&lt;br /&gt;Those are all pretty powerful machines.  Probably in most cases, more powerful than I need.  What strikes me the most are the resolutions.  I'll be losing from 400-200 pixels on the laptops.  However, the T61p and XPS are Windows XP boxes and this operation system has been a thorn in my side lately.&lt;br /&gt;&lt;br /&gt;With my Air, I'm running a resolution of 1280 by 800.  Due to it's size (13"), it probably wouldn't make any sense to run it at a higher resolution.  After playing around with the system for a bit, it's noticeably not as smooth as the MacPro -- obviously.  Setting up my environment was a breeze though, compared to getting the same thing running on a Windows box.&lt;br /&gt;&lt;br /&gt;I'm currently working on an Python gig where I'm using Django, the Google App-Engine, and TextMate as my IDE.  I prefer TextMate over PyDev on Eclipse because it's light weight, elegant, and I don't need to worry about project files.&lt;br /&gt;&lt;br /&gt;Running the project, you'll need several windows open.  A terminal window (for debugging and various shell tasks), a browser (to test the interface), and one for your IDE or TextMate.  I've attached a few screen shots of my development environment for those who need to see what it may look like.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PruFmbvYRak/SZkDXFgQJxI/AAAAAAAAAGg/OOyXEgYU2JA/s1600-h/Picture+4.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_PruFmbvYRak/SZkDXFgQJxI/AAAAAAAAAGg/OOyXEgYU2JA/s320/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5303273731354797842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SZkDJh139cI/AAAAAAAAAGY/2mEti0dRkiA/s1600-h/Picture+3.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SZkDJh139cI/AAAAAAAAAGY/2mEti0dRkiA/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5303273498443511234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PruFmbvYRak/SZkDATRI3XI/AAAAAAAAAGQ/w2QIdxttRoc/s1600-h/Picture+2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_PruFmbvYRak/SZkDATRI3XI/AAAAAAAAAGQ/w2QIdxttRoc/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5303273339912510834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With "Spaces" from OSX 10.5 or Leopard, keeping all windows open is very pleasant.  Switching between windows can be performed easily using the control button plus an arrow key.  It's much easier than switching between windows using the alt-tab method.  This is very close the programming experience you'll get with using two monitors.  I'm SOOO glad I have it on the MacBook Air.  Without Spaces, I'm not sure if I would find my self gushing over this laptop.&lt;br /&gt;&lt;br /&gt;So yes, I am gushing.  I love the experience so far.  Spaces, TextMate, Terminal is everything that I could ask for in a programming rig.  Although I guess I could just boot into Ubuntu on my Thinkpad and get a similar experience.  However, I do fairly often boot into Windows for Word and PhotoShop... Sorry Open-Office and Gimp, it didn't always work out between us. &lt;br /&gt;&lt;br /&gt;But this little Air should be able to handle Office and Photoshop.  I haven't tested it out yet but I'll post my thoughts when I do.  Bottom line, I wanted a Mac and I think I purchased the best one I could under $1500 dollars.  Would I pay $2500 for an Air?  Probably not, I think I would get a Pro if I had the extra money.  Do I regret not shelling out an extra grand for the Pro?  Heck no.  The Air does everything that I need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1969666845951186091-6351216676718865038?l=www.pidby.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.pidby.com/feeds/6351216676718865038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1969666845951186091&amp;postID=6351216676718865038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6351216676718865038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1969666845951186091/posts/default/6351216676718865038'/><link rel='alternate' type='text/html' href='http://www.pidby.com/2009/02/programming-on-macbook-air.html' title='Programming on a MacBook Air'/><author><name>Donnie Demuth</name><uri>http://www.blogger.com/profile/15489403042545830457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_PruFmbvYRak/SmcLgxJT4tI/AAAAAAAAAMk/Au0AGBikn50/S220/duhnold'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PruFmbvYRak/SZkDXFgQJxI/AAAAAAAAAGg/OOyXEgYU2JA/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1969666845951186091.post-1710708565574906847</id><published>2009-02-08T14:36:00.001-08:00</published><updated>2009-07-22T18:58:35.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appenginepatch'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Saving Images with the Google App Engine using S3<
