<?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-8108995</id><updated>2011-08-21T05:25:21.237-07:00</updated><title type='text'>Functional Form</title><subtitle type='html'>Avoiding side-effects since 2004.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8108995.post-7381104591929435043</id><published>2007-05-23T22:35:00.000-07:00</published><updated>2007-05-24T00:26:05.646-07:00</updated><title type='text'>REST: From theory to practice</title><content type='html'>REST. What is it, and how can it be used to design better web applications?&lt;br /&gt;&lt;br /&gt;A presentation at RailsConf did me a great service by first pointing out all the things REST is not. It isn't CRUD. It isn't pretty URLs. It is neither a protocol nor an architecture, but it can play a role in your implementation of all of the above. REST itself though, is less concrete than all of that. It is a theoretical framework, a way of thinking about designing distributed software systems. For me, the first step in absorbing its principles is to forget about the database and focus on the fundamentals. This article will start there, then drill down to show how these ideas can help organize the development of your Rails applications.&lt;br /&gt;&lt;br /&gt;REST encourages a focus on resources. A resource is anything that can be named, and your system can have as many resources and corresponding names as you want. Conversely, there is a limited set of operations defined on those resources. Unlike objects in object-oriented programming languages, which support very diverse, rich interfaces, resources in a RESTful system are relatively uniform. So how can a sophisticated API be developed if REST requires a fixed and limited number of operations that resources can support? The answer: add more resources!&lt;br /&gt;&lt;br /&gt;Lets play with an example. Say I'm writing a web application that has a collection of shapes that can be moved to new locations. In an object oriented program, I might have a move method defined on each shape, but in this RESTful API, I have assigned consistent semantics to a limited set of operations supported by the HTTP protocol. I can show (GET), create (POST), update (PUT), and destroy (DELETE) my resources. Nowhere in the HTTP specification is the a MOVESHAPE method defined. A naiive approach to remedying this limitation is to shoehorn this operation into the protocol by abusing URLs.&lt;br /&gt;&lt;br /&gt;http://againstgrain.com/shapes/move/1&lt;br /&gt;&lt;br /&gt;I call this abuse because URL stands for uniform resource locator, and it's very hard to see this imperative-style command encoding as much of a resource. This is an API decision that fights the nature of the protocol it uses. How can the API go with the flow?&lt;br /&gt;&lt;br /&gt;There are many potential solutions. Let me outline two, the first very simple, the second more sophisticated.&lt;br /&gt;&lt;br /&gt;The first solution is to recognize that a move operation is just a change to the location of an object. If we expose this location as a resource and allow it to be updated, we'll implement movement in a natural way without contorting URLs to name things that aren't actually resources:&lt;br /&gt;&lt;br /&gt;So we combine one of the four standard operations:&lt;br /&gt;update, represented by an HTTP PUT&lt;br /&gt;&lt;br /&gt;With a resource:&lt;br /&gt;http://withgrain.com/shapes/1/location&lt;br /&gt;&lt;br /&gt;Updating the location of the shape will naturally equate to moving it.&lt;br /&gt;&lt;br /&gt;But what if we want the movement to be relative to the objects current position, so that the client can say that they want a shape to move 5 pixels up and 10 pixels to the right without needing to know the objects current position or do any computation? To solve that problem, we apply a technique I learned doing computational semantics: reification.&lt;br /&gt;&lt;br /&gt;Reification means that we give solid form or objecthood to something formerly fleeting or ephemeral. Anything can be reified. The fact that I am named Nathan Sobo can be thought of as my NathanSoboness, which is an (albeit abstract) conceptual object. Here we'll apply the technique in a more conservative fashion, and say that shapes are associated with a history of movements. This movement history is a collection, which is itself a resource.&lt;br /&gt;&lt;br /&gt;http://withgrain.com/shapes/1/relative_movements&lt;br /&gt;&lt;br /&gt;Now say we want to move the shape. We combine the above resource locator with one of our standard operations, create, implemented as an HTTP POST. By posting a new movement to a shapes history, we cause the shape to move.&lt;br /&gt;&lt;br /&gt;Now we're working with HTTP rather than around it.&lt;br /&gt;&lt;br /&gt;So how does this transfer to the design of Rails applications? Embracing resource oriented application development means you'll be writing more controllers with fewer, more consistent methods. Lets work through a potential implementation of the shape API in Rails. It will all start in the routes file, with map.resources...&lt;br /&gt;&lt;br /&gt;Lets say we want to expose both the relative and absolute means of moving a shape. First we'll start with a shapes resource.&lt;br /&gt;&lt;br /&gt;map.resources :shapes&lt;br /&gt;&lt;br /&gt;This represents the collection of all shapes in our system. It assumes the existince of a corresponding ShapesController and will set up a series of routes and url-generating methods to help reference the actions therein. Note the controller and its standard complement of methods below.&lt;br /&gt;&lt;br /&gt;class ShapesController &lt; ActionController::Base&lt;br /&gt;  def index&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def show&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def create&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def edit&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def update&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def destroy&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;But with map.resources, the actions on the controller do not play a critical role in the url. They merely name the operations to which a given pairing of HTTP request method and URL will map. GETting /shapes will execute index. POSTing to /shapes will execute create. GETting /shapes/:id will execute show. PUTting to /shapes/:id will execute update, and DELETEing /shapes/:id will execute destroy. So even though there are 5 actions, there are really only two url patterns, one referencing the resource that is the collection of all shapes, and another referencing resources that are members of that collection. We can reference these urls with automatically defined methods:&lt;br /&gt;&lt;br /&gt;shapes_url&lt;br /&gt;shape_url(@square) or shape_url(@square.id)&lt;br /&gt;&lt;br /&gt;By pairing these with the correct HTTP method, we can access every operation we need.&lt;br /&gt;&lt;br /&gt;Now lets add relative movement:&lt;br /&gt;&lt;br /&gt;map.resources :shapes do |shape|&lt;br /&gt;  shape.resources :relative_movements, :name_prefix =&gt; 'shape_'&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;This again assumes the existence of a RelativeMovementController with all of the standard methods defined on it. Except the resources supported by this controller are nested within shape resources, so the URL patterns look like this:&lt;br /&gt;&lt;br /&gt;/shapes/1/relative_movements&lt;br /&gt;/shapes/1/relative_movements/4&lt;br /&gt;&lt;br /&gt;Because of the :name_prefix we supplied (which will no longer be needed at some release of Rails in the future), we can refer to these URLs with helper methods that look like this:&lt;br /&gt;&lt;br /&gt;shape_relative_movements_url(@triangle) to get /shapes/1/relative_movements&lt;br /&gt;shape_relative_movement_url(@triangle, 4) to get /shapes/1/relative_movements/4&lt;br /&gt;&lt;br /&gt;All of the same rules about HTTP method choice allow access to the RelativeMovementController's actions.&lt;br /&gt;&lt;br /&gt;Now a cool twist: Singleton resources. Lets add the nested position resource to shapes.&lt;br /&gt;&lt;br /&gt;map.resources :shapes do |shape|&lt;br /&gt;  shape.resources :relative_movements, :name_prefix =&gt; 'shape_'&lt;br /&gt;  shape.resource :position, :name_prefix =&gt; 'shape_'&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;And a corresponding controller, this time with a different complement of methods:&lt;br /&gt;&lt;br /&gt;class PositionController &lt; ActionController::Base&lt;br /&gt;  def show&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def edit&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def update&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Because position is a singleton resource nested inside of shape, this controller is designed to deal with a single resource rather than a collection of them, so there is no need for an index action. The HTTP verb / URL combination mappings are also different. So PUTting to /shapes/1/position will invoke the update action.&lt;br /&gt;&lt;br /&gt;None of these changes are Earth-shattering, but the simple act of focusing on resources is a force that will organize your application. Rather than growing a hodgepodge of actions on ever fattening controllers, you'll instead create a greater number of controllers that are more circumscribed in their responsibilities.&lt;br /&gt;&lt;br /&gt;What does this say about your model? Not much. I used to think that it was important to have a controller for every model object, and I no longer do. Controllers are responsible for supporting the exposure of resources to a remote API. This collection of resources is, in a sense, your remote client's model. Whether your resources map precisely onto your underlying data model is your business. For example, you might expose resources that have no direct correspondence in the model layer. Or you might have model objects that you don't choose to expose as resources.&lt;br /&gt;&lt;br /&gt;But regardless, REST finally provides an organizing principle for the controller layer. Even if you don't plan on exposing a RESTful API as a service, thinking in terms of resources will help you build more consistent applications and help you make fewer decisions.&lt;br /&gt;&lt;br /&gt;I realize that this article has by no means covered every aspect of REST, but I hope it fills a gap that I felt as I was learning all of this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-7381104591929435043?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/7381104591929435043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=7381104591929435043' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/7381104591929435043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/7381104591929435043'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2007/05/rest.html' title='REST: From theory to practice'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-4194028574642638242</id><published>2007-05-22T20:10:00.000-07:00</published><updated>2007-05-22T20:28:29.759-07:00</updated><title type='text'>Treetop 0.1.0 - My First Alpha</title><content type='html'>I've just released the first gem of my first free software project. It's a packrat parser for Ruby. Right now it's licensed under the GPL but I'm probably going to change it to the MIT license so other Ruby people can make use of it in their projects more readily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-4194028574642638242?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://rubyforge.org/projects/treetop/' title='Treetop 0.1.0 - My First Alpha'/><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/4194028574642638242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=4194028574642638242' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/4194028574642638242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/4194028574642638242'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2007/05/treetop-010-my-first-alpha.html' title='Treetop 0.1.0 - My First Alpha'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-8493612146641587015</id><published>2007-04-27T22:52:00.000-07:00</published><updated>2007-04-27T23:14:28.919-07:00</updated><title type='text'>Critical Mass</title><content type='html'>I rode with my first Critical Mass tonight and it was awe inspiring. To the pissed off motorists who were inconvenienced by my protest, I remind them of how their decision to drive a car around my city inconveniences me every day, along with seriously damaging the planet. For me the ride is a statement against the degradation caused by a car-dominated culture and the celebration of an alternative. It is in part a manifestation of an undercurrent of conflict between motorists and those whose quality of life they diminish. On this night, it is a conflict they cannot ignore as they zoom through intersections built to speed them along through a fractured social space. A landscape designed for the needs of their machines is the norm. But for once, during this ride, it is the river of rushing metal and exhaust that is quelled, in deference to another priority.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-8493612146641587015?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/8493612146641587015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=8493612146641587015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/8493612146641587015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/8493612146641587015'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2007/04/critical-mass.html' title='Critical Mass'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-115840457991179514</id><published>2006-09-16T04:02:00.000-07:00</published><updated>2006-09-16T04:02:59.920-07:00</updated><title type='text'></title><content type='html'>With duck typing, you only find Geese at runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-115840457991179514?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/115840457991179514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=115840457991179514' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115840457991179514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115840457991179514'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/09/with-duck-typing-you-only-find-geese.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-115832428683688869</id><published>2006-09-15T04:31:00.000-07:00</published><updated>2006-09-15T05:44:46.890-07:00</updated><title type='text'>Inspired</title><content type='html'>There's a chance that I'll be writing a whole lot of Ruby in the near future. On Rails, as it were.&lt;br /&gt;&lt;br /&gt;Kinda funny, since I just started to really like Java. Reading &lt;a href="http://howardlewisship.com/blog/"&gt;Howard Lewis Ship's blog&lt;/a&gt; has been especially inspiring. After reading back a few posts, I like the way he writes, thinks, and his personality. And he highlights what I like about Java. It's mature, as are so many of its developers. Gavin King is another hero of mine, especially after reading Hibernate in Action, which was so articulate and intellectual in its tone. There's a lot about Java that isn't fun, slick, or cool. But there's one word that seems fitting: robust. There's so much quality code out there, so many quality frameworks. Take a look at JiBX, or Hibernate, or the multiple inversion of control containers like Spring and HiveMind. Jakarta, CodeHaus. This software delivers real functionality, quietly. There's so much I haven't gotten good at yet... Aspect Oriented Programming, annotations, really shopping around for an IoC container I like, byte-code manipulation. Hell, I haven't even really pushed Hibernate to the limit.&lt;br /&gt;&lt;br /&gt;The Rubinistas... they seem a bit excitable. I haven't had enough exposure to really say, but a lot of the libraries seem to be kind of crappy. There seems to be this ethic of corner cutting or something. Of waving the hands over a demo and exclaiming "look how simple". &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/09/11/Making-Markup"&gt;This&lt;/a&gt; is a good post by Tim Bray on the subject. Funny quote: "So, am I a boring old factory factory factory fart wanting to inflict unnecessary pain and failing to recognize the obvious 80/20 point here? Or will the pleasant buzz you get today from mapping markup into code maybe give you a nasty hangover tomorrow? Is it Truth vs. Beauty? Is it Life vs. Art? Is it Alien vs. Predator? Oh, the anguish." I'm sick of the 80-20 rule because in my experience, I need 100 percent. Convention over configuration... I don't think I buy into it. You can't pee into a Mr. Coffee and expect Taster's Choice. I want concise as much as the next guy, but not if I have to sacrifice correct.&lt;br /&gt;&lt;br /&gt;I guess the thing that bugs me about the touters of Ruby I've encountered is that they are so impressed with themselves. I don't exactly know how to explain it. Like Ruby was the first language to invent closures or something. And I guess when Ruby is your second programming language and your first was PHP, or when the Java you've written is for some corporation that bought into software-by-commitee standards like EJBs, Ruby and its train tracks seem like the greatest thing in the long history of Ever.&lt;br /&gt;&lt;br /&gt;With that off my chest, if Ruby it's going to be then Ruby it will be. Maybe in a year I'll be drinking the red Kool-Aid, too. One thing's for sure, I can't wait to find the first cool way to use Module#define_method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-115832428683688869?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/115832428683688869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=115832428683688869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115832428683688869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115832428683688869'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/09/inspired.html' title='Inspired'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-115491013336080402</id><published>2006-08-06T17:22:00.000-07:00</published><updated>2006-08-06T17:22:13.413-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://mediamatters.org/items/200608060002"&gt;Missing the point completely yet again.&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;The traditional media's analysis of the CT senate primary as an instance of "liberal blogs dragging the party to the left" seems to ignore the fact that current polls reflect a majority opposition to the war. If blogs are dragging the Democratic Party anywhere, they're dragging it to be more in line with the sentiments of the majority of the country. What the Washington establishment (both politicians and journalists) need to realize is that Internet activism is a fundamentally new phenomenon. The people whose voices are now being heard online are nothing like elitist left-wing interest groups of the past. New technology is bringing about a new paradigm that still confuses politicians and pundits. Ordinary individuals are more empowered than ever before to share their ideas and communicate with one another without intermediaries. This power to communicate has never existed, and the old guard can't see a revolution taking place right in front of their noses because they still can't wrap their minds around the implications of that power. They try to interpret new realities within old frameworks, and naturally fail to produce relevant insight. It is not the 1970s. History is not repeating itself. Until pundits begin to address Internet-based power as a fundamentally new force on the social and political landscape, they will continue to misinterpret events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-115491013336080402?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/115491013336080402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=115491013336080402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115491013336080402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/115491013336080402'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/08/missing-point-completely-yet-again.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114854100232224605</id><published>2006-05-25T00:10:00.000-07:00</published><updated>2006-05-25T00:10:02.386-07:00</updated><title type='text'>An Inconvenient Truth</title><content type='html'>I just saw An Inconvenient Truth, and I must say, it was eye-opening in the extreme. More like life opening. Like a giant screaming mouth: "HELLOOOO." We need to wake up. Television and the mainstream media must be cast to the sidelines because they are exerting too much control. How did I not know it was this bad? It's really amazing. The best way to do this is to exercise our freedom in every way we can. We need to multiply freedom, taking every opportunity to release it into the cultural atmosphere. Write free as in freedom software. Write and distribute free as in freedom music. Lock nothing down. At this point, we're bailing water out of a sinking ship. And the sea level is rising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114854100232224605?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114854100232224605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114854100232224605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114854100232224605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114854100232224605'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/05/inconvenient-truth.html' title='An Inconvenient Truth'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114849645310208114</id><published>2006-05-24T11:47:00.000-07:00</published><updated>2006-05-24T11:48:56.503-07:00</updated><title type='text'>E=MCsomething-or-othered</title><content type='html'>People like to throw around that quote by Albert Einstein: "Imagination is more important than knowledge." That may be true, but let's keep this in perspective. This is ALBERT EINSTEIN, you know, the guy who revolutionized the field of theoretical physics. Why does this quote now seem like yet another ignorance licensing platitude?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114849645310208114?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114849645310208114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114849645310208114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114849645310208114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114849645310208114'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/05/emcsomething-or-othered.html' title='E=MCsomething-or-othered'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114806657463632185</id><published>2006-05-19T12:22:00.000-07:00</published><updated>2006-05-19T12:22:54.686-07:00</updated><title type='text'>Java: Where We're Going, We Don't Need Roads</title><content type='html'>My self-education in enterprise application development continues. I've come to terms with Java, finally seeing its inner-beauty by using it on a task for which it is well-designed. When I was writing inference algorithms for a natural language understanding systems in it for ISI, its abstraction facilities fell far short of my needs. That was a task that pushed the limits of my mind, and Java was a mental straitjacket.  Java gives everyone the same abstractions. Everyone plays the same game, sees the same mental images of object graphs and messages. If this picture doesn't work well for your problem, well, that's too bad. This contrasts sharply with a language like Scheme, which gives you the ultimate tools to roll your own abstractions. Need an object system? No problem. You can write it in the language, along with an infinite variety of other constructs you may need. When it comes to flexibility, Lambda is King.&lt;br /&gt;&lt;br /&gt;But, at least for the year 2006, this flexibility still comes at substantial cost. Fringe languages entice me with their expressiveness, and for truly mind-bending algorithms, a functional language is the clear choice. But what about more pedestrian tasks: XML schema parsing, HTTP servers, parser generators, database interaction, and the million other tasks that comprise a typical real world application? Such demands quickly take you off the beaten path in a language like Scheme. One of my favorite quotes about programming language is by Philip Greenspun: &lt;a href="http://blogs.law.harvard.edu/philg/2003/09/20/java-is-the-suv-of-programming-tools/"&gt;"Java is the SUV of programming tools."&lt;/a&gt; It's true. And when you want to get off the beaten paths, an SUV is exactly what you need. To write productively in Java I need an IDE which pushes the limits of a dual 2 GHz G5. I need a build tool that can automate the task of downloading and managing hundreds of third party libraries and frameworks that at least in part exist to overcome many of Java's expressive shortcomings. In Java I get 10 miles per gallon of code, but I can drive over anything in my path.&lt;br /&gt;&lt;br /&gt;Java offers a lot of valuable lessons for languages of the future, that will hopefully eclipse it (no pun intended) in expressive power while retaining features that make it great. Often my attitudes toward software are hard to pinpoint and explain in words... they're rooted in "feelings" and "intuitions", matters of taste rather than fact. Yet just because they're vague, I don't think such intuitions are without merit. They should be explored and discussed, because software is much more like music than it is like engineering. It's a creative, imaginative mental activity. The key is to translate our intuitions into more useful concepts, trying to pinpoint their origin. Here's some positive things about Java that are more concrete than car analogies.&lt;br /&gt;&lt;br /&gt;Stasis ("Static-ness")&lt;br /&gt;I used to think of this a bad thing, that more "dynamic" languages were the wave of the future. Now I'm not so certain. The problem with dynamic languages is that the interpreter has the final word on the semantics of programming constructs. This works well for single person development, but I think it has trouble scaling. The behavior of code depends on the state of the runtime environment. In contrast, the behavior of a static language is entirely controlled by the source code itself. It's just a feeling thing, but I like this. There seem to be fewer moving parts to keep track of at once. It feels more solid to have a compiled module than a script that you evaluate in a given environment. Dynamic typing, while more flexible, also makes it much more likely that runtime errors will be produced. Runtime typing may save typing, but it forces programmers to perform type checking and inference in their own heads. It also forces one programmer to perform typing and inference on constructs written by others.&lt;br /&gt;&lt;br /&gt;Tools&lt;br /&gt;Static languages used to be a problem for usability. You'd write a file full of code, then drop to a shell and run a compiler on it, getting back a list of errors that you'd go back and fix. Eclipse changes this. It takes all the things that used to be painful about Java's static nature and turns them into powerful allies. Everything a compiler checks to ensure valid programs is now checked as you type, so the static design that once provided guarantees at compile-time now provides a kind of "spell check for code." It's invaluable. The static type information also enables excellent code completion and refactoring support. I used to look upon IDEs disparagingly, thinking that a language should be well enough designed that it shouldn't need such a crutch. I now think that a language isn't really complete without such authoring tools. We have computers, we should be leveraging them to help us write better programs in every way possible.&lt;br /&gt;&lt;br /&gt;A Great Consistent Ecosystem of Other People's Code&lt;br /&gt;The way Java's packaging system works, its extensive built-in API, and the ecosystem of free-software frameworks that have grown up around it make a huge difference. The classpath is a great abstraction for module reuse, decoupling package use from physical location on the file system. Combined with the tool support discussed above, these features make Java a really nice universe to live in.&lt;br /&gt;&lt;br /&gt;It's not a language for writing complex inference algorithms, but I'm learning how to overcome what I thought was wrong with Java. Anonymous inner classes make me feel a little less sad about the lack of lexically-scoped closures. Generics help with Casting Hell. Annotations give you some meta-programming and relieve XML Hell. But it's still certainly not the be-all and end-all for programming. I'd love to see a successor language evolve that raised the theoretical bar while maintaining Java's many strengths.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114806657463632185?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114806657463632185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114806657463632185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114806657463632185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114806657463632185'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/05/java-where-were-going-we-dont-need.html' title='Java: Where We&apos;re Going, We Don&apos;t Need Roads'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114681251767465290</id><published>2006-05-04T23:58:00.000-07:00</published><updated>2006-05-05T00:01:57.683-07:00</updated><title type='text'>Always Low Prices</title><content type='html'>Wal-Mart has apparently been waging an edit war in an attempt to improve its image on Wikipedia. Now in bright red at the top of the page there is a warning: The neutrality of this article is disputed because: This article does not contain enough information about the Criticism of Wal-Mart. The Criticism of Wal-Mart is another article, linked at the TOP of the page. Looks as if these tactics have been counterproductive. Yet more evidence that an open content model promotes the balanced spread of information and is resistant to influence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114681251767465290?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://en.wikipedia.org/wiki/Wal_Mart' title='Always Low Prices'/><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114681251767465290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114681251767465290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114681251767465290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114681251767465290'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/05/always-low-prices.html' title='Always Low Prices'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114608149234511370</id><published>2006-04-26T12:58:00.000-07:00</published><updated>2006-04-26T12:58:12.400-07:00</updated><title type='text'></title><content type='html'>Who knows what we don't know? Should we assume anything is impossible? Check out this &lt;a href="http://www.guerrillanews.com/blogs/12824/20_Amazing_Facts_About_Voting_In_The_United_States"&gt;information about who controls the counting of votes in the United States&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114608149234511370?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114608149234511370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114608149234511370' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114608149234511370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114608149234511370'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/who-knows-what-we-dont-know-should-we.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114558887033913094</id><published>2006-04-20T20:07:00.000-07:00</published><updated>2006-04-20T20:07:50.393-07:00</updated><title type='text'>Tomorrow's Infrastructure</title><content type='html'>If this country were serious about maintaining an economic edge on the rest of the world for the next century, we would be taking economic stances that were less dogmatically free market centered. Many believe that we are successful because we have maintained a free market, and while that is true, the freeness of our markets is just one element in America's meteoric rise to power in the past century. We cannot forget the role of infrastructure. With highways, water systems, electricity, etc, America has allowed a high degree of regulation, and to great positive effect. These are the foundation upon which all further enterprise is built. Making certain guarantees about the availability and stability of such resources is critical to advancement. Now, as a new paradigm dawns, we are losing sight of the role of infrastructure in our current success, and we are failing to adapt our views about what should be considered necessary infrastructure in light of current realities. Because it has always been supplied at collective expense, the transportation network is taken for granted. Of course the road to my house isn't privately owned. Yet we have come to view communications as something that we must buy from owners, because providing it as infrastructure would be "infringing on the free market."&lt;br /&gt;&lt;br /&gt;Yet with current digital radio technologies, it would be remarkably easy to network most major metropolitan areas in a federally-supported mesh network that would provide equality of communication at a reasonable public cost. Huge swaths of valuable radio frequencies are currently reserved for the highest bidder, a situation made necessary by fear of interfering signals turning the airwaves into unusable chaos. But scheduling airwaves in huge chunks via licensing is an outdated approach to the problem. Now ten customers in a caf&amp;#x00e9; can all share the same narrow band to browse the Internet simultaneously with no interference. Digital technology has enabled more efficient means of sharing frequency than auctioning it on the open market. When the communicators are computers, they are smart enough to keep the peace among &lt;span style="font-style: italic;"&gt;themselves&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Imagine: an America in which Internet connectivity is assumed anywhere. Information about our environment will be layered over our current reality, allowing unprecedented dynamism and freedom in human interaction. There's no more powerful accelerant to pour onto the economy. The efficient exchange of commodities relies on efficient dissemination of information. The more easily producers and consumers communicate, the better goods flow. And when consumers can communicate with other consumers without regard to time or space, the natural-selective processes touted by the free-marketists will also be amplified.&lt;br /&gt;&lt;br /&gt;But the benefits don't stop with economics, at least not traditionally construed. Industrial capitalism has led us to view reality in terms of the exchange of commodities, the economy. But as we become more focused on the exchange of information, entirely new relationships with the world and metaphors therefor will develop. Just as the ubiquity of the automobile and freedom of transportation changed American culture drastically (albeit not necessarily positively), unabated flow of information is already changing us today. Like all paradigm shifts to come before it, the coming of the digital era offers a foundation for new solutions to a range of problems. And, also like other such shifts, it will undoubtedly bring replacements for the dilemmas it solves. But the solution to potential problems is not to cling to the laws of the universe that governed last century. We cannot stop the shift by denying it. We must embrace new technical possibilities, opening ourselves to new assumptions about how the world must work. Imagination must triumph over what we think we know.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114558887033913094?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114558887033913094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114558887033913094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114558887033913094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114558887033913094'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/tomorrows-infrastructure.html' title='Tomorrow&apos;s Infrastructure'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114535654907488879</id><published>2006-04-18T03:35:00.000-07:00</published><updated>2006-04-18T15:09:07.230-07:00</updated><title type='text'>Programming Language Update</title><content type='html'>&lt;i&gt;Ranked by exposure level, though not necessarily level of mastery:&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Java:&lt;/b&gt; a major NLP system for Hobbs, school projects, enterprise application development at SCME.&lt;br /&gt;&lt;b&gt;C++:&lt;/b&gt; School projects, namely operating systems and compilers course.&lt;br /&gt;&lt;b&gt;Scheme:&lt;/b&gt; Abelson and Sussman lectures / projects, statistical NLP project, lots of experimentation.&lt;br /&gt;&lt;b&gt;JavaScript:&lt;/b&gt; You know, for all that stuff.&lt;br /&gt;&lt;b&gt;Common Lisp:&lt;/b&gt; Natural language generation assignment for NLP.&lt;br /&gt;&lt;b&gt;Objective-C:&lt;/b&gt; Beginnings of a text editor, an interpreter, some tutorials.&lt;br /&gt;&lt;b&gt;C:&lt;/b&gt; School projects, robotics class.&lt;br /&gt;&lt;b&gt;Ruby:&lt;/b&gt; The requisite Rails experimentation and subsequent boredom, Lexical semantics project for which it was poorly suited. Former PHP Rubinistas: it's not that great! Don't drop your PowerBook in your rush to buy TextMate.&lt;br /&gt;&lt;b&gt;Flash ActionScript:&lt;/b&gt; Self-drawing interface from XML files for SCME, back in the day.&lt;br /&gt;&lt;b&gt;Perl:&lt;/b&gt; Lexical semantics project re-implementation, read the camel book, occasional shell scripts.&lt;br /&gt;&lt;b&gt;Scala:&lt;/b&gt; Denial that I'd have to program in Java. Some XML manipulating code / experimentation.&lt;br /&gt;&lt;b&gt;PHP:&lt;/b&gt; Not a fan.&lt;br /&gt;&lt;b&gt;Haskell:&lt;/b&gt; Part of The Haskell School of Expression.&lt;br /&gt;&lt;b&gt;MUMPS*:&lt;/b&gt; Dear InterSystems Cach&amp;#x00e9;, you're going to need a better disguise for you FORTRAN-era language guys.&lt;br /&gt;&lt;b&gt;Goo*:&lt;/b&gt; Object-oriented lisp-like language. Another Lisp to language in obscurity.&lt;br /&gt;&lt;b&gt;OCaml*:&lt;/b&gt; Latest prospect. I need a functional language that isn't Haskell or Scheme.&lt;br /&gt;&lt;b&gt;Io**:&lt;/b&gt; Cool looking prototype with no reserved words. What JavaScript could have been.&lt;br /&gt;&lt;b&gt;Arc***:&lt;/b&gt; We're waiting Mr. Graham. Looks like it really will be the 100 year language.&lt;br /&gt;(* no coding experience, but more than an hour's reading)&lt;br /&gt;(** 30-60 minutes of reading)&lt;br /&gt;(*** vaporware)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Ranked by coolness:&lt;/i&gt;&lt;br /&gt;OCaml&lt;br /&gt;Io&lt;br /&gt;Objective-C&lt;br /&gt;Java + Eclipse + A billion .jar files&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Ranked by lameness or other personal beefs:&lt;/i&gt;&lt;br /&gt;BPEL (a language composed of lexically scoped hype)&lt;br /&gt;MUMPS&lt;br /&gt;C++&lt;br /&gt;Perl (has its place I suppose, a very small one, in my life)&lt;br /&gt;ActionScript&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Most active lately:&lt;/i&gt;&lt;br /&gt;Java&lt;br /&gt;Objective-C&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Hot on the radar:&lt;/i&gt;&lt;br /&gt;OCaml&lt;br /&gt;Io&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114535654907488879?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114535654907488879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114535654907488879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114535654907488879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114535654907488879'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/programming-language-update.html' title='Programming Language Update'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114453799016279266</id><published>2006-04-08T16:13:00.000-07:00</published><updated>2006-04-08T16:13:10.233-07:00</updated><title type='text'></title><content type='html'>"If I were a butcher, I would call myself the cowww hunterrr." -- &lt;a href="http://boundvariable.blogspot.com"&gt;Emma Cunningham&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114453799016279266?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114453799016279266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114453799016279266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114453799016279266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114453799016279266'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/if-i-were-butcher-i-would-call-myself.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114439288125049562</id><published>2006-04-06T23:54:00.000-07:00</published><updated>2006-04-06T23:54:41.256-07:00</updated><title type='text'>The girls and boys met.</title><content type='html'>After two semantics lectures, I am very happy that I'm taking this course. We're delving pretty deeply into the treatment of plural quantification, and it's intensely stimulating. The tool we're employing in our analyses is &lt;a href="http://en.wikipedia.org/wiki/Mereology"&gt;mereology&lt;/a&gt;, the proposal that groups of individuals can themselves be treated as individuals of type E. This extension of our ontology seems very natural to me, and it's right in line with Jerry Hobbs' advocacy of ontological promiscuity, in which anything that can be expressed in language can be represented as an object in the conceptual model. I'm gaining ever-increasing respect for the foundation Hobbs offered me in approaching these issues. The more I learn about other people's ideas, the more Jerry's impress me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114439288125049562?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114439288125049562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114439288125049562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114439288125049562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114439288125049562'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/girls-and-boys-met.html' title='The girls and boys met.'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114430260179542616</id><published>2006-04-05T22:50:00.000-07:00</published><updated>2006-04-06T23:45:25.073-07:00</updated><title type='text'>Don't put knowledge behind a wall</title><content type='html'>Hey academics: If it's not on the Internet, it doesn't exist. Post your content in journals I can access without paying $30 for the pleasure of a download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114430260179542616?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114430260179542616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114430260179542616' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114430260179542616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114430260179542616'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/04/dont-put-knowledge-behind-wall.html' title='Don&apos;t put knowledge behind a wall'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114377078601517565</id><published>2006-03-30T18:06:00.000-08:00</published><updated>2006-03-30T18:06:26.080-08:00</updated><title type='text'></title><content type='html'>Next week I am going to start taking a course in linguistics at UCLA, but I'm not quite sure which. My two options are both taught by &lt;a href="http://www.linguistics.ucla.edu/people/buring/"&gt;Daniel B&amp;#x00fc;ring&lt;/a&gt;, who I emailed earlier this week about sitting in. One is a seminar about focus and intonation and the other is semantics 2. I'm kinda leaning toward the latter but I have to think about it. I really think I only have time for one, seeing how I have a full-time job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114377078601517565?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114377078601517565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114377078601517565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114377078601517565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114377078601517565'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/03/next-week-i-am-going-to-start-taking.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114360085900773585</id><published>2006-03-28T18:54:00.000-08:00</published><updated>2006-03-28T21:31:39.353-08:00</updated><title type='text'>She don't like she don't like she don't like</title><content type='html'>I'm trying to take Emma further into the programming fold (no pun intended). I helped her learn Scheme a while back which was a very good first step for her. It definitely complemented her semantics interest nicely. But Scheme is not exactly a champion when it comes to getting anything real done, so we've been hovering around a few practical languages trying to choose one that I could be happy working on with her. First it was Ruby because as mentioned previously I had this brief hope that I would settle on it as my web-language-of-choice, and I thought we could work on web projects together. But that dream died in my annoyance with writing scripting code on a paper-thin database abstraction and doing lots of redundant tasks. Rails put me to sleep, so it was hard to push Emma to take it up with much gusto. Now we've settled on Objective-C, and I think it's going to be good. At first I just sat her down and made her read the introductory developer docs like a shot of tequila before we wrote anything. That's my preferred mode of learning... like everyone, I'm an "active" learner. But I like to know as much as possible before I become active and learn against a conceptual framework that is cohesive and deep. Apparently Emma isn't that way, and she was complaining rather quickly and itching to write some code. But I couldn't bare to have her write a freaking currency converter, and I couldn't find any cool tutorials. But last night I solved the problem. We're going to work through &lt;a href="http://www.amazon.com/gp/product/0262062178/002-8422842-9950401?v=glance&amp;n=283155"&gt;Essentials of Programming Languages&lt;/a&gt; and write our own language interpreter. They teach it all in Scheme, which Emma already knows. We're translating it to Objective-C, so she can learn imperative object-oriented programming on a non-trivial problem and we both can learn about interpreters. It's going to be awesome. I have big plans for our newfound language making skills. And a cool name for our Cocoa-based dream scripting language: Cocaine. Cue the Eric Clapton guitar riff now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114360085900773585?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114360085900773585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114360085900773585' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114360085900773585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114360085900773585'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/03/she-dont-like-she-dont-like-she-dont.html' title='She don&apos;t like she don&apos;t like she don&apos;t like'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114358334909032924</id><published>2006-03-28T14:02:00.000-08:00</published><updated>2006-03-28T14:02:29.136-08:00</updated><title type='text'>Margarita post</title><content type='html'>Now for a lighter, perhaps bordering on inane post. I swung by and got a margarita with Emma, Kate, and Kate last night at La Barca. It was fun to be social again and laugh a lot. The four of us had a warm-feeling synergy that made me feel happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114358334909032924?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114358334909032924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114358334909032924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114358334909032924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114358334909032924'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/03/margarita-post.html' title='Margarita post'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-114345256278925867</id><published>2006-03-27T01:42:00.000-08:00</published><updated>2006-03-27T01:42:43.436-08:00</updated><title type='text'>Das Editor</title><content type='html'>I worked quite a bit this weekend on the very initial phases of my grand plan for an OS X text editor. I bought TextMate some time ago out of a feeling of obligation since its Ruby support seemed ideal and I was all set on learning Ruby. Now I don't really have much use for it because I wasn't that impressed by Ruby and its Rubinista hype. It seems way too disorganized at its core even though it offers some nice syntactic tricks. Syntax can only get a language so far with me. So anyway, I've been brewing this editor idea for some time now. The plan is to integrate support for parsing expression grammars as the basis for a user-controllable extension language. The user defines emacsesque functionality, but rather than just loading this pile of code into an interpreter, the scripting code is attached to a continually-updated parse-tree of the document being edited. When a keystroke is entered in the editing window, the event of that keystroke is first sent to the terminal node containing the cursor. This node's grammar module code can handle the event or it can be passed up the parse tree, eventually reaching the root node. This would allow for relatively simple syntax-specific command handling to be installed. Non event-driven code like syntax coloring would also benefit from being nailed to a syntax tree. I am pretty certain that I've devised a way to efficiently update a context-free parse every time new text is inserted while maintaining the integrity of portions of the parse tree that have not been disturbed by the modification of the text. In addition, the grammar will be specifiable down to the individual character, with no need for tokenization, which I think is important in really making this model work well. So satisfied in the algorithm department (and implementing the early stages), I am still wondering what to use as my extension language. I am of course partial to functional languages, particularly Scheme-like ones. This is partly aesthetic and emotional, but I also think that the Lispy languages are very good "meta-languages" or languages that deal with language. All the PLT people love functional languages, and the PLT people are the ones writing compilers and interpreters. I think the user-experience for text-editing any language is directly proportional to how well the editor I am using can mimic the functionality of that language's compiler. But I have reluctance. Scheme was very inspiring but I'm getting pretty over it. Every implementation seems to fall short when it comes to practicality, and I don't quite know why. The shining hope is &lt;a href="http://people.csail.mit.edu/jrb/goo/"&gt;GOO&lt;/a&gt;, a pure Dylan-style object oriented dialect of Lisp heavily inspired by Scheme but a lot terser and seemingly better organized to get shit done. It's really really young and has barely any documentation, but everything I've learned so far impresses me. In particular, for my current purposes, it has an amazingly simple C-interface that lets you mix C and S-expressions together freely. I could imagine building quite a nice Objective-C interface in it. The one issue is the generic functions approach, which I am still unsure about. It's more expressive than message passing, but it still leaves you with this perspective that procedures, not classes, are fundamental. I don't quite know how to adapt it to the more message-passing centric idea for attaching code to nodes in a syntax tree. But it's Lisp right? If I want a message passing system it shouldn't be too much of an issue to implement it. An easier but potentially less powerful route is a Smalltalk-inspired extension language system designed specifically for Cocoa. It's called &lt;a href="http://www.fscript.org/"&gt;F-Script&lt;/a&gt;. But it just doesn't seem to have the cajones to step up to the plate as far as hardcore language modeling is concerned. I don't want to embed OpenMCL. But whatever language needs to be pretty powerful while being lightweight and easy to integrate. If you have any ideas out there in TV-land, email me. If anyone read this I'll write another maybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-114345256278925867?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/114345256278925867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=114345256278925867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114345256278925867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/114345256278925867'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/03/das-editor.html' title='Das Editor'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-113919986446225184</id><published>2006-02-05T20:24:00.000-08:00</published><updated>2006-02-05T20:24:24.510-08:00</updated><title type='text'>Kill myself</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/letdinosaursdie/96124294/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/31/96124294_f28cf47748_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/letdinosaursdie/96124294/"&gt;Kill myself&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/letdinosaursdie/"&gt;letdinosaursdie&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;I'm not sure if both the description of the photo on Flickr and this post is going to show... so, I guess I'll put something here too. Scheme could be so good, if only it had one implementation halfway so well supported as the mainstream scripting languages. Blast.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-113919986446225184?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/113919986446225184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=113919986446225184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113919986446225184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113919986446225184'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/02/kill-myself.html' title='Kill myself'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-113842083517076257</id><published>2006-01-27T20:00:00.000-08:00</published><updated>2006-01-30T23:52:21.066-08:00</updated><title type='text'></title><content type='html'>Scala has performed admirably in the first major task in which I've employed it. In my previous post I mentioned the XML virtualization framework I'm building. It's part of an Xpath equipped web service. The system will enable its clients to treat each mortgage as a giant XML document and use Xpath to select the part of that document in which they are interested. That Xpath query will invoke the specific functionality needed to perform queries against an existing database to construct the document fragment requested by the client, and nothing else. This is an important feature considering the massive amount of data contained in just a single loan. The document couldn't be generated in full every time someone wanted to grab the borrower's last name. I think this document-centric view of our data will be very powerful. The treelike nature of XML makes it a good way of defining ontologies, giving us an opportunity to break the many fields of each loan into a logical hierarchy. This is good for developers, because the data they'll work with will be presented coherently. It's also going to be excellent for systems integration and our ultimate upgrade path. We are basing our organization scheme on a collection of industry standard documents called schemas. Schemas are documents that describe the structure of other documents, in this case the documents involved in various stages of the mortgage process. Very soon now, many companies that we work with will be accepting documents based on these schemas, so by mapping them to our existing database, we'll gain this sort of interoperability for free. Because the schemas were developed by a mortgage standards organization which worked on them over a period of years, they are very complete. Most information that we'd need to include in a mortgage system is present in these documents, and what's missing can be added with extensions to the standard. The standards represent a stable assumption about the structure of loan information, and that makes them a good point for a software interface. We can write software that interacts with our back-end systems by treating the information they store as an XML document that conforms to the standards. A new, more robust back-end system will later be brought online to replace the existing one, but it will continue to support this standard interface. This means we can route any interactions destined for the old system to the new one as well, making a gradual transition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-113842083517076257?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/113842083517076257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=113842083517076257' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113842083517076257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113842083517076257'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/01/scala-has-performed-admirably-in-first.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-113796317200320193</id><published>2006-01-22T12:52:00.000-08:00</published><updated>2006-01-22T12:52:52.133-08:00</updated><title type='text'></title><content type='html'>I just wanted to post something short to get the ball rolling again on writing here. Sometimes it seems like the longer I go without doing something, the more resistant I feel to doing it. Tomorrow I'm starting to work in earnest on a pretty cool project for work, constructing an abstract interface to their legacy database that conforms to an XML document type definition. I'm going to construct a data structure mirroring the grammar specified by the DTD, attaching programmatic functionality to it at different points of the tree that will query the legacy database and return a fragment of XML representing that portion of the document. I will then support Xpath queries against the imaginary document, which will locate the functionality to generate the XML being requested, restricting database access and document construction overhead only to the portions of the document that are actually requested. I'm going to try to use a functional programming language called &lt;a href=""&gt;Scala&lt;/a&gt;, which integrates pretty tightly with the Java platform, compiling to byte code and using Java classes directly within programs. I'm a little uncertain, especially because I'm going to write my own parser using a Java parser generator, and I'd like this parser to construct classes specific to Scala called case classes, which can be pattern matched, making decomposition of the parsed data simple. I'm not so sure I can instantiate these specialized classes in Java even though they are written in Java bytecode, so it remains to be seen how much impedance I'll feel between the two languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-113796317200320193?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/113796317200320193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=113796317200320193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113796317200320193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/113796317200320193'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2006/01/i-just-wanted-to-post-something-short.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-112738744892574703</id><published>2005-09-22T04:10:00.000-07:00</published><updated>2005-09-22T04:10:48.950-07:00</updated><title type='text'>Ruby: Language of the Programming Übermensch?</title><content type='html'>I spent a couple of hours this evening writing my first real Ruby code for the Lexical Semantics course I am taking this fall. It's excellent. The syntax is very appealing. Tokens are strangely verbose, replacing "{" and "}" of C descent with "def" or (insert block starting token here) and "end". For the first 30 seconds after encountering this on page 1, I wasn't sure how I felt about it. It seemed verbose. But now I see that "end" is much easier to type than "}", whose presence in Java forces me to reach and twist for basic program vocabulary. Maybe it would be different if I weren't on Dvorak, but words as delimiters rather than punctuation is a definite win. And while the tokens are fat&amp;#x2014;in a good way&amp;#x2014;they are also few. The syntax is remarkably terse, but not at the peril of clarity as I feel is the case with Perl. Ruby makes me understand the power of judicious syntactic support for common tasks. String interpolation is an obvious and immediately addictive feature. Built-in regular expression literals are also a plus. And there is an elegant interplay between these syntactic features on both a functional and visual level. As syntax is concerned, Scheme has represented a year-long exile in the wilderness. The bare minimalism of S-expressions was good for me. Scheme's uniform and parsimonious syntax let me focus on concepts that are fundamental to high-level programming: recursion, higher order procedures, and data abstraction. Scheme taught me by giving me only a handful of powerful tools and then training me to use them well. Now I think that Ruby can empower me by equipping that sharpened outlook with richer facilities for the completion of the common tasks. Its assumptions are friendly to my most cherished and hard-won programming intuition, but they also cater to the harsh realities of programming in an imperative world.&lt;br /&gt;&lt;br /&gt;Paul Graham says that languages are evolving ever-closer to Lisp, and he asks, why not skip directly to it? And I think that I finally have an answer. Perhaps the ideal programming experience is purely functional, and the mainstream's gradual adoption of purely functional features reflects this truth. But there are other truths. Tim O'Reilly presents another point. He says that as new computing paradigms emerge, new languages seem to rise with them, suggesting that from a pragmatic standpoint, a language's "goodness" is sensitively dependent on the world in which it is used and with which it must interact. Every time I have programmed functionally for practical applications, I am always keenly aware of how imperative the world outside my program really is. The operating system doesn't behave functionally, and I/O operations certainly never could. There has to be a reason why these languages are so popular, beyond the simple fact that they are easier to learn for programmers whose first language was C. My conclusion is this. In the real world of computing, one &lt;span style="font-style: italic;"&gt;finds&lt;/span&gt; explicit notions of state; one &lt;span style="font-style: italic;"&gt;finds&lt;/span&gt; assignment. The computing hyperscape is not (yet, perhaps) very functional. State-oriented computational objects seem a natural complement to our false intuition of objects existing in the real world as well. Nietzsche would say that there are no objects, and, indeed, there aren't even any facts. There is only "will to power". Sounds remarkably similar to me trying to explain to C programmers that there is no data, and there isn't, in fact, any need for assignment. There is only Lambda. I think Nietzsche is right and I think Steele and Sussman were right, but that truth does not mean that the illusion of objects is an utterly worthless one. If we actually cognized the outside world as consisting only of "will to power" rather than tables and chairs and people, we'd never get anything done. And perhaps, similarly, when we pretend that everything is a Lambda, we face similar difficulties in interfacing this remarkably beautiful, completely true notion with an ability to do anything about it.&lt;br /&gt;&lt;br /&gt;These ideas, are, I guess, nothing new. Haskell's monad system, from the cursory understanding I have of it, is a formalization of them, a clean interface between the rough and tumble outside universe and the sublime purity of Haskellspace. But if I'm not going to use an airlock, maybe a clever, elegant, and even artistic bridge between functional wisdom and imperative truth will suffice. For now, Ruby seems to be a pretty decent attempt. Lambda may be vulgarized into a quirky codeblock, but in a language in which shell commands are syntactically supported, at least it exists.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-112738744892574703?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/112738744892574703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=112738744892574703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/112738744892574703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/112738744892574703'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/09/ruby-language-of-programming-bermensch.html' title='Ruby: Language of the Programming &amp;#x00dc;bermensch?'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111699719784581103</id><published>2005-05-24T21:59:00.000-07:00</published><updated>2005-05-24T21:59:57.896-07:00</updated><title type='text'>Gasp!</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/letdinosaursdie/15581687/" title="photo sharing"&gt;&lt;img src="http://photos14.flickr.com/15581687_8696c79afb_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/letdinosaursdie/15581687/"&gt;Gasp!&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/letdinosaursdie/"&gt;letdinosaursdie&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;More playing with Illustrator and Photoshop, this time, it's Emma. It's been nice having clearly dileniated "me" time, although I need to spend more time at work.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111699719784581103?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111699719784581103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111699719784581103' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111699719784581103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111699719784581103'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/05/gasp.html' title='Gasp!'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111658324517980980</id><published>2005-05-20T03:00:00.000-07:00</published><updated>2005-05-20T03:00:45.200-07:00</updated><title type='text'>Feminine Femme</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/letdinosaursdie/14755865/" title="photo sharing"&gt;&lt;img src="http://photos12.flickr.com/14755865_85247a792f_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/letdinosaursdie/14755865/"&gt;Feminine Femme&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/letdinosaursdie/"&gt;letdinosaursdie&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Adobe Illustrator has a whole different approach than Corel did, and I think I'm starting to like it.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111658324517980980?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111658324517980980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111658324517980980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111658324517980980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111658324517980980'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/05/feminine-femme.html' title='Feminine Femme'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111654233716066612</id><published>2005-05-19T15:38:00.000-07:00</published><updated>2005-05-19T15:38:57.206-07:00</updated><title type='text'></title><content type='html'>apple is not a cult, it's something wierder, something new. apple is a culture based on a corporation, on the same scale as many other historical groups like the nazis, the hippies, etc. ask yourself seriously how strange it is that people walk around with corporate logos shaved into their heads. it is just further proof that the rise of nationalism has been eclipsed by corporate globalism, in which corporations will soon have more significance than countries. but does global culture have to be corporate culture? but i think apple has it figured out... if your customer base is walking around in arm bands emblazoned with your logo, i think you win.&lt;br /&gt;&lt;br /&gt;pop being so commercialized is a sad thing, because pop was cool. beatles, led zeppelin... the music enjoyed by the mainstream of youth was just way better as industrialization hadn''t fully developed, and it's strangling pop. what pop was cannot exist in a world in which the definition of pop is tightly controlled... it's better when it's more chaotic. the folk music of modern times, pop, needs to belong to the folk. but for anything close to that to happen, it has to be a lot less worth the expense that drives them to control things so tightly. in a system in which such measures are not lucrative, because compensating profits will not be sufficiently guaranteed, pop will take on a more organic form. just as steamships now seem quaint, so too do the industrial practices in which mass produced culture could be genuine. we're way past that point. other culture still exists, but the 800 pound gorilla of corporate marketing changes the situation just by standing in the room. and the only road toward unleashing this process from tight control is to make it unprofitable, making folk music again about the folk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111654233716066612?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111654233716066612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111654233716066612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111654233716066612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111654233716066612'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/05/apple-is-not-cult-its-something.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111647652002571897</id><published>2005-05-18T21:22:00.000-07:00</published><updated>2005-05-18T21:22:00.050-07:00</updated><title type='text'>Organized Living</title><content type='html'>Man... I ended up wandering into a Southern California big box retail outlet today, but one of the yuppie ones. Organized Living. A rather apt description of the culture it represents. This store was filled with more plastic shit designed to contain and subdivide other shit than you could shake a stick at. It's like meta-materialism. But organized people are better parts of the organization... or the organism, the mechanized parasite that feeds on the children of parking attendants. Have a great day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111647652002571897?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111647652002571897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111647652002571897' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111647652002571897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111647652002571897'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/05/organized-living.html' title='Organized Living'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111399245348230596</id><published>2005-04-20T03:20:00.000-07:00</published><updated>2005-04-20T03:20:53.483-07:00</updated><title type='text'>Subhuman Sprawl</title><content type='html'>Walking into the condo complex felt strangely like entering another world, a valley walled on both sides by identical two-story buildings with blue siding and white trim that crowded an asphalt access road. A row of tiny garage doors were beneath the awkward roof lines of puzzled together floor plans, with tunnel-like paths leading to entryways off the main road. Inside, my parents were hastily unpacking cardboard boxes, and my dad asked me what I thought of the new place, telling me how much he liked it with thin, unconvincing enthusiasm. The move was the consequence of him losing his high-paying job to a corporate power play, and it had hurt him pretty badly. Looking out on a ten by ten foot patio surrounded by an eight foot wall, it was hard to respond positively. I felt strange. This place felt strange, desolate, as if no one else lived in the other condos that crowded upward around the patio, blocking out the sun. It was large on condo standards, with a fireplace and an upstairs washer and drier, three bathrooms, an office, and a guest room. But something about it seemed synthetic and thrown together. I couldn't shake uneasiness.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;After dinner, my sister and I went for a walk outside, taking a seat on the red curb that separated the access road from a narrow ravine. We stared out together at a drab office complex on the other side, ringed by an empty asphalt parking lot, a siren wailing in the distance. There seemed something inhumane about this place, something ugly. It was more than the careless, repetitive construction of the condos or our depressing view of the beige office park. It was everything, the fact that across the road behind us there was another faceless complex, and up the road another, neighbors crammed on top of each other and yet painfully alone, doors shut. It was the landscape, the numbing strip-mall homogeneity, the anonymous currents of cars. I started to cry.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This was the American Dream? Sitting in this eerie place, the promise of a house for every family and a car in every garage seemed a cruel lie. To me, no matter what the square footage or how many consumer goods filled that space, living here was the definition of poverty. For an instant, I saw myself differently, a man watching his parents move into a void. My imagination unrolled all the asphalt and uninspired construction, ripping up my conception of our surroundings and replacing them with a new reality. We were in the middle of nowhere. There was no soul to this place, just buildings, thrown up at minimal expense. These condos felt degrading, like the emotional equivalent of a labor camp, carelessly crammed off the side of the freeway, just another driveway interrupting the unused sidewalk. There was no public space anywhere around us, no relief from the monotony of big box retail, condos, and office parks. None of it felt permanent. It didn't feel like a community. And if it wasn't a community, then what was it?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Suburbia is the abdication of civic responsibility for the design of our living spaces to the commercial sector. Towns used to grow organically, but the post World War II building boom took a different approach, the planned community. Modern development typically divides a space into broad single-use zones. One developer gets a plot of land only for houses, the next only for shopping, the next for offices. Between these homogenous chunks of land are thousands of miles of pavement that connect it all together. And because each area is solely dedicated to only one purpose, residents have no choice but to drive for even the most basic of daily activities. The average suburban household generates 13 car trips per day, and the huge volume of traffic must be handled by multilane collector roads, which are optimized for automobile efficiency, not human use.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The inevitable result is the typical American suburban area, the sprawl. Commercial establishments moved away from the urban center and transformed themselves into the ubiquitous shopping center, pulling away from the street to make room for ever-expanding parking lots and erecting massive free-standing signs to attract the attention of speeding motorists. The congestion means that motorists have little time for the multiple stops that would be possible with foot travel, and consequently, retailers must clump together around large lots in order to survive, further centralizing traffic patterns and thus further worsening traffic. The result is a vicious positive feedback loop that isolates the segregated zones even further, squeezing smaller centers that fail to offer enough variety in a single car trip.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I watched this process transform Santee, the community of my childhood in east San Diego County. It's shopping centers used to be filled with family-run restaurants and local grocery store chains. It was suburban, but had a pretty strong sense of community nonetheless, at least in comparison with more crowded, apartment-dominated towns nearby. But in the early nineties, Santee began a development called Town Center, which brought its first big box store, the Home Depot. Soon after came Wal Mart, and then a K-Mart on the other end of town. As the new stores arrived, traffic patterns began to shift. The smaller centers on the periphery gradually began to cycle through one failed business after another. Another shopping center with a Target and a TJ Max later, the transformation was complete. The quiet community is now another bustling chain-store hell. The failed grocery store that I used to walk to from my house has been converted into a megachurch.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The problem with zoned suburban development centered around large collector roads is that this story is the inevitable result. Once the roads are in place, the process is in motion, and the pressure from developers is constant. But after they win, locally owned businesses don't stand a chance against the high-overhead, high-volume chain stores that can attract traffic. Without local ownership, the community loses its identity to an endless stream of national brands that make it look and act like everywhere else. Welcome to Nowhere in Particular, USA. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The American urban environment is losing its humanity, changing to physically to mirror the metaphoric capitalist machine attempting to maximize its production. We have places to eat, sleep, shop, and work, all scattered randomly across the ravaged landscape. But what's missing is any sense that this sprawl has a center, that it means anything. We can stay at home, where our houses and apartments and condominiums are designed with ever less regard for fostering interaction with our neighbors. Or we can get in our cars and drive, perhaps in a desperate attempt to be among other people. But drive where? To which parking lot? An office park? A shopping mall? A megaplex? None of these consumption or production oriented activities really add up to an authentic public space.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Increasingly, American children are learning to associate entertainment with consumption. And why shouldn't they? Their environment offers them no other options. Empty streets greet them outside. And if they want to leave, they'll have to get a ride. Public schools are changing in design, ever more distant from the students they serve, surrounded by ever more parking, schools to which no child will ever walk. When I finally earned my driver's license, it felt like I was being let out of jail. Finally, I had the freedom to go visit my friends, to interact with the rest of my world rather than being stuck at the mercy of my parents. Yet after the novelty wore off, living in suburban culture can still feel like prison. Increasingly, we don't know or trust our neighbors, even&amp;#x2013;or perhaps especially&amp;#x2013;in the wealthiest of neighborhoods. And when we leave in search of this community, we find instead just more opportunities to consume, with all the fanfare and novelty of a parking lot and an encounter with a minimum wage worker.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The dominance of the automobile is making us a sedentary culture, but worse, it's isolating us from one another and homogenizing our daily experience. And while the standard of living may be going up, look around you. I'd say that the quality of life is plunging, smothered in the soul-crushing mediocrity of seedy retail shopping centers. They say we're the middle class, but I have to wonder if we aren't just the new underclass of the highly industrialized societies. We own nothing, toil in isolated office parks, eat reheated food from bags that match the buildings of fast food chains, and live in mass produced homes that are plonked down in expanding swaths at the frontier of the advancing development. The structure of our built environment forces us into the role of super consumer, burning gasoline at all times, wearing out tires, buying Red Bull at 7-11 and towels at Linens and Things to salve the disconnection. We're free, but not from the burden of car ownership. We're brave, but not brave enough to strike up conversation in line at Starbucks. Our lukewarm lives of convenience convince us we are the luckiest citizens of the world. Meanwhile, they are robbing us of our souls&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111399245348230596?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111399245348230596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111399245348230596' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111399245348230596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111399245348230596'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/04/subhuman-sprawl.html' title='Subhuman Sprawl'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-111323737863217407</id><published>2005-04-11T09:36:00.000-07:00</published><updated>2005-04-11T09:36:18.633-07:00</updated><title type='text'>Microsoft is a Major Problem</title><content type='html'>Microsoft is one of the worst organizations in the history of the planet. I don't think people get it. They look back at dens of snakes like Standard Oil or The Steel Trust and they think... now those were companies that did some damage. Microsoft? No, they're just annoying. They're not grinding up worm ridden meat and rats into the dinner sausage, now are they? And in some ways, these people are correct. They're not exactly a weapons company. But the damage that they are inflicting may turn out to be far more costly, on some measures.&lt;br /&gt;&lt;br /&gt;They are trying to own the experience of computing. Everything. If Microsoft could embed itself into every last nook and cranny of information technology and bill us for it for the rest of time, they would. Their threat is not just one of monopoly, but of the keys to the machines that are becoming ever central in almost every aspect of our culture.&lt;br /&gt;&lt;br /&gt;Bill Gates is a megalomanic. He postures himself as this revolutionary figure, the innovative pioneer, President and Chief Software Architect of the Microsoft Corporation. Puke. Anyone who knows anything about software knows that Bill Gates is no towering genius. It somehow seems that Gates has become the new Horatio Alger symbol of the digital era, but only for the uninformed. The rest of us know he's a power grubber, and a few of us know that he comes from one of the wealthiest families in the Pacific Northwest.&lt;br /&gt;&lt;br /&gt;He has all sorts of plans up his architect sleeves to screw society out of freedom for the sake of his profits, and there's a silent struggle that's attempting to resist him. It's one of the most unnoticed wars I think humanity has ever fought. Thousands of programmers across the world have been battling, pouring out their sweat and tears, in a race against the spread of Microsoft's power. If you've heard of Linux, that's them&amp;#x2013;some of them. There's also Apache and Firefox, two open source projects that have been struggling for some time against Microsoft's push to own the Internet.&lt;br /&gt;&lt;br /&gt;Typical tactics Microsoft employs? They find a developing set of agreements between members of technological communities, and they use their overwhelming market volume to absorb that standard, pumping out a product that comes bundled with their other products so that their sea of clueless customers can join the community too. But they don't just copy the system. They break it. They add extra features and twists and quirks, negligible things, so that software that abides by the agreements of the community no longer function correctly. As soon as the standard no longer matters, Microsoft has control. They then add proprietary features and integrations with other products, entrenching their hold on the market and locking out competitors: for-profit and non-profit alike.&lt;br /&gt;&lt;br /&gt;Microsoft publicly states that it aims to "embrace and extend" popular preexisting standards. Many have a term for this strategy: "Embrace, Extend, Extinguish."&lt;br /&gt;&lt;br /&gt;The most glaring example is their hijacking of the World Wide Web, which was originally an academic project by a community of laboratory scientists. It has been mired in so much Microsoft filth and propreitism that the average website developer spends countless hours learning to make their work display properly across Microsoft's broken system and the standard honored by the rest of the community. But it's happened throughout the computing landscape. They go after programming languages, networking protocols... they even employed this strategy with the PC itself, wresting control away from IBM by supporting clones of their hardware with a slightly altered copy of the operating system they licensed to IBM.&lt;br /&gt;&lt;br /&gt;And in case you think that it doesn't effect you, because you don't need computers, consider their plans for "Trusted Computing", with which they plan to embed a mechanism to make a PC obey the orders of Microsoft over the orders of its owner, in the name of security. This from a company that produces an operating system so full of design flaws that it has to release fixes for it on a weekly basis. Their products are notorious for their poor workmanship, brittle with the contortion and conglomeration of a thousand strategic maneuvers disguised as functional code. What happens with this system runs your bank? Because in Microsoft's world, it will.&lt;br /&gt;&lt;br /&gt;The hope the Internet gives us at breaking out of this corporate mass media swamped Fox News mess relies on it being free. Their trying to take that away. And they've only been slowed for their first real obstacle with the Internet. See many more revolutionary technologies out there? Nope... It's all robotic soldiers from here. So while it may be true that the revolution will not be televised, lets just try and make sure that it isn't embraced and extended.&lt;br /&gt;&lt;br /&gt; "Non co-operation with evil is as much a duty as co-operation with good." -- Mahatma Ghandi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-111323737863217407?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/111323737863217407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=111323737863217407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111323737863217407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/111323737863217407'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/04/microsoft-is-major-problem.html' title='Microsoft is a Major Problem'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110984552800785867</id><published>2005-03-03T02:25:00.000-08:00</published><updated>2005-03-03T02:25:28.006-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://moglen.law.columbia.edu/"&gt;Eben Moglen&lt;/a&gt; has posted a friend of the court briefing in the MGM vs. Grokster case, currently under review by the US Supreme Court. I've only read the first few pages but having never read a formal legal document, I'm finding it quite interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110984552800785867?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110984552800785867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110984552800785867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110984552800785867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110984552800785867'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/03/eben-moglen-has-posted-friend-of-court.html' title=''/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110870746063106432</id><published>2005-02-17T22:17:00.000-08:00</published><updated>2005-02-18T02:55:01.356-08:00</updated><title type='text'>Resist the Slide</title><content type='html'>I posted this originally on Whatstheexperiment, but not being sure of that young blog's potential readership, I decided to duplicate it here.&lt;br /&gt;&lt;br /&gt;I hate Microsoft PowerPoint. If I had the sociological evidence I would say it is ruining our entire academic system, but I can say this: It's played a big role in ruining my education. As the slides click by and the class's eyes glaze over, I can't help but wonder, "Is this progress?" I guess the professors use it because they think it makes teaching easier. They can explain the inner workings of a complex idea without having to draw it on the chalkboard. Their notes are displayed for all to see, so that everyone can follow along and download the slides after class... no more note-taking. But for me, this is missing the point. In illustrating an idea on the blackboard, the professor's mind must fully reenact every idea expressed; they must construct a logical flow, one idea following another, with each image they draw and idea they articulate related to the next. It's a difficult task. It takes a lot of preparation, and writing on the blackboard is slow, so figures and examples must be carefully chosen and explained. Yet the difficulties of these "analog" activities are not due to a lack of technology, but to limitations inherent in the learning process itself. The bottleneck is not in the speed at which information can be scrawled on the board but the speed at which that information can be absorbed by students. Do we actually believe that students can learn faster than the experts that are teaching them can write? The articulation of raw data into knowledge, the presentation of ideas in a form optimized for human reception, is the essence of lecture. There's never been a shortage of the resources provided in these slideshows, of graphs and diagrams and laundry-listed theorems. Just open any textbook and you will find endless pages of such information, formatted and explained far more professionally than any amateur slide presentation. But it's all static. You can't follow along as these theorems are proven step by step. Inflating this same static information to fill a classroom wall and pointing at it with a laser beam doesn't solve this problem. With the illusion of structure provided by the ordering of slides, it's easy for the professor to believe that real material is being covered, but an idea displayed all too often fails to result in an idea relayed. The mechanized torrent gives my lectures a rapid pace but a strangely shallow quality, like skimming a novel the night before it's due. They become lifeless and painfully boring, further intensifying the disconnect. It may run counter to our buzzword-enamored academic culture, but this is one beleaguered college senior with a desperate appeal: Get technology out of the classroom. Next time I want to learn by reading, I prefer to turn the pages myself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110870746063106432?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110870746063106432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110870746063106432' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110870746063106432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110870746063106432'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/02/resist-slide.html' title='Resist the Slide'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110853791876284549</id><published>2005-02-15T23:11:00.000-08:00</published><updated>2005-02-17T22:53:21.780-08:00</updated><title type='text'>Militant Ignorance</title><content type='html'>It's hard to imagine that people think this way:&lt;br /&gt;"If you don't like what's going on in this country, then leave."&lt;br /&gt;I was born here. I have as much a right to live here as you do, and I will stay here as long as I want saying whatever I want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110853791876284549?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110853791876284549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110853791876284549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110853791876284549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110853791876284549'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/02/militant-ignorance.html' title='Militant Ignorance'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110821146560561639</id><published>2005-02-12T04:31:00.000-08:00</published><updated>2005-02-17T22:54:17.946-08:00</updated><title type='text'>Share to the Future</title><content type='html'>Many of my problems with my society is its fixation on a single metaphor as an explanation for all human activity. Incentive. According to these theorists, my movements occur only where two lines intersect on a graph. But what works for sacks of soybeans is being over-applied as a model for our social behavior. Surely we can't really believe that artists only paint, that jazz musicians only play, and that actors only pretend because they are motivated by money. Would anyone with any taste really want to partake of culture produced in pursuit of that goal? Music is not a record, it's the experience of player and audience. Writing is not a printed book, but the ideas conveyed by the ink. Though we may confuse art with the physical objects on which it is distributed, we must remember that acts of self expression are not widgets. There is nothing produced or consumed. The industries that currently oligopolize distribution channels and waste our electromagnetic spectrum on their analog commercials don't add value to our culture. They parasitize it. We let them steal from our rights to share with one another because once upon a time we needed them to make us records and ship them to our malls. But if any recording can be copied infinitely and sent anywhere instantly at zero marginal cost, what's the sanity in banning sharing to promote companies whose role is supposedly the copying and distribution of music?. I went to a jazz concert tonight due to interest cultivated by music I supposedly stole, even though no one lost their copy as a result of my enjoyment. Without the network, I'd never had gotten interested in jazz. So if you ask me if talented artists suffer if record companies aren't allowed to restrict our freedom, I say it's quite the opposite situation. Only the hand-picked darlings of the industry currently make millions, and their songs are carefully crafted to appeal to the lowest common denominator that will efficiently move product off of limited store shelf-space. Variety isn't economical for the industry, and the hit-driven economy that is its alternative represents the Wal-Martization of music, in which sophistication and creativity are drowned out of the artificially-narrowed channels that are crowded with "what sells". Sharing isn't the end of music. On the contrary, music is sharing. Broadcast culture allowed the few to dictate the tastes of the many because there was only so much radio spectrum for the primitive analog systems to divide, but with digital technologies, these technical limitations are no longer a concern. Information is something that we can all broadcast, we can all manufacture. Sharing is merely the end of an industry. Good riddance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110821146560561639?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110821146560561639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110821146560561639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110821146560561639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110821146560561639'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/02/share-to-future.html' title='Share to the Future'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110811414059102284</id><published>2005-02-11T01:29:00.000-08:00</published><updated>2005-02-17T22:54:39.666-08:00</updated><title type='text'>Letter to Senator</title><content type='html'>Dear Senator Boxer:&lt;br /&gt;&lt;br /&gt;I am writing you to express my strong opposition to the patenting of software. I beg you to consider the deleterious effects of patents in this very unique domain, both to business and freedom of individual software developers to create and share their work. Software is not like any other innovative pursuit to which patents have been applied in the past... it is much less a form of engineering than an art. Software represents a new kind of social activity in an era of increasing ubiquity for digital information, and it is rapidly becoming the tool of freedom seekers around the world. I heard you today on NPR, and I believe that you care about the cause of freedom. Please take a look at this issue. Note that the EU parliament is currently in debate over this subject, and it is very likely that Europe will reject the application of patents to software, giving the European market an edge over the US, where patents will stifle innovation. We must reform our intellectual property system to sanely approach the new intellectual realities brought on by revolutionary new technologies. Note what happened to Europe following the adoption of mechanized printing. Digital sharing of information represents a change in the nature of intellectual exchange, and it carries similar implications for our future. Please help ensure that America meets that future with open arms rather than stifling it. Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110811414059102284?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110811414059102284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110811414059102284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110811414059102284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110811414059102284'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/02/letter-to-senator.html' title='Letter to Senator'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110802493811956583</id><published>2005-02-10T00:42:00.000-08:00</published><updated>2005-02-17T22:55:32.850-08:00</updated><title type='text'>You're In Atari Biatch!</title><content type='html'>I was introduced to a really interesting and potentially addicting game this evening. Go. It's so open-ended and yet really strategic... way more interesting to me than Chess has ever been, just because it feels like there's a lot more room for creativity. Annie Mermaid and I played at a little coffee shop in Santa Monica called the Unurban Cafe, which had a really cool crowd. I think I will be going there more often... beginner night with the Santa Monica Go Club is on Tuesdays.&lt;br /&gt;&lt;br /&gt;I started on my mountains of backlogged EE 457 homework tonight, which involves programming in MIPS assembly code. I am just getting the hang of it, since the only assembly I've ever done is for the Motorola 68000, and that was a while ago. It's amazing using such an imperative style after the pure expressive nature of all the Lisp programming I have been doing lately... it's like the opposite end of the spectrum, and I thank God that compilers take care of it in most every practical situation. But still, it's reasonably amusing as a small game. I hope they let me turn in all of this homework late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110802493811956583?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110802493811956583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110802493811956583' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110802493811956583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110802493811956583'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/02/youre-in-atari-biatch.html' title='You&apos;re In Atari Biatch!'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110631610763599065</id><published>2005-01-21T06:01:00.000-08:00</published><updated>2005-02-17T22:57:21.070-08:00</updated><title type='text'>Power On My Lap</title><content type='html'>Programming for school tonight I had to stop and marvel at how wonderful it is to have a personal computer... to be able to write a program to scan hundreds of pages worth of information and load it into memory in a more useful format to be manipulated further tomorrow. 30 years ago, they couldn't even do what I did tonight on computers that filled entire rooms. It's easy to take it for granted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110631610763599065?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110631610763599065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110631610763599065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110631610763599065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110631610763599065'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2005/01/power-on-my-lap.html' title='Power On My Lap'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110283442571792475</id><published>2004-12-11T22:53:00.000-08:00</published><updated>2005-02-17T22:56:34.610-08:00</updated><title type='text'>What Matters to Me and Why</title><content type='html'>I believe that the United States is in trouble. The pressure of this belief has been building inside of me for some time now, compelling me to respond. Growing from a vague doubt about the credibility of my government than began in elementary school, my concern is now an overriding sentiment in my daily consciousness. The protections of liberty and justice that were established as our founding basis are being grossly circumvented, and our system is being co-opted by the very forces of tyranny it was constructed to suppress.&lt;br /&gt;In place of the state, corporations have risen as the premier wielders of global power, but their concern for profit margins is restricting the overall advancement of humanity and violating our natural rights. Like all of history's great injustices, its beneficiaries are going to great lengths to justify their actions and suppress any resistance. The mass media, around which our culture currently revolves, are owned by an increasingly shrinking pool of commercial empires whose motivations for objectivity are questionable. These institutionalized corporate public relations systems, combined with industry organizations that write, fund, and litigate legislation, place excessive amounts of power to shape our society's consciousness and governance in the hands of a few, unelected individuals. Be they political figures or capitalists, tyrants by any name are equally intolerable. As the descendant of a Holocaust survivor, I cannot, in good conscience, tacitly consent to systemic immorality in my own nation. If I believe it exists, it is my duty to fight it.&lt;br /&gt;Exactly how that fight could be waged had, until recently, remained unclear. I felt as if I faced an unassailable problem, so large that no single individual had a chance in combatting it. But the past six months have brought about a massive shift in my attitude. I am becoming convinced that digital technology of the last ten years has precipitated a shift in the structure of society that has only barely begun to take effect. When I was a high school freshman, the Internet was almost entirely ignored by the majority of my classmates. For most, computers remained a rarely used tool, and those who occupied themselves with them were considered nerds. Things have shifted rapidly. With the explosion of instant messaging, digital music, online retailing, and now web logs, the use of information technology has gone mainstream. The network is growing exponentially, and shows no signs of slowing down.&lt;br /&gt;And with the growth of the network, our behavior is also shifting. Television watching in advertising's target youth groups is beginning to decline, as is loyalty to major brand names. Information exchanged on the Internet is beginning to influence the news media, and, as can be seen with the success of Howard Dean, it is also influencing political campaigning and fundraising. The Internet isn't just changing business models, it's changing the fabric of society itself. With a cost-effective and convenient means of organizing global dialog, it sets us free from traditional intermediaries such as television stations and publishing firms. Information flows as easily to one person as it does to all, and everyone can afford to participate. The Internet represents, at last, an escape from the media giants that currently define the nation's norms and beliefs. Without point-to-point communication, we have been slaves to the whims of the broadcasters. By freeing our population's minds from the television sets that defined their worlds and giving them choices, the Internet is going to wake people up. Like Gutenberg's printing press, the freedom of information it grants us will cause a chain reaction, irreversibly changing the balance of global power.&lt;br /&gt;But this freedom has enemies, those who seek to gain by limiting the flow of knowledge and controlling society's use of the network. The media industries seek to compete with a technology that makes them irrelevant by crippling it, ensuring their parasitic positions for the rest of time. Microsoft, a willing partner, plans to entrench its monopoly even further, expanding its control over the daily lives of users. By controlling our software, and, with technologies such as Trusted Computing, our hardware as well, the giants of yesterday are pursuing an unjust agenda. The technologies they promote would make my use of computation subject to their permission, projecting absolute control into my daily existence. I hold freedom of information as the digital era's self-evident corollary to freedom of speech. It my a natural right, and Microsoft and company's attempts to revoke it represent a direct attack on me. But this time, I know how to fight back.&lt;br /&gt;I knew about the GNU/Linux operating system for a long time before its implications finally began to sink in. In 1983, it was the project of a single principled MIT hacker who quit his job to pursue a vision. Just 20 years later, the project he began alone is rocking the industry, with the largest players in technology investing hundreds of millions of dollars in a system that is free to everyone. Richard Stallman's efforts have cascaded into a movement that is spreading rapidly, promoting a simple idea: I grant you the rights to do anything with my work, so long as you do not limit the rights of anyone else to do the same. The system is developed through collaboration, and when one person adds a feature for his own use, everyone benefits. But the real key is that, as a collaboratively developed resource that is owned by everyone, no one company can use the software to violate the rights of consumers. Those who try to cripple this system won't get very far, because users will simply find the limitation in code and remove it. Thus, the state of the art is advanced while freedom is preserved.&lt;br /&gt;Not only do I consider this model of software development technically and morally superior, I also relish the fact that GNU/Linux has the capacity to damage an abusive software monopoly. Microsoft claims that free software threatens to destroy the global software industry. In truth, what is really at stake is their global software empire. If the public can produce software that is technically superior and free of costs or limitations, Microsoft can no longer use its position to manipulate and exploit the public. Rather than destroying the industry, a system which puts the same innovation in the hands of all users can only accelerate the pace of change and, in turn, the demand for new software. It just might not be made by Bill Gates.&lt;br /&gt;I have come to view the Free Software Movement as one of the most important opportunities in history. Just by sharing my work, I have the chance to dethrone those who threaten my rights and aid in the development of humans worldwide. Luckily, I am equipped with the skills I need to participate, and I plan to use them. I am dedicating myself to the construction of a next-generation operating system for release under public license within the next ten years. Stallman's Gnu was a copy of commercial Unix, but Unix is far from the final word on OS design. I want to build something vastly better, and I want it to be free, aimed to drive a final stake into the heart of a monster that threatens my way of life. If I learn enough to implement my ideas, I hope they will provide just one more reason for the world to demand the freedom they are due. I will join a force that the abusers of wealth cannot eliminate or buy off: the unstoppable power of unleashed creativity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110283442571792475?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110283442571792475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110283442571792475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110283442571792475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110283442571792475'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2004/12/what-matters-to-me-and-why.html' title='What Matters to Me and Why'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-110234872408423737</id><published>2004-12-06T07:58:00.000-08:00</published><updated>2004-12-06T07:58:44.083-08:00</updated><title type='text'>Viral License</title><content type='html'>A Microsoft executive calls the GPL a "viral" license, because it "spreads to everything it touches". But Microsoft understands the real reason they should fear the GPL. The GPL is impervious to them. Microsoft is in the business of monopoly. Their primary target audience is everyone, for everything. They have attempted to overthrow the video gaming industry and have done well, but not well enough. They've had reasonable success taking control of the Internet. Here they remain a double digit player in the server industry and have launched a new development platform with which to entrench intellectual expense deeper into their system platform. Their web browsing product dominates the world even though it is full of security flaws and renders HTML improperly according to the web standards, making it more difficult for competitors to compete without themselves conforming to the idiosyncrasies of the Microsoft way, but also costing developers of web sites thousands of hours in productivity by making the circumvention Internet Explorer's flaws a frustrating art. Yes, it is they that are the virus, for they are trying to swallow all of human industry and sell it. They produce a product, decimate the playing field, then let the product rot, using updates to usher more unsuspecting users into your trap. Internet Explorer has been left in mothballs for years without a line of forward progress, and now it returns to life just as Firefox threatens to finally offer something so superior that people will switch. So is it any wonder that the Gnu Public License wishes to prevent Microsoft from using other people's freely-written to it's own benefit? Without such a license, Microsoft could patch the cracks in their software completely on the backs of others who needed it done, but continue to profit from it grossly. The license simply says, if you make a derivative work of this code, you must be willing to grant others that right as well. It isn't a virus, it's just designed to stop a parasite.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-110234872408423737?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/110234872408423737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=110234872408423737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110234872408423737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/110234872408423737'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2004/12/viral-license.html' title='Viral License'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-109755240745638134</id><published>2004-10-11T20:18:00.000-07:00</published><updated>2004-10-11T20:43:58.050-07:00</updated><title type='text'>Kleingeld</title><content type='html'>She looked at me. "Dude. I don't want your Kleingeld," as she shook her hand in my direction. Most anyone would have no idea as to the meaning of her sentence. But I didn't even think extra about it. I learned to use it with her.&lt;br /&gt;&lt;br /&gt;As foreigners conversant in German, Emma and I naturally receive a sort of collective vocabulary that hovers in the intersection of our experience. All our time together is spent spinning linkages in our associative memories. When we're groping through our pockets for that last ten cents, we ask one another for Kleingeld. Here in Berlin at least, it's wired more firmly into my consciousness than the English equivalent.&lt;br /&gt;&lt;br /&gt;So I have to think of our experience as just a small part of an invisible process. Between neighboring countries with sufficiently porous borders cascades innumerable such reactions, and over time, two languages become one as vocabularies merge and words are purged. This idea isn't anything new, I know. It was however entirely different to realize that I was taking active part in it. I feel the language part of my brain in a whole new way, as if my cognitive muscles are flexing new winnings of this battle to understand the foreign world around it.&lt;br /&gt;&lt;br /&gt;I love it. I feel it changing both expression and perception, widening the reach of my mind around sentences. The cursor is considering more words behind it and steering to utilize more words that lay ahead. I am also enjoying writing more deliberatively–pondering structural issues just a second longer and spending a bit more time to clarify my idea before pressing the keys. It's more like writing in a programming language, and perhaps also like writing when I was still focusing on improving my English.&lt;br /&gt;&lt;br /&gt;But at least with language, I am from now on my own taskmaster. And beyond having someone pushing me to revise, I haven't found effective sources of improvement from inside the language. But with German, there's a new set of rules. I can keep pushing my system. My brain gains new discipline as it mints thoughts into this new medium, and I am finding it possible to carry that improvement back to my native language as well. But its way beyond sheer style and choices and technique. Its the kind of learning that reaches back into the subconscious and asks the brain to do something fundamentally new, a complete paradigm shift. I'm exercizing in a way my brain never really knew it could. Cool.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108995-109755240745638134?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/109755240745638134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=109755240745638134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/109755240745638134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/109755240745638134'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2004/10/kleingeld.html' title='Kleingeld'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108995.post-109675151913937371</id><published>2004-10-02T15:11:00.000-07:00</published><updated>2004-10-11T20:46:34.146-07:00</updated><title type='text'>English</title><content type='html'>&lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;Sometimes writing it feels like I am the captain of some ship of the line, trying to steer meaning away from the rocks. Our rules seem so irregular and quirky. How is it that a significant portion of our society's population can't spell a huge percentage of our vocabulary? Is this kind of insane conservatism needed? Is there any way at all to make things more regular? Establish some sort of reform that generalizes this insanity? In this paragraph alone I have already made a handful of errors, and I am a relatively intelligent user of the language.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;It feels like we picked random misspellings of some words handed down by the ancestors of Anglo-Saxon tribes and just sort of played the ball as it lied. Lay? There's another quirk screaming like a bat from hell out of the germanic root of the fucked-up family tree. Everyone screws it up. But things seem rather in order on the Deutsch side of the fence. Where did things run afoul in English for us to save only that one piece of what seems to have given rise in German to the differences in active verbs between the nominative and accusative perspectives.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;Ich  &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;&lt;em&gt;lege den Bleistift &lt;/em&gt;&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;auf den Tisch. &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;&lt;em&gt;Ich liege &lt;/em&gt;&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;im Bett. The use of case makes the difference clear, acting as a system on which to hang my semantics that is so much more accessible from the surface. I remember the difference between transitive and intransitive because the very structure of the sentence implies it. Perhaps this is heavy handed for simple communication, but in the most intense of expressive situations, I can see where it would become worthful. When the real fur of meaning starts to fly, you need better tools than word order to get anything done with the language. It also helps to have more regular rules concerning word synthesis and modification.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;I have read that the most revered writing of german philosophers is not really translatable into English, at least not in a form that can compactly retain the clarity of the original sentences. I'd then have to ask: Could these works have even been created in English in quite the way they were in Deutsch? No. And I think that's an indicator; all languages could not have been created equally. That is not to say that my mother language seems worthless to me now, but only that I am recognizing considerable shortcomings in certain areas. I've never had the perspective to see them because I never got the chance to escape their grip on my consciousness. I simply knew no other means of communication.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;We have our strengths. Try writing some of my favorite English works in German and I think you'd flush them of most meaning in the massive hack job you'd need to perform on diction. It seems that, as a bizarre mix of so many languages, we have access to a palate of choices I haven't sensed in German, and I'm not sure that's because I am only learning. Walk, stroll, loaf, cruise, strut. Which shade do you prefer? We have more in the back.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;But we do pay a price for this choice. It is becoming increasingly clear to me that a lingua franca does not make a lingua suprema. French was once a magnetic language, the king of politics. Now it is gone. Why should we assume that English is much different? That is unless the entrenching network effects of American technology make it un-usurp-able. But it frustrates me that I have to divide that very self-explanatory word with hyphens for fear of the fact that its not considered a word by those who might judge me ignorant for thinking it was. I wish we could do something better.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;I don't believe that English being a &lt;a href="http://dict.leo.org/?p=1ZRX..&amp;search=Verkehrssprache"&gt;Verkehrssprache&lt;/a&gt; is arbitrary. English is a product of a culture whose nature is inexorably stamped into their means of communication. While some may argue against the notion of Anglo-Saxon tribesmen being responsible for English's current popularity, note that English culture has evolved and expanded in such a way as to perpetuate their language and therefore at least some kernel of Englishness through to a position of global influence. The language, as a product of such a successful culture, must exhibit tradeoffs that reflect on values responsible for this cultural success. If it were different, even if that in some respects means it were better, could it be? Could it be the lingua franca?&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;To be the common language it must also be the language of &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;&lt;em&gt;the &lt;/em&gt;&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;culture that others feel compelled to interact with above all. So then comes the question, are we just lucky, or is there something about Anglo-Saxon thought and culture that delivered us to dominance, whether or not you would call this nature or its resulting dominance virtuous. By evil deeds and by good this tribal tongue has arrived to its current status, both in terms of function and popularity. How tightly are these consequences coupled to one another remains for me unknown.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;Such a dilemma parallels my questions regarding government. How much should the natural flow of human conduct and consequent cultural development be left to run its course? The last chapter of history seems to side with the protection of physical well-being while avoiding heavy interference with culture, and I believe that trend may continue. Control seems in many ways stifling, and homogenization equally so.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;But in an era of standards-oriented technology and global communication, are we shooting ourselves in the foot by not looking into solutions for the inefficiencies in our language? Are we even capable of such collective change at the expense of individuals and our cherished right to be lazy? To reform you must first break, push, and shape the original. Will the culture that propelled its language into the mouths of the world put up with such violence to its traditions? My guess is no.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 19pt; text-align: left; font-family: verdana;"&gt;&lt;span style=";font-size:100%;" &gt;I have yet to decide if this stubbornness, perhaps the trait that propelled us to global dominance, will also be the trait that accumulates enough inefficiencies to keep us from staying there. But assuming that English may remain the world language for some time to come, perhaps we owe it to the future to investigate its improvement. It's fun spelling like a sea captain in his log, but I am, after all, using a computer.&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/8108995-109675151913937371?l=functionalform.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://functionalform.blogspot.com/feeds/109675151913937371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108995&amp;postID=109675151913937371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/109675151913937371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108995/posts/default/109675151913937371'/><link rel='alternate' type='text/html' href='http://functionalform.blogspot.com/2004/10/english.html' title='English'/><author><name>letdinosaursdie</name><uri>http://www.blogger.com/profile/12837239271659014944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://www.flickr.com/photos/676765_7be91d0cf4_t.jpg'/></author><thr:total>0</thr:total></entry></feed>
