A couple of weeks ago the NYTimes had an article about the San Diego Comic-Con. It’s title: We’re All Geeks Here. The article itself isn’t terribly offensive - in fact it does a pretty good job at being respectful and non-exploitative, but the mere fact that it appeared in the Times drives me crazy.
I can’t pinpoint the origins, but some time ago there was a decision made by whatever syndicate runs the media that the identity of the ‘geek’ had become marketable. There is an outsider allure and a kind of universal appeal to anyone whose ever passed over for lack of social grace. So you played with Star Wars action figures when you were a kid or you had a calculator wrist watch. I bet you might even spend some time playing video games or ‘hacking’ online.
What I find so offensive about the new Geek identity is its ability to alienate a true geek from his/her peer group. A true geek is the kind of kid you find in the mall at the gaming store playing Magic or perhaps D&D, with the greasy hair and the velvet cape. One that is so interested in HAM radio or building rockets that they will speak for ours on it. These are the kind of people who fall into a group of friends because they annoy the hell out of everyone else. They stand together, united behind the banner of geekdom.
But now its cool to be a geek. Go get your HAM radio operators license, show the rest of the kids on the block just how eccentric yet stunningly intelligent you are. Invite your friends over and join the local chapter. Soon enough you and your six buddies run the club and the socially inept ones feel so threatened they retreat to their basements paint their miniatures in blissful solitude.
I’m doing a poor job making my argument, but let me boil it down for you. Basically, I see the geek identity as a passing trend which is exploitative and isolating to the ones who truly earned the right to wear that badge. Being an outsider has become the cool thing to do which pushes the true outsiders even further out.
August 21st, 2007 by Dan Life
I’ve been working on an application for work that is to be distributed by Java Web Start (JWS) and I can see what all the fuss is about. I have really gotten into it yet, I hardly know anything actually, but I do know that it makes it incredible easy to distribute an app.
Basically, JWS is a technology that allows you to bundle up a Java app in jars and then bundle it on a web server so that it can be downloaded as needed. Once you’ve downloaded it you can run it locally, but if there is a change to the code on the server JWS will grab the new package and update your app. It combines the mobility of Java applets with a feature rich, locally run Java application.
With all of the convenience of distribution I had a few problems getting it up and running. I’ll qualify that statement with this: I didn’t spend a lot of time reading up on JWS or how to debug it and ultimately it wasn’t really JWS fault that I was having trouble (a logic disconnect between the chair and the keyboard). To solve the problem I enabled the Java console which can be found (in Windows) under Control Panels>Java>Advanced> Enable Console and Enable debugging. My main problem was that the app would download and launch and then hang giving me no errors or wouldn’t display anything. I turned out that there was a problem loading one of the libraries.
To get the full benefit out of JWS I should probably do a lot more reading. What I’ve come across so far has been pretty good, but I’m sure there’s tons more information out there. I’d recommend reading up on JWS over at Sun’s page, there’s Wikipedia of course and there’s a pretty good article over at JavaWorld which gives a good overview of the history and its uses.
Mongrel is a lightweight web server that is quite popular with the Ruby on Rails crowd. It’s apparently really great at serving dynamic pages and is often coupled with Apache which serves the static pages. Set up is extremely easy
gem install mongrel
and running it is much the same.
mongrel_rails start -d
There are some things that I found particularly annoying about it. Mostly you have to be in the document root of the rails app when you start the daemon for it to know where everything is.
Because mongrel runs one thread at a time it can only answer one request at a time. This can be problematic when you’ve got a busy site with many requests a second (I’ve heard a single mongrel instance can handle around 25 requests a second, but I couldn’t site my source). To overcome this limitation you can run mongrel behind Apache’s mod_proxy and mod_proxy_balancer which allows you to create some psuedo load balancing. This is all done through Apache’s httpd.conf file (or whatever imports you want to add to it). You’ll need to load the proxy modules, the balancer module and the rewrite module for things to work right. My configuration looks something like this:
<virtualhost *:80>
ServerName myserver.com
DocumentRoot "/path/to/doc/root"
<proxy balancer://mongrel_cluster> #This is the name of the cluster group, can be anything
BalancerMember http://localhost:xxx0 # the location of your additional mongrel instances
BalancerMember http://localhost:xxx1
</proxy>
ProxyPass /images ! # Don't let mongrel serve these pages - static content
ProxyPass /stylesheets !
ProxyPass /javascripts !
Alias /appName /full/path/to/your/app #only needed if app resides somewhere other than docRoot
ProxyPass /appName balancer://mongrel_cluster
ProxyPassReverse /appName balancer://mongrel_cluster/
RewriteEngine On
ProxyRequests Off #SysAdmins don't usually like open proxies
# Check for static index
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}/index.html -f
RewriteRule ^(.*)$ $1/index.html [QSA,L]
# Check for Cached pages
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -d
RewriteRule ^(.*)[^/]$ $1/ [QSA,L]
# Send all other requests to Mongrel to be dynamically generated
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
# Compress text files so they can be loaded more quickly
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
As you can see its not overly complicated. The rewrite can be intimidating, but they’re recipes mostly you wouldn’t need to change them. There is some good documentation online, but not copious amounts of it. I’d recommend here and here for more resources, but you’re a smart kid, you can find your own answers using google.