<?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-5291647920638443589</id><updated>2011-11-27T15:45:50.824-08:00</updated><title type='text'>Mike Nelson's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-7862160010920552017</id><published>2011-04-25T06:42:00.001-07:00</published><updated>2011-04-25T07:07:12.681-07:00</updated><title type='text'>KICKOFF of FBAdvancedSearch FB/Kynetx App</title><content type='html'>So the next string of posts will be relating to my creation of a FB/Kynetx App tentatively called "Advanced Search." With it, users will be able to search through facebook photos, wall posts, and whatever else. It will primarily be a facebook app. I want practice using facebook-connect though, so it will also be a regular webpage which uses facebook-connect. Also, it would be cool if it integrates directly into the user's facebook page etc, so for that I will use Kynetx. &lt;br /&gt;The first thing I need to do is make a plan of how to use this. And actually, the very first thing was to create a blog to track my progress, and provide a type of how-to manual for others.&lt;br /&gt;THINGS TO DO WHEN MAKING MY FACEBOOK APP:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;1. Get webhosting. The webhost must not add a banner on the top of the page (by editing the html on the page), as this will interfere with rendering of the Facebook app (it's acceptable for a webpage using facebook-connect, but not for a facebook app). I want the webhost to be able to run PHP (in order to use Facebook's PHP SDK), and MySQL (I'm actually not certain what I'll need a database for, but it's a good assumption that most webapps will need one). I want a webhost that's preferably free, because I won't initially be profiting off this, nor do I expect a huge number of users initially.&lt;br /&gt;2. Register as a Facebook App using the &lt;a href="http://www.facebook.com/apps/application.php?id=2345053339"&gt;Facebook Developer Application&lt;/a&gt; &lt;br /&gt;3. Get the PHP SDK and install it. If the webhost has allowed my PHP to write to a file, installation of the SDK is easy. If not, I may need to manually enter my FB Developer id and key etc, and do some other configuration manually.&lt;br /&gt;4. Test FBML works right. Try rendering one page with some fbml in it within the facebook frame&lt;br /&gt;5. Create the "appserver". The appserver will be a set of ursl (endpoints) which I or others can send requests to, and which will return certain data in json format This is also the part that will usually be making requests via FQL or Facebook's API.&lt;br /&gt;6. Create the FB-app pages. Create these pages using FBML, and utilizing my appserver's endpoints. &lt;br /&gt;7. Also, create the Facebook-connect site which also uses the appserver&lt;br /&gt;8. Lastly, create the kynetx app to add some HTML to the users' regular FB pages which interfaces with my "Advanced Search" app&lt;br /&gt;9. Register as a facebook app (this will allow users to search for my app).&lt;br /&gt;10. Test it with friends etc.&lt;br /&gt;11. Monetize: either through advertisements on the page, charing users who use the app very often, or simply advertising myself as a facebook developer for hire, etc.&lt;br /&gt;12. Read a book on how to market it and make it popular. This may require refactoring.&lt;br /&gt;13. Bug-fixes/improvements. Respond to user feedback and bug-reports, and make necessary changes.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-7862160010920552017?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/7862160010920552017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2011/04/kickoff-of-fbadvancedsearch-fbkynetx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/7862160010920552017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/7862160010920552017'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2011/04/kickoff-of-fbadvancedsearch-fbkynetx.html' title='KICKOFF of FBAdvancedSearch FB/Kynetx App'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-5730510770559773381</id><published>2011-03-18T13:18:00.000-07:00</published><updated>2011-03-19T21:24:45.958-07:00</updated><title type='text'>SQS Queues and more Simple DB</title><content type='html'>Apparently I need to send json to an SQS queue. It's described at http://globalconstant.scnay.com/2011/03/02/programming-sqs-with-python-and-boto/, and http://classes.windley.com/462/wiki/index.php/SQS_Queues.&lt;br /&gt;So I replaced the necessary fields with content specific to the 'commentprocess' in sqs. Still, while it doesn't throw any errors, I'm not seeing my messages being posted into the queue, so I'm not sure if it's working. Yuck&lt;br /&gt;----------------------------------------------------&lt;br /&gt;SO I came back to it, didn't change anything, just ran it again and saw my comment was added to the queue. I think it was just getting popped out of the queue before it was being read before.&lt;br /&gt;So now, I have to add the comment to simple db. I do that in just the same way as I saved new ratings, as shown on http://cloudcarpenters.com/blog/simpledb_primer_with_python_and_boto/.&lt;br /&gt;-----------------------------------------------------&lt;br /&gt;The next part of teh lab required me to again add something to the simple db database, but teh catch was that it's an image and I needed to inform the db of the image's height and width. Well, all I was given was a url! How should I know?!&lt;br /&gt;But a quick google search revealed a forum with the answer (the first reply didn't actually work, as noted later in the thread, but teh second did): http://osdir.com/ml/python.image/2004-04/msg00052.html&lt;br /&gt;-------------------------------------------------------&lt;br /&gt;Ok so now I'm adding a daemon to run every few seconds to process messages in the comment or image queues, and according to what those messages say, I'll approve comments and images.&lt;br /&gt;I'm following the instructions here:http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/&lt;br /&gt;I downloaded the two files, put themin the same folder, and they work basically as is. (One difficult thing though: the daemon (I suppoes obviously) runs in a different process than the shell from which it was called, so you can't print out debug lines to it. I suppose I could configure it to still output to the same logfile I've been using, but that requires extra learning. No, for now I'm just going to get the code to work in a function where I can see the output and logs, and then paste it into the daemon function's "run" method.&lt;br /&gt;Now I need to read and pop from the queues. &lt;br /&gt;I just noticed on the lab's page, at the very bottom, that there's an endpoint (a url I call and get a result from) to&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-5730510770559773381?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/5730510770559773381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2011/03/sqs-queues-and-more-simple-db.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/5730510770559773381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/5730510770559773381'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2011/03/sqs-queues-and-more-simple-db.html' title='SQS Queues and more Simple DB'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-5228093083082946431</id><published>2011-03-02T12:29:00.000-08:00</published><updated>2011-03-17T20:59:22.492-07:00</updated><title type='text'>simple db and django</title><content type='html'>I'm working on Project3 from my cs 462 class, where basically we need to make an 'appserver' which returns json stuff.&lt;br /&gt;Rather than making my machine listen on port 8010 for the appserver and seperately on 80 for the regular webserver, I just got apache to listen on port 8010, and reused all my code from the webserver. (I know, pretty lazy eh. But I'm in a bit of a rush). Followed instructions on... actually I can't find it. Google "apache listen different port", but this site has ok instructions: http://httpd.apache.org/docs/2.0/vhosts/examples.html. (Basically: find the ports.conf file, and change "listen 80" to "listen 8010").&lt;br /&gt;----------------------------------------------&lt;br /&gt;So now I'm trying to add stuff to simple db. I receive a post from another page, and then add teh content of the post ot the db. I'm following the instructions on http://cloudcarpenters.com/blog/simpledb_primer_with_python_and_boto/.&lt;br /&gt;Done: I know it's working a bit.&lt;br /&gt;I was getting big images instead of nice thumbnails. I found I was using the wrong url. needed to get images from amazon.com/...[imagekey]t.jpg. I was using the original image url.&lt;br /&gt;ratesubmit. In the db it's stored as an int with a max of 500, but we want to store it as a float with a max of 5.0. So, I created a function which simply divides all the ratings by 100 and turns them into floats with the following assignment: &lt;br /&gt;image['rating'] = float(image['rating'])/100&lt;br /&gt;Still, rating not actualy getting inputted. And it's difficult to debug the page I visit sends a post to a page, which sends a post on teh server-side to teh page I want ot debug. I'm trying to user poster to send a post to that url, but it's not working. Maybe I'll just make my own form... Ok, so I used firebug (a better firefox plugin), made my own form in it with &lt;br /&gt;&lt;form method="post" action="http://50.17.62.172:8010/ratesubmit"&gt;&lt;br /&gt;&lt;input type="text" name="rating" value="2" /&gt;&lt;br /&gt;&lt;input type="text" name="imagekey" value="ed17a726-32e6-11e0-81fc-12313d028606"/&gt;&lt;br /&gt;&lt;input type="submit"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;Found some wacky stuff. I'm notious from programming so much. weee!&lt;br /&gt;And was able to see the error on that page directly.&lt;br /&gt;-view image isn't working quite right. app expects a get parameter, but the request is coming in the form of http://blah.thing/[variablehere], not http://blah.thing/?variable=[variablehere]. Luckily, I know django can handle this easily, I just don't remember what this functionality is called&lt;br /&gt;Logging for this project was super easy. You just send a post to a url with the info it wanted (I used python's urlib, and urlib2, with teh commands urllib2.Request('http://imaj.lddi.org:8080/log/submit',urllib.urlencode(params)), and urllib2.urlopen(newReq))&lt;br /&gt;&lt;br /&gt;-save my personal testing webserver (make appserver's url a variable)&lt;br /&gt;&lt;br /&gt;I realized I forgot to implement part of gettin ga list of images. Specifically, I always get the set of first images.&lt;br /&gt;SOoo... boy, I find this very difficult to just think right now. yikes.&lt;br /&gt;cannot compute. DOES NOT COMPUUUTE!&lt;br /&gt;if ratesort&lt;=nextratesort&lt;br /&gt;&lt;br /&gt;--------------------------------------&lt;br /&gt;ok now it's all working, except the registering for the load balancer. Somehow my file which call the bash scrip tot restart it isn't working. I htink I'll just directly get the python userscript ot restart the server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-5228093083082946431?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/5228093083082946431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2011/03/simple-db-and-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/5228093083082946431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/5228093083082946431'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2011/03/simple-db-and-django.html' title='simple db and django'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-6056793696186057551</id><published>2011-02-16T16:15:00.000-08:00</published><updated>2011-02-16T16:19:33.271-08:00</updated><title type='text'>forwarding a post in python</title><content type='html'>Wanted to run some data validation on a post request, then forward that request onto a different url.&lt;br /&gt;Used urllib2, although it wasn't exactly intuitive.&lt;br /&gt;In my python code, I receive an django.http Request object.&lt;br /&gt;To forward the request on, I did:&lt;br /&gt;|newReq=urllib2.Request('urlToFrwardTo',urllib.urlencode(req.POST))&lt;br /&gt;and then &lt;br /&gt;|urllib2.urlopen(newReq)&lt;br /&gt;&lt;br /&gt;The part that weirded me out was the why I needed to urlencode the post. The post parameters don't go in the url! Why would I urlencode them?&lt;br /&gt;Whatever, it didn't work unless I called 'urllib.urlencode' on the reqiest's POST parameters. Weird.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-6056793696186057551?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/6056793696186057551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2011/02/forwarding-post-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6056793696186057551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6056793696186057551'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2011/02/forwarding-post-in-python.html' title='forwarding a post in python'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1555220823767873338</id><published>2011-01-27T18:00:00.000-08:00</published><updated>2011-02-16T16:15:27.341-08:00</updated><title type='text'>setting up django fun</title><content type='html'>Just notes on what I'm up to in trying to get django to work for my Computer Science 462 class. I find this helpful for remembering where I left off and commands etc. But you will probably find it very boring unless you try and do the same.&lt;br /&gt;&lt;br /&gt;&lt;stuff from my cmopy&gt;&lt;br /&gt;using tutorial at http://docs.djangoproject.com/en/dev/intro/tutorial01/&lt;br /&gt;==========================&lt;br /&gt;Found I needed root priviledges, so I allowed the default users, 'ubuntu' root priledges by calling &lt;br /&gt;so I logged into bash as root by just typing&lt;br /&gt;|sudo bash&lt;br /&gt;then editing the /etc/sudoers file by typing&lt;br /&gt;|visudo&lt;br /&gt;and adding changing the line from &lt;br /&gt;root ALL=(ALL) ALL&lt;br /&gt;to &lt;br /&gt;ubuntu,root ALL=(ALL) ALL&lt;br /&gt;===========================&lt;br /&gt;I edited the settings file settings.py, and configured stuff for sqlite3, like the tutorial suggested.&lt;br /&gt;then, as it suggested, ran&lt;br /&gt;python manage.py syncdb&lt;br /&gt;which created the database file where I wanted it in /var/django/db/mikeServ.db&lt;br /&gt;---------------------------&lt;br /&gt;tried to view the schemas by typing &lt;br /&gt;|.schema&lt;br /&gt;with no luck. googled how to view schemas in sqlite. &lt;br /&gt;Googled what the matter might have been, found I needed pysqlite2, so ran&lt;br /&gt;|aptitude search pysqlite2&lt;br /&gt;found it, and ran&lt;br /&gt;|apt-get install python-pysqlite2&lt;br /&gt;but still can't find anywhere how to use it really, nor what comes with that package&lt;br /&gt;bah. I'll just assume it worked for now, even thought I can't check it. we shall see.&lt;br /&gt;---------------------------&lt;br /&gt;I want to use django for a class project which really doesn't require a local database, just using ajax and templates, so I skipped over the rest of the first page of teh tutorial having to do with creating objects/tables, but it seeemd good.&lt;br /&gt;----------------------------&lt;br /&gt;was interested in the admin pages to work, so I followed the instructions on teh next page:&lt;br /&gt;added django.contrib.admin to INSTALLED_APPS in settings.py, &lt;br /&gt;and ran&lt;br /&gt;|python manage.py syncdb&lt;br /&gt;then edited urls.py as indicated.&lt;br /&gt;-----------------------------&lt;br /&gt;Tried to run the /admin/ pages, but no go. I think I might need to restart the webserver:&lt;br /&gt;|/etc/init.d/apache2 restart&lt;br /&gt;When I visited my site (http://50.16.162.246/admin/) the next time, made some progress: got an error message! somethign about indentatino error in ursl.py, so I'll go fix taht. (Found the compy was right: forgot to remove preceding white-space when uncommenting). &lt;br /&gt;Now though, I'm getting a 500 error with no real helpful input. Hmm. progress? probably. I bet the error is coming from not reaaally having the database schemas, though I ran syncdb 'n all. I should verify those exist for reals.&lt;br /&gt;I foudn the problem was I don't have django stuff on my path, as explained in http://martinjansen.com/2008/10/20/django-settings-files-for-development-and-production/. I just need to add my settings.py file to the PATH, and some DJANGO_SETTINGS.&lt;br /&gt;Trouble with that, some help also on http://ubuntuforums.org/showthread.php?t=125735&lt;br /&gt;Found that didn't permanently solve anything. (This forum page has a good explanation of different config files like .bashrc and .bashprofile and stuff: http://ubuntuforums.org/showthread.php?t=125735).&lt;br /&gt;Eventually, found an easy way to add to the PYTHONPATH is just to add a file named whatever.pth to something that already is on a the pythonpath (like /usr/local/lib/python2.6/dist-packages) and in that file write nothing but the path to whatever I want to add to the python path.&lt;br /&gt;Still the DJANGO_SETTINGS_MODULE isn't found.&lt;br /&gt;Then I realized I had edited the wrong .bashrc file. I edited /.bashrc, when really I should ahve edited ~/.bashrc. bah!&lt;br /&gt;So edited taht file instead, restarted teh command-prompt shell, and voila! &lt;br /&gt;I could verify that PYTHONPATH was set by typing in &lt;br /&gt;|$PYTHONPATH &lt;br /&gt;into the shell and it would print it out&lt;br /&gt;However, I'm still getting a 500 error on teh admin pages.&lt;br /&gt;Added a symbolic link to the admin media stuff like suggested on http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/, but that didn't resolve it.&lt;br /&gt;Now I'm looking at http://code.djangoproject.com/wiki/django_apache_and_mod_wsgi&lt;br /&gt;Ok, more of the same. But I'm onto something now.&lt;br /&gt;I thought I really needed to see some better error logs. So I searched for where are the apache error logs, and found it's at:&lt;br /&gt;/var/log/apache2/error.log, right next to the access.log (I didn't know they were seperate). I then noticed what the error seems to be: &lt;br /&gt;[Sat Jan 29 16:25:55 2011] [error] [client 67.166.99.183] OperationalError: attempt to write a readonly database&lt;br /&gt;meaning the sqlite file that its trying to write to is set to be read-only. Which kinda makes sense. So I'm gonna check what the files permissions are, and change them to amke them write-whatever-you-want. (Did that by going to the file, which I placed in /var/django/db/mikeServ.db and did the command chmod 777 mikeServ.db)&lt;br /&gt;and BOOM BABY! Admin console!&lt;br /&gt;Except I didn't create the symbolic link to the media files right. &lt;br /&gt;And then I noticed it stillw asn't redirecting quite right. So I needed to edit the apache config file some more. Basically, I needed to make apache get the media files from where they're at on the server. So I added these lines to my /etc/apache2/sites-available/default file:&lt;br /&gt;Alias /media/ /usr/lib/pymodules/python2.6/django/contrib/admin/media/&lt;br /&gt;&lt;Directory /usr/lib/pymodules/python2.6/django/contrib/admin/media&gt;&lt;br /&gt;Order deny,allow&lt;br /&gt;Options Indexes&lt;br /&gt;Options FollowSymLinks&lt;br /&gt;Allow from all&lt;br /&gt;&lt;/Directory&gt;&lt;br /&gt;==================================&lt;br /&gt;ok so now I'm trying to get some pages to work,&lt;br /&gt;I ran &lt;br /&gt;|python manage.py startapp view&lt;br /&gt;|" " " list&lt;br /&gt;|" " " home&lt;br /&gt;to create 3 'apps' I guess that will host my files&lt;br /&gt;&lt;br /&gt;and added those 3 things to my list of installed apps&lt;br /&gt;and another issue is I'm not sure if django-admin.py is on my filepath. ...actually immediately remembered: it is, just under a different name, it's under django-admin (no '.py')&lt;br /&gt;-------------------------------------------------&lt;br /&gt;so I finished those views.py files, as follows:&lt;br /&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;br /&gt;# Create your views here.&lt;br /&gt;from django.http import HttpResponse&lt;br /&gt;from django.template import Context, loader, Template&lt;br /&gt;import urllib2&lt;br /&gt;import json&lt;br /&gt;&lt;br /&gt;def popular(req):&lt;br /&gt;	t = loader.get_template('popular.tmpl')&lt;br /&gt;	return HttpResponse(t.render({}))&lt;br /&gt;&lt;br /&gt;def recent(req):&lt;br /&gt;	t = loader.get_template('recent.tmpl')&lt;br /&gt;	response=urllib2.urlopen('http://imaj-app.lddi.org:8010/list/recent')&lt;br /&gt;	dictResponse=json.loads(response.read())&lt;br /&gt;	c = Context({'imagelist': dictResponse['images'],'nextsubmitdate':dictResponse['nextsubmitdate'],'nextratesort':dictResponse['nextratesort']})&lt;br /&gt;	return HttpResponse(t.render(c))&lt;br /&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;br /&gt;and then the template:&lt;br /&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;,&lt;br /&gt;&lt;style&gt;&lt;br /&gt;.listitem {&lt;br /&gt;	margin-bottom: 2em;&lt;br /&gt;}&lt;br /&gt;.listitem a {&lt;br /&gt;	float:left;&lt;br /&gt;	margin-right: 2em;&lt;br /&gt;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Recent Images&lt;/h1&gt;&lt;br /&gt;{% for image in imagelist %}&lt;br /&gt;&lt;div class="listitem"&gt;&lt;br /&gt;&lt;a href="{{image.viewurl}}"&gt;&lt;img src="{{image.thumburl}}"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;{{image.description}}&lt;/p&gt;&lt;br/&gt;&lt;br /&gt;Submitted by {{image.submituser}} on {{image.submitdate}}&lt;br /&gt;&lt;br clear="both"/&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;{% endfor %}&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;{% if nextsubmitdate %}&lt;br /&gt;&lt;a href="/list/recent?nextsubmitdate={{nextsubmitdate}}"&gt;More Images ...&lt;/a&gt;&lt;br /&gt;{% endif %}&lt;br /&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;br /&gt;the ta gave the template to us originally in some 'cheetah' python template language, but converting it to django's template language was easy: the semantics (the way it works) are just the same, just silly difference in syntax.&lt;br /&gt;and voila! I have a page which renders! bwahahaha!&lt;br /&gt;----------------------------------&lt;br /&gt;I noticed the page was missing headers, css stuff, etc.&lt;br /&gt;After inspecting the templates, I realized they had no declaration of &lt;html&gt; etc, or importing of css files. Reason: I wasn't using the main template at all!&lt;br /&gt;Apparently Cheetah works differently from django's template. In Cheetah the parent template imports the others by just inserting $main somewhere in teh html. IN django, you need a tag in the parent saying &lt;br /&gt;{% block WHATEVER %}{%endblock%} and in the child template, you need to start with {&lt;br /&gt;%extends 'WHATEVERYOUCALLEDTHEPARENT.tmpl'%} &lt;br /&gt;and then &lt;br /&gt;{%block WHATEVER%} {%endblock%} (note that the names must match)&lt;br /&gt;And then when it loads the child template, it'll look for teh parent, load it, and insert the child template where indicated.&lt;br /&gt;-------------------------------------&lt;br /&gt;About that css stuff. Sure enough, it wasn't finding the css.&lt;br /&gt;I read somewhere about how you can serve static files simply using apache. That makes sense, but I think somehow my django config was interfering with the usual serving of static files from my directory of /var/www. &lt;br /&gt;So, I poked around and noticed that I could just add &lt;br /&gt;(r'^site_media/(?P&lt;path&gt;.*)$', 'django.views.static.serve',{'document_root': './site_media','show_indexes': True}),&lt;br /&gt;to my list of urlpatterns in urls.py. But it wasn't working.&lt;br /&gt;After a bit, i noticed the reason: './site_media' was meant to point to where the static files folder was located on the hard drive. I suppose it's meant to be a relative uri, but it wasn't working. Switched it to a absolute uri and it worked.&lt;br /&gt;--------------------------------------&lt;br /&gt;Starting making another page which was basically identical to my first one &lt;br /&gt;(which just sends out a request and then parses it into a json object and displays it) and got a goofy error saying something about how the dict module had no function named 'push'. Really random. I saw it before htough. And I had the advantage of this page being basically the exact same as the previous one. So I compared them: identical. Then I remembered: sometimes you need to restart apache for the python to get reloaded. So restarted apache and it worked.&lt;br /&gt;-------------------------------------&lt;br /&gt;wanted to be able to log stuff on my server.&lt;br /&gt;SO, I followed the instructions on http://djangosnippets.org/snippets/1731/,&lt;br /&gt;and added 'site_logging' to my list of installed apps, and added the site_logging.py file in the root of my django/mikeServ directory. Then called logging as instructed (even though I would have thought I should have been calling 'site_logging', but just 'logging' did it.)&lt;br /&gt;Viewed the error log using &lt;br /&gt;|tail -f /var/log/apache2/error.log&lt;br /&gt;BOOM BABAY!&lt;br /&gt;--------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1555220823767873338?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1555220823767873338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2011/01/setting-up-django-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1555220823767873338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1555220823767873338'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2011/01/setting-up-django-fun.html' title='setting up django fun'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1515494757424898565</id><published>2010-04-07T21:49:00.000-07:00</published><updated>2010-04-07T21:52:48.711-07:00</updated><title type='text'>Better Motivation than Caffeine and Heavy Metal</title><content type='html'>“As you keep these standards [from &lt;span style="font-style:italic;"&gt;For the Strength of Youth&lt;/span&gt;] and live by the truth in the scriptures, you will be able to do your life’s work with greater wisdom and skill and bear trials with greater courage” (&lt;span style="font-style:italic;"&gt;For the Strength of Youth&lt;/span&gt;, page 2). Those words meant very little to me when I first read them in high school, mostly because I had relatively little work &lt;span style="font-style:italic;"&gt;to do&lt;/span&gt;. But now that finals are approaching, big decisions abound, and I often wonder if I can get everything done, this promise has taken on greater meaning. What’s more, I’ve already experienced this in my life. Often I’ve spent hours working on a project half-heatedly, but when I’m filled with hope and the Spirit I'm much more effective with my time. I especially find starting my homework sessions with a scripture study session to be helpful. Not necessarily because Nephi wrote much about programming in Ruby, but because scripture study helps me be more optimistic and motivated. Some programmers’ best fuel is caffeine and heavy metal; mine is hope and the Spirit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1515494757424898565?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1515494757424898565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/04/better-motivation-than-caffeine-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1515494757424898565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1515494757424898565'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/04/better-motivation-than-caffeine-and.html' title='Better Motivation than Caffeine and Heavy Metal'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-6780943534028510018</id><published>2010-04-07T12:12:00.000-07:00</published><updated>2010-04-07T12:19:38.565-07:00</updated><title type='text'>The iPad: So Easy a 2.5-Year-Old Can Use It</title><content type='html'>The iPad is just a big iPod, right? And yet it’s the way of the future. As I write this, I keep getting this nagging feeling, saying “You dinosaur! Look at you with your mouse, keyboard, and clunky laptop… get with the program! Get an iPad!” Why is this so? The iPad’s interface is incredibly intuitive, as this 2.5-year-old demonstrates.&lt;br /&gt;&lt;object width="320" height="265"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pT4EbM7dCMs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&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/pT4EbM7dCMs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt; It will be great for typing when you don’t want the noisy keyboard-chatter. It can simultaneously be your textbook and notebook. Artists will use it for sketching. You can watch movies on it on road trips, and use the Internet and email comfortably on this Goldilocks-sized device. But does the iPad have its killer app? To be honest: I haven’t seen one yet and am personally unconvinced I need an iPad for now. But with the open-market app store the possibilities are limitless, and many killer apps are surely on the way; in 5 years expect to throw your laptops, books and GPSs with the rest of your junk and use the iPad for everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-6780943534028510018?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/6780943534028510018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/04/ipad-so-easy-25-year-old-can-use-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6780943534028510018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6780943534028510018'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/04/ipad-so-easy-25-year-old-can-use-it.html' title='The iPad: So Easy a 2.5-Year-Old Can Use It'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-761121009873565613</id><published>2010-03-24T21:43:00.001-07:00</published><updated>2010-03-29T20:55:37.645-07:00</updated><title type='text'>Vlog post</title><content type='html'>&lt;object width="320" height="265"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-oUI_wObfbE&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/-oUI_wObfbE&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&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/5291647920638443589-761121009873565613?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/761121009873565613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/vlog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/761121009873565613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/761121009873565613'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/vlog-post.html' title='Vlog post'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1198906579981797759</id><published>2010-03-22T22:31:00.000-07:00</published><updated>2010-03-23T07:41:56.994-07:00</updated><title type='text'>Technology and Perdition</title><content type='html'>Why do we fight against integrating technology into the Church? &lt;a href="http://www.lds.org/ldsorg/v/index.jsp?hideNav=1&amp;locale=0&amp;sourceId=57de05481ae6b010VgnVCM1000004d82620a____&amp;vgnextoid=2354fccf2b7db010VgnVCM1000004d82620aRCRD"&gt;Brother Cannon’s 1984 statement that&lt;/a&gt; “too much dependence on computers can cause a person to be less receptive to the promptings of the Spirit” is an almost humoristic example; how could technology possibly dampen my receptiveness to the Spirit? Perhaps if I ignore people, or if I waste my time playing Minesweeper, technology could be a detriment. But, 36 years later, the Church is clearly dependent on computers, despite Brother Cannon. How could ward clerks fulfill their calling without computers today? They can’t. Brother Cannon’s statement simply appeased the Luddite Church members, of which I am, partially, one. Do you cringe with me when you see cell phones used in Church? Or how about iPhones used instead of scriptures? Maybe it’s a good idea but, deep down, we feel people are “cheating,” or not doing it the “proper” way. I’ve dreamt of having all my notes from Church on my computer, so I can organize them according to date, theme, or whatever. But I’ve resisted bringing my computer to Church because of that Luddite knee-jerk inside me. “Won’t I distract people if I’m typing away during Sacrament meeting?” Perhaps, but nowhere in scriptures does it say “all spiritual impressions must be written down on paper.” Nephi sure didn’t use paper, why do I feel I’m restricted to that? I say it’s the inner Luddite—better yet, Pharisee!—speaking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1198906579981797759?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1198906579981797759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/technology-and-devil.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1198906579981797759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1198906579981797759'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/technology-and-devil.html' title='Technology and Perdition'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-3177387996794542151</id><published>2010-03-18T10:08:00.001-07:00</published><updated>2010-03-20T15:45:55.314-07:00</updated><title type='text'>Where's the Empirical Evidence for Open Source Superiority?</title><content type='html'>Eric Raymond, in &lt;a href="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/"&gt;“The Cathedral and the Bazaar,”&lt;/a&gt; proclaims the wonders of open source development. But where is the evidence for its superiority? Where is the empirical evidence? Linux is successful, but closed source Windows and Macintosh are far more successful!  Why has closed source software won in these two cases? Because most users don’t want to be developers. When you go to write an English paper, you just want a word-processor that works, not one that forces you to fight through bugs and to add new features. From the developer’s perspective it’s very nice to have your users be your debuggers and co-developers, but most users don’t want those extra jobs. The only users that happily fill that role are in a technically-orientated minority. For that reason open source is not the way of the future, but it survives and thrives in its own niche.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-3177387996794542151?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/3177387996794542151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/wheres-empirical-evidence-for-open.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3177387996794542151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3177387996794542151'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/wheres-empirical-evidence-for-open.html' title='Where&apos;s the Empirical Evidence for Open Source Superiority?'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-8666442749185265053</id><published>2010-03-16T10:01:00.000-07:00</published><updated>2010-03-16T10:05:48.855-07:00</updated><title type='text'>5 Keys for Being Well-Rounded</title><content type='html'>The future will go to the great synthesizers: those who can combine two seemingly unrelated things and make something new of real value. For example: combining degree programs and breakfast cereals, swimming and chocolate pudding, or swivel chairs and skiing. But in order to become a great synthesizer, you need to first be well-rounded, a skill which is taught only indirectly at best. In the spirit of professionalism, I have found the following 5 things have successfully turned me into a well-rounded individual:&lt;br /&gt;1. When you get exercise, turn the TV onto a random channel and watch it, regardless of whether you like it or not. Even though this may not teach you about real life (e.g.: you could coincidentally tune into &lt;span style="font-style:italic;"&gt;The Cosby Show&lt;/span&gt;, which teaches you nothing about real Afro-American life, or &lt;span style="font-style:italic;"&gt;Die Hard: Or Live Free&lt;/span&gt; which teaches you very little about how to safely drive a truck down an elevator shaft), this exercise has nonetheless proven beneficial in my life.&lt;br /&gt;2. Periodically, learn more what it’s like to not be well-rounded. E.g.: Do homework all day every Saturday. You will learn to become amused at incredibly small things, like billboards and jingles, and have more self-control.&lt;br /&gt;3. Sit somewhere new in class every day and meet the people you sit next to. Not only is doing things in different ways incredibly stimulating to your brain (my brother demonstrated this by opening the door backwards, which he claimed somehow made him smarter,) but you’ll learn about lots of different people. Although you, a granny, and punk-rocker all live in the same neighborhood, all three of you effectively in live dramatically different worlds. &lt;br /&gt;4. Be a nerd. It doesn’t matter what type, but be a good nerd. You could be a movie-nerd, a football nerd, a punctuation nerd. Nerds diversify society, and provide comical relief. Imagine life without nerds: &lt;span style="font-style:italic;"&gt;World Of Warcraft&lt;/span&gt; nerds, &lt;span style="font-style:italic;"&gt;Pride and Prejudice&lt;/span&gt; nerds, and CPU-optimization nerds! You owe it to yourself and society to be a nerd.&lt;br /&gt;5. Write in your journal and ask yourself “Was that a waste?” This will help you to reflect and prevent wasting years of your life towards useless pursuits.&lt;br /&gt;I hope these five principles help you become as well-rounded as they have me, and thus help you too to become a great synthesizer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-8666442749185265053?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/8666442749185265053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/future-will-go-to-great-synthesizers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/8666442749185265053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/8666442749185265053'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/future-will-go-to-great-synthesizers.html' title='5 Keys for Being Well-Rounded'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1191410738385035962</id><published>2010-03-11T07:56:00.000-08:00</published><updated>2010-03-22T22:41:27.668-07:00</updated><title type='text'>Wild West Style Stem Cell Therapy</title><content type='html'>Doctors from Colorado &lt;a href="http://singularityhub.com/2010/03/09/colorado-doctors-skirt-fda-jurisdiction-to-provide-human-stem-cell-therapies-video/"&gt;have bypassed federal FDA regulations&lt;/a&gt; in administering stem cell therapy. The procedure involves no surgery, only extracting stem cells from a patient’s body, growing them in a culture, and reinserting them into the damaged area; and it has worked remarkably well. While experiments show stem cells heal dogs and horses in miraculous ways, it is a long road to FDA approval, and these doctors couldn’t wait any longer. Because their practice is restricted to operations solely within a single state, they claim exemption from federal FDA regulations. While many laud this as being &lt;i&gt;just what the doctor ordered&lt;/i&gt;, and find FDA approval is too slow, let’s not forget the Wild West days are over: the government needs to approve new therapies. While bureaucracies are slow-moving, in this situation they’re better than total deregulation. (Imagine it: “Oh sorry, these pills don’t alleviate head-aches like we thought, they actually kill you.”) These doctors are not only defying the FDA by claiming these procedures are safe, they’re doing it without any peer-review. Although stem cell therapy may be the miracle cure of the future, and the FDA may be unnecessarily slow, trusting therapies which haven’t been approved by the FDA, or anybody besides the administering doctors, is a bad idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1191410738385035962?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1191410738385035962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/wild-west-style-stem-cell-therapy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1191410738385035962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1191410738385035962'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/wild-west-style-stem-cell-therapy.html' title='Wild West Style Stem Cell Therapy'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-2584813801054565507</id><published>2010-03-04T08:55:00.000-08:00</published><updated>2010-03-06T21:54:37.674-08:00</updated><title type='text'>The Entertainment Industry's Century-Old Business Model</title><content type='html'>How popular would Google be if you paid per search? Imagine it: you type in a search and “ding!” and you’re redirected to a page basically saying, “If you really want to see the search results, pay $2. Otherwise, forget about using Google.” The search engine would have been a complete flop because that business model is totally unsuited for the business. And yet, that is precisely what the entertainment industry is doing: continuing to try to apply an aging business model to a business which is radically different than it was a century ago when it emerged. Consider another example: your city is having a fireworks show tonight downtown, and they insist the show is copyrighted and charge $10 per viewer. Even if you weren’t interested in seeing the fireworks, you probably would look up at least periodically and see it from anyone in town, and inadvertently infringe copyright. Should you be sued?  The entertainment industry sure would try! They sue for viewing material which is as easily copied and viewed as the cityscape sky. Rather than adopting their business model to maximize on technology’s incredible ability to distribute their products (say through placing advertisements in their movies or songs) they instead prefer to restrict its distribution and charge customers directly. Music and movie files are as easily distributed as radio and TV programs, so why not adapt their business model in the same way? Whether they like it or not, technology has changed our world: the entertainment industry needs to stop suing and start updating their century-old business plan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-2584813801054565507?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/2584813801054565507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/entertainment-industrys-century-old.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/2584813801054565507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/2584813801054565507'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/entertainment-industrys-century-old.html' title='The Entertainment Industry&apos;s Century-Old Business Model'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-933741864987660874</id><published>2010-03-02T07:21:00.001-08:00</published><updated>2010-03-04T21:59:55.333-08:00</updated><title type='text'>Video Game Testimonial</title><content type='html'>With the headline “[Iowa State University] study proves conclusively that violent video game play makes more aggressive kids,” everyone above the age of 40 who has never played video games sits back in their chair and declares “I knew it.” I personally decided at age 17 to nearly completely wipe video games from my life, but I can personally testify of three of their benefits. First video games improved my typing skills: although middle school classes helped me to type faster, nothing helped me type as fast as when I was calling for help while under a zergling attack. A second is learning: the board game/video game Risk taught me more about geography than any class. Ask anyone where Siam (an otherwise obscure country, but important in the game) was located, and if they’ve played risk they’ll tell you. They might not, however, be able to pinpoint Thailand with the same accuracy, even though they’re the same country and that would have been what your high school classes would have taught you about. Lastly, the third way video games helped me is through computer skills: we always assume “techys play video games,” but rarely consider the possibility that “video games help make techys.” Yesterday I was reinstalling an old computer game from 1995: Command and Conquer. I was reminded of how much extensive configuration was needed to install it, and how much more understanding of modems and cables was necessary to play online. So if kids wanted to play this game, they would, of necessity, need to learn about their computer in ways they would otherwise not learn until university. Could that be a reason why some kids are so technologically advanced? A different study than the Iowa State one “concluded that computer games can be a positive feature of a healthy adolescence.” While I neither praise video games as heaven-sent, nor conclude they are for everyone, I can personally testify of their benefit in my life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-933741864987660874?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/933741864987660874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/video-game-testimonial.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/933741864987660874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/933741864987660874'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/03/video-game-testimonial.html' title='Video Game Testimonial'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1198328928723605429</id><published>2010-02-22T21:13:00.000-08:00</published><updated>2010-02-22T21:16:05.597-08:00</updated><title type='text'>Optogenetics: controlling the brain with light</title><content type='html'>It’s a mad scientists’ dream come true! Researchers in the field of Optogenetics have discovered how to control brain cells using light. They take the light-sensitive genes from certain bacteria, using genetic-engineering techniques, and insert those genes into brain cells. These cells will then fire anytime light is shone on them. But how do scientists get light to brain cells? And why do we care if we can make specific brain cells fire? Light is usually introduced into the brain through a fiber-optic cable. Although this seems like a very impractical fashion-feature, combining it with genetic engineering techniques of pinpointing certain cells it allows scientists to fire specific neurons at an unparalleled level of accuracy. Using it, &lt;a href="http://www.stanford.edu/group/dlab/movies/Gradinaru%20J%20Neurosci%202007%20Movie%201.wmv"&gt;scientists have controlled the movement of mic&lt;/a&gt;e, the taste-preference of flies, and have come to a far better &lt;a href="http://www.newscientist.com/article/dn18353-optogenetics-controlling-brain-cells-with-lasers.html"&gt;understanding of mental illnesses&lt;/a&gt; like Parkinson’s’ disease and depression. Although human-testing is still some years away, using it in combination with special genes which work in the opposite direction (causing brain cells to glow when fired) it may also revolutionize human-computer mental communication. (Think robotic arms: the arm speaks to the brain by sending light to the brain, and the brain communicates to the arm by having certain brain cells illuminate.) Despite all of Optogenetics’ practical purposes, mad scientists can’t help but smile at that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1198328928723605429?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1198328928723605429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/optogenetics-controlling-brain-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1198328928723605429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1198328928723605429'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/optogenetics-controlling-brain-with.html' title='Optogenetics: controlling the brain with light'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-3962246831812992911</id><published>2010-02-17T23:07:00.000-08:00</published><updated>2010-03-06T22:42:13.685-08:00</updated><title type='text'>Why Youngsters Make Computer Viruses</title><content type='html'>Why do young people make computer viruses? Because you treat them badly! Imagine this: you’re a nerd, everyone makes fun of you, you’re not good looking, witty, or athletic, and you want to get even. How would you do it? No matter how much you take it out on village folk with your “Sword of a Thousand Sorrows” in World of Warcraft, you’re eventually going to want to do something else that really proves your worth and power. So you focus all your reclusive strength on developing a computer virus. And it works; you make 100,000 computers crash over the course of a month, you hear your virus’ sweet name all over the news, and you get instant bragging rights. It really makes sense. You’re getting back at a society that deserves it and proving you can cause about as much havoc as Godzilla.&lt;br /&gt;So what can we do about this? Is there any way to harness all this computational power for good? Is there a way to help those who are socially inept but technically advanced show their skills and gain recognition? One idea is to have more computing contests: for example, to have Microsoft award $10,000 to whoever can design the coolest new feature for Microsoft Word. This would also provide a monetary incentive, but admittedly lacks the juiciest part of making viruses: doing damage. So another idea is one that’s already well implemented: having open&amp;ndash;source software which nerds all over can develop. For young hackers who want to annoy Microsoft, making competing, completely free, software seems to take chunk out of Microsoft’s profits and effectively “stick it to ‘em.”&lt;br /&gt;Also, why are hackers always between the ages of 17 and 26? Why are there so few 40-50 year old hackers? At BYU’s Office of Information Technology, nearly half of all employees are in this age range and experiencing their midlife crises, so the reason can’t be because there are no technologically oriented middle-aged folk. But when they’re presented with the choice of working for 8 hours at their high-paying job, or working for 8 hours receiving only the wages of anarchy, they choose the more profitable one. Whereas when young people are presented with the choice of either eight hours at near-minimum wage or becoming cyber Ghanghis Khans, many choose the latter. And, again, it makes sense. Once they have proven their skills, software designers would be foolish to not hire such a demonstrably talented upstart. &lt;br /&gt;Any economist can tell you that people react to incentives. And the incentives for young, technologically-orientated people to become hackers are often outweighing the deterrents. If we spent less money trying to catch and fight them, and more trying to harvest their brains, this situation could be dramatically changed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-3962246831812992911?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/3962246831812992911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/why-do-young-people-make-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3962246831812992911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3962246831812992911'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/why-do-young-people-make-computer.html' title='Why Youngsters Make Computer Viruses'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-1327827804915154203</id><published>2010-02-04T08:26:00.000-08:00</published><updated>2010-02-04T08:30:26.330-08:00</updated><title type='text'>Outsourcing the Church</title><content type='html'>In my home city of Victoria, there was a government-owned, poorly managed ferry service which was recently made public. It was sold to some company which made major overhauls, not all of which were welcome, but which caused it to be managed far more efficiently. As a result, it is no longer a public liability and is actually profitable. The LDS Church seems to be making some similar changes. I recently heard that the Book of Mormon is now to be published by a private company and the Church’s Personal Ancestral File (PAF) genealogical management program is being phased out by a private program called Roots Magic. Is this wrong? Should private companies be allowed to profit from religious endeavors (like scripture reading and family history research)? If the work can be done more efficiently by a private company, and thereby occupy fewer tithing-funds, why not outsource? Economics teaches us that generally private companies are more efficient than public ones (the Church being compared to the government) but that they’re also less responsible. As long as the Church is able to oversee these private companies I think the principle of outsourcing can be just as advantageous to the Church’s progress as to any government organization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-1327827804915154203?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/1327827804915154203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/outsourcing-church.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1327827804915154203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/1327827804915154203'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/02/outsourcing-church.html' title='Outsourcing the Church'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-3561308832776568967</id><published>2010-01-27T21:33:00.000-08:00</published><updated>2010-01-27T21:43:52.818-08:00</updated><title type='text'>Is Twitter dead?</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmnelson4%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* 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-fareast-font-family:"Times New Roman";} @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;} --&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-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 14pt;"&gt;Twitter, the online phenomenon which was once growing at the fabulous rate of 900% per year, has seemingly reached a peak of popularity and hasn’t surpassed its July 2009 highs. What happened? Is it already old technology, obsolete and destined to become junk in a landfill somewhere? Don't jump to that conclusion just yet. I personally still have never used Twitter, but I can see why it would be useful. I don’t care about bits of “cool,” but useless, information (like what Miley Cyrus had for breakfast). If, however, I were investing and wanted to subscribe to Warren Buffet’s latest tweets on the stock market, I would be happy to use Twitter. It won’t have the social impact the printing press had, but it has its place. Twitter has experienced what is often described as the “Peak of Popularity,” (when we were tempted to use it just because it was “cool”) and is now in its “Slough of Disillusionment,” (we're realizing it won’t bring world peace) and will soon reach the “Plateau of Productivity” (we'll keep using it because it's useful). So no, I don’t think Twitter has actually died. It just got stuck in a grocery store and is flapping around in circles crazily, but will eventually be shooed out the doors by staff, and all will be well. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-3561308832776568967?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/3561308832776568967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/is-twitter-dead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3561308832776568967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/3561308832776568967'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/is-twitter-dead.html' title='Is Twitter dead?'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-7465433300994303515</id><published>2010-01-25T21:49:00.001-08:00</published><updated>2010-03-06T22:31:31.029-08:00</updated><title type='text'>Is this the face of a nerd?</title><content type='html'>Computer Science is not just for nerds! Why do we all have that impression? Just look at my photo on the top of the screen &amp;mdash;am I a nerd? (I hope you’re not hesitating, wondering how to respond.) Obviously not! During my first year at university, I was surprised to find a girl I knew from high school in my computer science class. She wasn’t a “Dungeon Master," Ladder-Match Starcraft player, or even a ”techy,” but she did fine in the class. She often explained junk to me. Contrasting this, I did have some friends who had “Half-Life 2” t-shirts, PDAs (while they were still new and cool) and lived and breathed computers but couldn’t get their programming assignments done on time. They were the stereotypical nerds, yet showed that nerds really are no better at Computer Science than normal people. So why does this stereotype persist? For the same reason people think “frenchies” don’t bathe, blondes are air-headed, and college students are always brewing anarchy: ignorance and television.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-7465433300994303515?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/7465433300994303515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/is-this-face-of-nerd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/7465433300994303515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/7465433300994303515'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/is-this-face-of-nerd.html' title='Is this the face of a nerd?'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-454962828599269900</id><published>2010-01-20T17:17:00.000-08:00</published><updated>2010-03-06T22:27:37.100-08:00</updated><title type='text'>France vs. Microsoft</title><content type='html'>January 15, 2010, the French government officially advised its citizens to not use Microsoft Internet Explorer. The reason the government stepped outside of its usual bounds is Internet Explorer 6 has a bug which allows remote execution of malicious code. Despite this reasoning, the government is probably not solely looking out for its citizens' protection, or else it would have only discouraged using version 6, which has the bug, instead of all versions. It's like the Canadian government discouraging its citizens from buying Fords, or wearing Levi's. It just seems weird, but not entirely out of character for the French government. My mom, who is French, says they banned peanut butter 20 years ago because of "high cholesterol content." So the Fifth Republic has angered the peanut butter guys, the Microsoft guys, most Americans since 2001, and actually most of its own citizens (as shown by their annual strikes on most public services). So I'm pretty sure we have another French Revolution in the oven.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-454962828599269900?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/454962828599269900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/france-vs-microsoft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/454962828599269900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/454962828599269900'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/france-vs-microsoft.html' title='France vs. Microsoft'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-6102902509587607097</id><published>2010-01-14T09:03:00.000-08:00</published><updated>2010-01-14T09:06:57.014-08:00</updated><title type='text'>Dishwashers? Where we're going we don't need dishwashers</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cmnelson4%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* 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-fareast-font-family:"Times New Roman";} @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;} --&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-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;Clearly, using a dishwasher and putting dishes away is too difficult for most college students. The best technologies, like good friends, accept you for who you are and work with that. I don’t want to get up and put dishes into the dishwasher, don’t have enough dishes to merit another wash-cycle, and don’t want to then arrange dishes in my cupboard. When was the last breakthrough in dishwashing technology? Since the dishwasher, there have been none. Are you ready for the next generation of dishwashing technology? Take a breath. Here it is: self-washing dishes that you don’t want to put away (SWDTYDWTPA, or Swda for short). Each dish: cleans itself by emitting soapy-steam through microscopic pores when it detects disuse; is a piece of artwork, like a painting, you want to display instead of hiding in a cupboard; and is magnetized for easy placement on your corresponding magnetized wall and furniture. So imagine it: you’re watching Die Hard 4, and eating a microwave dinner on your Swda. Unfortunately, your meal and the movie don’t end at the same time. So instead of being unnecessarily inconvenienced by putting your Swda away, you simply throw the Swda against the wall, it magnetizes and sticks, cleans itself by emitting the soapy vapor through its pores, and then your buddies come over, see it, and say “No way! You got the Kobe Bryant Swda! That’s the coolest one!” A new age of dishwashing is upon us.&lt;br /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-6102902509587607097?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/6102902509587607097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/dishwashers-where-were-going-we-dont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6102902509587607097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/6102902509587607097'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/dishwashers-where-were-going-we-dont.html' title='Dishwashers? Where we&apos;re going we don&apos;t need dishwashers'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5291647920638443589.post-622766034392020372</id><published>2010-01-12T08:11:00.000-08:00</published><updated>2010-01-12T08:13:21.390-08:00</updated><title type='text'>first blog entry</title><content type='html'>Here's my first blog entry. I was tempted to try Wordpress, but I don't want to have to install anything (I bet it has more functionality, but this is so much simpler to just do it from the web-browser. Once again, the product that encourages laziness wins.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5291647920638443589-622766034392020372?l=cmljnelson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmljnelson.blogspot.com/feeds/622766034392020372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/first-blog-entry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/622766034392020372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5291647920638443589/posts/default/622766034392020372'/><link rel='alternate' type='text/html' href='http://cmljnelson.blogspot.com/2010/01/first-blog-entry.html' title='first blog entry'/><author><name>Mike Nelson</name><uri>http://www.blogger.com/profile/17839946385376512296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
