• Sprint's Opportunity: "We don't spy on you."

    During today's market trading Sprint (S) fell over 16% on the news of AT&T's intention to acquire T-Mobile. Just days before, rumors of merger talks between Sprint and T-Mobile had circulated the web, so the stock hit shouldn't be a surprise.

    The telecom market is remarkable in many ways right now, but what strikes me most about it is that everyone sucks.

    When the bar for quality is set at not spying on your customers without a court order, and responding to their phone calls, it seems to me like Sprint's future is not necessarily a dark one.

    At the moment, Sprint can't compete with Verizon or AT&T on coverage, so perhaps they should compete along a different dimension.

    Nsa-eagle-no-circle_small
    When your competition is voluntarily playing the role of Big Brother, the marketing writes itself!

    Sprint-spy
    Sprint-bigbrother

    Sprint-priority

    Normally, I'd appeal to your altruistic side, point out that you'd be supporting a constitutional right, etc., but considering your status as a corporate giant, appealing to your bottom line might be more prudent.

    The notion that people don't care about privacy is hogwash. One need only to look at the anger in politics over "Big Government" to see the significant interest there. Sprint should leverage this concern. A campgain along these lines, if competently executed, would deal a significant blow to AT&T. The geeks will back you up too and provide a halo effect (recommendations to the less tech-savvy Mom & Pop).

    In the future, when we've gone further down the surveillance-society rabbit-hole, such an opportunity might not even be possible. Now is the time to do this.

     The future could be bright for you...

    Boys, it's time to reel this one in.

    (If you can't tell, this was written, tongue-in-cheek, but only somewhat.)

    What the fuck is up with Jobs?

    A Samurai Warrior wins battles, he takes care of his troops, and at the end of the day, his work done, he reports to his Master with Good News.

    But. Both, the Master and the Warrior, know, that before battle can be done on the Green Hillside, there had better be a damned hillside to do Battle On!!

    The warrior fights, he takes care of his troops, his family. He reports to his master, but NO ONE forgets that EVERYONE is in the Service of the Great Provider, for whom they are THANKFUL. Thankful for providing the green pastures to do battle on, for providing the food to nourish their troops, for giving the clear air through which they charge, which fills their lungs with the life affirming energy that it needs.

    Take Care of the House! Take care of the Home! Take care the Earth!

    The Battle is Important, but do not get caught up in it, or you will forget that it can only take place in a BattleGround.

    On Lisp's Readability and Parenthesis Stacking

    Pop Quiz!

    Inside of what form (function/macro) is the println on the highlighted line located?

    Lisp_indentation

     

    I don't know about you, but it takes me a while to figure that out.

    Whereas in other languages I can usually rely on the indentation of code to understand its structure, with most Lisp formatting I often end up having to rely on the editor, like a crutch, to figure it out.

    It's not just me. Lots of other people have the same issue. You may have heard people complain about Lisp's parenthesis. Some have called it a "parenthesis jungle" or a "parenthesis zoo." The historically poor readability of Lisp has nothing to do with parenthesis and everything to do with how they're used, or rather, abused. That is the underlying complaint.

    Without the help of fancy editor tricks, the only hint at where the 'println' function is located are just a few spaces (often no more than two) that are separated by many lines of code. Lisp is the only language that I'm aware of where this happens.

    To address this issue, people will often rely on their editors. Rainbow parenthesis, visible whitespace, and indentation guides are some of the editor features that attempt to address this issue. The problem though, is that these features aren't universally available across editors, nor are they available when the source code is viewed outside the editor, for example, on Github or some other code hosting site.

    For every language I've used (other than Lisp), these editor tricks are completely unnecessary. The only time I've ever wanted rainbow-parenthesis support in my editor is while I'm looking at someone else's Lisp code.

    In short:

    The readability of your source code should not depend on the editor used to view it.

    Lisp code can be just as readable as C, Ruby, and Python. The only thing stopping it is a community adopted convention, and I find that both sad and disappointing. Lisp is a beautiful language, so why make the structure of its code unreadable?

    Let's have a look at that same block of code, this time formatted differently:

    Lisp-indentation-2

     

    Now try the question again, in what function or macro is the highlighted line located in? Was it easier to answer this time?

    This style is called "trailing your parenthesis," and is almost a taboo in the Lisp community. When asked why it is a taboo, you'll often hear answers like, "So that your parens don't end up lonely," and "It wastes lines!" In other words, no real reason. Parenthesis cannot get lonely, and the "importance" of "line count" is second to that of readability, at least I hope you'll agree.

    What I found most puzzling and ironic about all of this is the irreverence that some Lispers treat parenthesis with. I've actually heard it said that parenthesis aren't even meant to be looked at. Sometimes this attitude and disdain for parenthesis is laughably obvious:

    Stacked
    Nothing says "Get out of my sight" like piling up, or "stacking" parenthesis. I think the root of these feelings stem from the fact that parenthesis aren't used to help structure code, and when that's true, I can see how it's possible to feel that they're just "in the way."

    They are treated as merely a necessary evil of the prefix syntax of function calling in Lisp.

    This not only hurts readability but it hurts writability as well. Say I want to insert a new function call at the end of the body of a let call, only to discover that the closing parenthesis that I need to find is buried inside a paren stack. In this situation, you have to resort editor tricks, either the highlighting of matching parenthesis or a keystroke to jump to the matched paren. Those are some interesting hoops to jump through when in other languages it would be a simple point-and-click.

    Detractors of "paren trailing" will say that you shouldn't use parenthesis to delimit scope because they are not scope delimiters (as braces are in C or Java). I think this is a very weak argument because they do delimit a scope. "Scope" does not only refer to variable scope, but it can also refer to the scope of a function call. Why treat parenthesis with such disrespect, and at the cost of the readability of your code, when by using them you are enhancing the readability of your code and giving them the respect they deserve?

    No other language that I'm aware of stacks scope delimiters or has a community where the standard indentation width is two spaces wide, and where sometimes even a single space is considered acceptable.

    Supposing this wasn't the case though.

    What would it look like if C developers adopted this convention?

    With apologies to the developers of Aquaria for this experiment, here's C++ code, showing Lisp-style stacking on the left, and what for C code is considered "normal" brace trailing on the right:

    C
    It's obvious which code is shorter, but which is easier to read and understand?

     

    Conclusion

    Code style is an almost religious affair, and debates over it can get heated.

    I am not asking you to change your style if you're comfortable with paren stacking. I am merely explaining the reasons why some choose not to do so.

    If you feel that parenthesis stacking actually improves the readability of your code, by all means, feel free to do so! However, "everyone else is doing it" is not a good reason to sacrifice the readability of your code.

    (P.S. If you want trailing paren support in Emacs, I've written a simple 'lisp-indent-line' function you can use or build off of.)

     

    Update: Another argument made is that "Lisp nests more than C" and therefore stacked parens are good. I think this is a poor excuse for a couple reasons:

    1. I've written and seen a lot of Lisp code. Most of it doesn't nest any more than regular C++/Java code. If your code is nesting a lot, it's likely an indication that you should be refactoring something out.
    2. Even if your code is nesting a lot, stacking your parens only worsens the readability, because when there's a jump back down several indentation levels, then it's a long way up to figure out what function you're in. Trailing your parenthesis gives you immediate local knowledge about what blocks of code you're outside of.

    Clojure development with IntelliJ's La Clojure Plugin

    In the spirt of helping out n00bs, I've made a quick video for anyone interested in using IntelliJ IDEA for Clojure development.
     
    I discuss the basic setup and some of its features, and I also describe how Leiningen can be setup with IntelliJ.
     
    Once you've gotten past the initial setup, it's a really nice IDE (I've tried the others, and I prefer IntelliJ). You can watch this video on YouTube in HD.
     
     

     
    Some additional notes:
     
    • You can use different clojure.jar files (and add clojure-contrib.jar) by editing the project's Module Settings (as shown in the video) and going into the Libraries panel to add them.
    • The quick documentation lookup works great for clojure functions, but lookup on Java classes like JFrame etc. is kinda flaky. If the docs don't show up, use it on the fully qualified name (i.e.: javax.swing.JFrame).
     
    Hope it's helpful!
    Tags » clojure ide intellij

    Clojure's n00b attraction problem

    Clojure
     

    This weekend I've been diving head-first into the world of Clojure, and before I become too accustomed to it I'd like to put my thoughts down, as they're currently coming from an exceedingly important perspective: that of the total n00b.

     
    I really like Clojure-the-language, just as I love Scheme and Lisp in general, however, you'll note that none of these languages are especially popular, at least when compared to PHP, Python, Ruby, and even Objective-C. I think part of the reason for this is lack of good, "officially sanctioned experiences."
     
    Popularity plays an important role in a language's relevance. It serves as an indicator to potential adopters as to whether they'll find a strong community behind it that can answer all of their questions, and whether it will have all the frameworks and libraries they might need.
     
    Over the years, I've observed three factors that influence how likely a language is to become popular:
     
    1. Evangelists—a language that's just starting out needs to have great evangelists, the more the better. These are people who write blog posts, create the first libraries and frameworks, and give speeches about how awesome their chosen language is. Clojure has this, and then some.
    2. Relevance—does the language meet some unsatisfied need? Clojure certainly does. One of its primary reasons for existence is to solve the parallel-computing problem in an efficient and simple manner. It also satisfies the need for a modern, powerful, expressive language.
    3. An insanely great, officially sanctioned user experience, and this is where I think Clojure fails miserably.
     
    Languages grow by convincing n00bs to spend time and effort learning the ropes, and thereby turning these n00bs into code-warrior-evangelists who attract other n00bs, and so on. This makes their perspective exceedingly important.
     
    I've been following Clojure's progress for over a year now as an outsider, and I know from observation that the community at large is aware that they have a n00b attraction problem. It would be hard not to notice the sheer volume of getting-started related questions on the Clojure Google Group.
     
    Having spent the last 24 hours diving into Clojure-land, I can offer the following thoughts:
     
    Clojure needs to improve its officially-sanctioned experience
     
    Most popular languages today, whether it's Python, Ruby (On Rails, or not), PHP, Java, C# or even Objective-C, make it very easy to get started because they have very specific recommendations to make on choice of development environments (IDEs), documentation, and the hoops you must jump through to use other people's code in your projects.
     
    Specifically, they have:
     
    • Great/Clear, officially sanctioned documentation. I've found Clojure's to be terrible in comparison. Good documentation groups similar functionality together in a clear way. It has copious example code alongside the API docs, and there are links to related API. (See the documentation for PHP, Java, and newLISP for great examples of this).
    • Great/Simple, officially sanctioned IDEs and/or source editors. Clojure has good IDE support (after trying all of them, I've currently settled on IntelliJ), but the getting-started experience is pretty terrible (more on this in the next section).
    • Simple, officially sanctioned methods/systems for using third-party libraries. Ruby has their gem system, Objective-C is completely different with its frameworks and Xcode, but they both satisfy the requirement of telling n00bs exactly what to do.
     
    The "officially sanctioned" part is important because it tells newcomers exactly where to turn, and it minimizes the amount of effort that goes into competing endeavors, thereby focusing that effort onto the officially sanctioned one.
     
    Once a n00b has a working Clojure setup, they'll be able to branch out and explore other options, but throwing hundreds of poor choices at them will only overwhelm them and scare them away.
     
    Clojure suffers from choice paralysis, and bad choices

    The Clojure community recently made great progress in becoming more n00b-friendly with the creation of an officially-sanctioned Getting Started guide. This is an excellent resource, but it suffers from choice paralysis.
     
    There's something wrong when you have an officially-sanctioned Getting Started guide, and yet your n00bs still end up spending hours getting started.
     
    When a similar point was brought up on the Clojure mailing list, some defended Clojure's current state of affairs, saying that it's super simple to get up and running with Clojure, that it takes mere minutes:
     
    Here's how I installed the Clojure REPL on my system.
    1) Downloaded clojure-1.1.0.zip
    2) Unzipped clojure.jar
    3) Ran java -jar clojure.jar
     
    The first step is admitting there's a problem, and by that token the above is genuine dishonesty. There are several problems with this:
     
    • That is not how you develop with Clojure. Clojure, being Java based, uses packages and namespaces, specially structured directory layouts and numerous build systems. You don't spend all your time playing with a REPL.
    • Clojure 1.1 is already outdated. The datatype stuff that's in the 1.2 builds is being touted as The Way Things Should Be Done From Now On™. Clojure is a new language, and so far it's an early-adopter's game, and early adopters usually like being on the cutting edge, and not forced to learn and use methodologies that have been essentially deprecated. Many n00bs are aware of this (I was), and so they want to use 1.2, and that has serious consequences on the Getting Started Experience. Yes, staying on the bleeding edge, and in this case using different versions of Clojure should be clearly outlined somewhere in the Getting Started Experience.
     
    So, returning to the larger point, how can it take hours or even days to get started with Clojure, despite the Getting Started Guide?
     
    Let's see what a n00b has to go through.
     
    Paralysis: Getting clojure.jar & clojure-contrib.jar

    First, you have to obtain Clojure. This isn't that easy. There are a bunch of ways of doing it (if you can't tell, I like lists, could be the Lisper in me):
     
    1. Get it through the leiningen script, which installs Maven and puts it in Maven's repository. Don't know what WTF Maven is? Scared once you've gotten the gist of it? Where the hell is clojure.jar? Is it safe to reference it once you've found it in "Maven's repository"? Should you make a copy of it? You're not alone, fellow n00b.
    2. Download a pre-built copy from Google Code. Where's Clojure 1.2? Do these jars have the source included in them so that IDEs can do their magic?
    3. Download a pre-built copy from GitHub. Same questions as above.
    4. Learn git if you haven't and clone the repository from GitHub and build it yourself.
    5. Grab the nightly builds. This is actually an excellent resource, and I forgot how I found it.Why isn't it clearly linked to from clojure.org or the Getting Started Guide?
     
    Now, once you've finally managed to obtain your clojure.jar of choice, you're faced with another problem: how do I get ___ IDE/source-editor to use it? How do you use it across projects? This isn't addressed anywhere! For example, the instructions for using Emacs and swank-clojure/slime do not explain this, nor do the instructions for using any of the IDEs, yet it's probably a pretty common question that's asked by n00bs.
     
    Clojure has many Getting Started related issues, and one of them is the fact that unlike other languages, Clojure is a library. With Python, you have a system-wide Python install directory. Heck, with Java, you have a system-wide JDK directory, that everything else uses. Not only that, but you have several of them on OS X, and it's fairly straight-forward to tell and IDE to use one over the other. You also have the concept of a current JDK, which is achieved through a symlink.
     
    With clojure, this is all very strange for people who have no idea how to use Emacs, IntelliJ or any of the other IDEs, and don't know anything about Java class paths and all that.
     
    Paralysis: How do I run this bloody thing?
     
    OK. Now you've spent 30 minutes to an hour (or more) figuring out how to obtain the right copies of clojure.jar and clojure-contrib.jar. You know where they are and you want everything to use them. Now, how do you go about using them?
     
     Most languages have an easily accessible REPL/interpreter:
     
    $ python
    Python 2.6.1 (r261:67515, Feb 11 2010, 15:47:53) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    $ irb
    >>
    $ newlisp
    newLISP v.10.2.9 on OSX IPv4/6 UTF-8, execute 'newlisp -h' for more info.
    >
     
    To run a ruby/python/newlisp file you just put the name of the file after the executable. Even Java's method, though much more complicated than the above, is still manageable because there is a single, documented, officially sanctioned way of building and running Java files (the commands: javac, jar, java).
     
    How do you do that with Clojure? Surprisingly, the answer is nowhere to be found in the Assembla Getting Started Guide. You have to find the REPL and main page on Clojure.org, and the answer is enough to scare away most n00bs coming to clojure from any of the above languages:
     
    $ java -cp clojure.jar clojure.main /path/to/myscript.clj
     
    Sorry, that doesn't make a nice first-impression on n00bs. So after asking on #clojure or the Google group, someone from the community (read: not an officially sanctioned answer), will suggest that they use a "clj" script. What is that and where do you get it?
     
    A clj script is a script you either obtain from some random person, or you write yourself, and it essentially wraps the above command in some logic so that you have the same experience that you get from irb, python, lua, newlisp, etc. It handles separating arguments passed to the java command from those passed to the script, and it sets up the classpath string (and if you happen to be a n00b to Java, it means you're at an instant disadvantage when it comes to Clojure, because "classpath string" means nothing to you, and it means you've got to learn yet another thing before you're able to get started).
     
    What should be basic functionality that comes with a language is instead left up to the n00b to figure out. I eventually decided to write my own in newlisp.
     
    Paralysis: Emacs/VIM
     
    The fact that Clojure is based on Java is both a blessing and curse. A blessing because you get all those Java libraries for free, and a curse because you get to deal with Java and hell that comes with it (ant, maven, etc.).
     
    After a n00b has obtained Clojure and graduated beyond 'clj' and the REPL, they'll want to edit source code and build jar files of their own. This is probably the point where most n00bs run away in terror, because they will be assaulted by a myriad of choices. This critical point is something that experienced Clojure developers have the least sympathy for, because they are already comfortable with the choices they've made, and they've long since forgotten or stopped caring about the existence of other possibilities (probably because of how overwhelming they are).
     
    The n00b has no such luxury though, they must decide, for example, whether to go with Emacs (or VIM) or an IDE. Today, lots of seasoned Clojure developers will make the unfortunate mistake of recommending Emacs. I say this as a fairly experienced Emacs user (I've written elisp, I've used Aquamacs, terminal emacs, and Cocoa Emacs. I've tricked out my init.el, etc. I still think it's horrible advise to give to n00bs. Same goes for VIM).
     
    As this post is already long enough, I'm not even going to touch the thousands of issues that a n00b will definitely run into if they choose to follow this advise, but needless to say, it's just another way Clojure scares potential adopters.
     
    However, the n00b will likely give Emacs and swank-clojure a try, and they will likely either run away screaming or stick it through and survive the initiation, albeit after days of pain. And they've still yet to write a single line of Clojure!
     
    Paralysis: IDEs
     
    Now, say our n00b is either wise and decides to shun the time-suck that is emacs, or is told to use an IDE. They now have to figure out which IDE to use. There are three options currently advised on the Getting Started page:
     
    1. NetBeans + Enclojure
    2. Eclipse + Counterclockwise
    3. IntelliJ IDEA + La Clojure
     
    One major problem is that there are no instructions for how to use the clojure.jar/clojure-contrib.jar files you've downloaded/compiled. It would be great if there was!
     
    So far, I'm most impressed with the experience I had with IntelliJ + La Clojure. I found it to be less bloated and faster to launch than the others, and it's very powerful and has lots of useful features (like support for TextMate-like snippets), and plugins. The Clojure plugin is good, but could definitely use work. In general, I liked the overall design of IntelliJ over the others though.
     
    I think the Clojure community should "officially sanction" one of these IDEs and put their combined efforts into making it insanely great. The entire Apple developer community happily uses a single IDE: Xcode. Why? Because there's little reason for an alternative. It's pretty freaking awesome. This makes for a much better n00b experience because there's only one thing to investigate and learn about.
     
    That's not to say the other IDEs shouldn't be supported or listed, but just that from a n00bs perspective, it would be great if there was a single, awesome go-to IDE to dive right in.
     
    Build Systems
     
    Yet another set of choices n00bs are faced with is figuring out how to actually compile their source into an executable. The Clojure community has made some good progress here thanks to the work of Phil Hagelberg (technomancy) on leiningen.
     
    In Java, there are many build systems, and n00bs much figure out whether they'll go with Ant, Gradle, Maven, leiningen, and possibly others.
     
    Oddly enough, the Getting Started docs assume the n00bs trying to get started have heard of these things. They mention them, but they don't actually explain that these are build systems.
     
    Leiningen is pretty nifty once you've figured it out, but unfortunately its tutorial doesn't provide a basic example of how to go from point A (source code) to point B (executable jar file). It does describe the process, but it's not very clear to a n00b who doesn't know all of the project.clj syntax for specifying the :main class and using :gen-class. Nor does it mention how to include a jar file that's located locally on the drive and not obtained through the online repos. These basic things, for some reason, are glossed over, or left out altogether.
     
    It would be great if this entire problem were solved by the IDE transparently via drag & drop (the way Xcode does it), or if there were a simple way to integrate leiningen with them.
     
    Documentation

    As mentioned, even if our n00b survives the initiation, Clojure's core documentation is pretty horrid. This is one area that needs much improvement (the importance of examples can't be understated), and I think the community would be wise to seek out other languages like PHP and newLISP for inspiration on how to get this right.
     
    Conclusion

    Clojure is a beautiful language, but if its community wants more people to appreciate the language, then it may want to consider making the getting started experience beautiful too. All of the recent changes I've seen are a step in the right direction, and I hope this list of grievances can help to further improve the experience.

    Was Bush a better leader than Obama?

    It seems to me that instead of leading people, Obama tries to reason with them.

    I think this was most evident in the speech he gave on the oil spill:
     
     
    That's not the only example though. Consider how long it took him to pass Health Care Reform. He barely made it, and by the time it was over he was forced to break his promise of offering a public health insurance option. In the end, HCR bill passed, severely watered down.
     
    Now compare this to what Bush somehow managed to get done during his presidency:
     
    1. He convinced America to invade Iraq for questionable reasons.
    2. He sent America into a second war in Afghanistan.
    3. He easily passed a remarkable piece of legislation that expands government power, allowing it in some cases to suspend a person's right to due process, and gives the government the ability to spy on you without the need to obtain a warrant.
    4. Passed a bunch of other legislation related to education and the environment, much of it demonstrably harmful.
    5. And he did all of this while giving the media and anyone who questioned him the finger.
     
    2251072561_11fdd3f165
     
    Now that's bloody impressive!
     
    Sure, 9/11 was a massive catalyst for much of that, but so is the oil spill—a catalyst for potential enviornmental and energy legislation. Yet unlike Bush, Obama isn't taking charge of the opportunity.
     
    It should be recognized that a leader's ability to lead is not an intrinsic quality of the leader himself, but rather it depends on the kind of people he's leading. When I hear Obama speak, I usually think, "Yeah! That's right! Sounds like a good idea!" But I am not representative of America, and more importantly, I certainly am not representative of the Senate, where good legislation more often than not, goes to die.
     
    Perhaps Obama needs to awaken his inner-cowboy.

    Frame Thinking And Social Roles - Part 2

    Continued from Part 1

    Let's go back and take a look at that person in the convenience store, the one who was devoid of all of this indoctrination.

    It would have to be explained to this person that in convenience stores you're supposed to buy the convenience you're looking for, and then leave. The whole place would feel to them to contain a feeling of cold imposing, why can't they strike up a conversation with the interesting people inside? Why does everyone avoid eye-contact and pretend not to know you? Surely they know we're all the same sort of monkey blobs hobbling about? Why are you hobbling about? What's that you've got there? Why are you getting it?

    This sort of behavior does not happen in convenience stores. Why? Social roles.

    Each of these hobbling monkeys has a persona, and that persona is very much like a chocolate pudding pie that has had tons of layers of multi-colored lard placed atop of it.

    We have had these layers slathered all over us since our birth.

    First we're a child. Next we're a boy (or girl). Next that boy is given a constant name, the purpose of which is so that this boy can be easily differentiated out of the other boys.

    This boy is then told that he is that name that he was given. You're not "Johnny", why you're "Bill". For a few days you don't play this idiotic charade, you don't respond when the name that's been given to you is called. But soon enough you'll learn to respond when "Bill" is called. After a while you'll actually begin to identify yourself *as* "Bill", saying that you "are" Bill, and you won't realize that what you consider to be a your "real" personality, your likes and dislikes, etc. is something that has been largely manufactured since your birth, it is, in a way, almost as fake as the actors that you see on TV screens.

    This is not a bad thing we've done, but what's important to recognize and remind ourselves of is that it's something that's been *done* to us, by other hobbling monkey blobs.

    This "layering" continues though. It doesn't stop. Perhaps this is how human beings in their normal states of consciousness think, but this is how we identify ourselves. Not by what we really are but by these symbols and references and titles and names.

    You are an "employee", a "student", a "son", a "daughter".  Sure, some of these words have real physical meaning behind them. "Son" means, literally, that you are the growth that happened when your father impregnated your mother.

    However, the role that typically comes into play has little to do with that. It means, among other things: You're supposed to obey your parents. You're supposed to do what they say, and not just that, you're supposed to love them. These ideas are beaten into you from an early age, through either physical or emotional means. Sometimes the monkey blobs calling themselves your parents turn out to be real assholes and you start questioning whether you really ought to follow that role or not. Conflict then occurs, both internal and external, between you and your parental figures, and between the different roles that are playing inside of your head.

    Do you see though that all of this is foolishness that we've invented? What started out as a symbol that referred to a physical thing ("son" meaning "egg-sperm of these two monkey blobs"), has now become a role. A script to follow.

    This is OK. It has certain consequences like ethnic wars and mental illnesses but on the whole it's OK, if only because it seems to be the only way these monkeys are currently capable of functioning and doing the things that they do.

    After all, someone has to be convinced that they are a "student" and therefore need to spend their time in constant anxiety instead of playing and fornicating. Otherwise nothing will get done!

    When you know someone's social role that gives you a leg up on them. "Oh you're a student? I see.. I see.. I know what you are, you study!"

    So now you will ask, "Well if you are not a student then what are you?"

    If I answer: "You are a monkey blob", will that satisfy you? It might satisfy some of you, but others who know a thing or two about psychedelics or eastern philosophy will know better.

    You are not just a monkey blob, you are everything in existence. That is what you really are. This thing we refer to as the "whole of existence" is capable of what we refer to as "consciousness," and through these particular monkey blobs it is able to interact with non-other than itself.  You sitting there in the audience, on a deeper level, are just me pretending to be not-me, interacting with myself.

    Frame Thinking And Social Roles - Part 1

    There exists a certain perspective, a mindset, where one suddenly realizes, and becomes absolutely astounded, at how human beings normally view the world. It is not easy to explain this perspective, but in this post I will try to give you a taste of it.

    Whenever you are going about your daily doings, interacting with your environment, you are constantly taking this environment in through your senses and begin this very peculiar process of framing what you are witnessing in a previously known context.

    In effect what ends up happening is that your brain becomes this gigantic, complicated cliché (or archetype) generating machine. Let's look at a few examples:

    Collegeparty
    You're at a party. Right there, before you even enter the party, your brain already frames this concept in a familiar context of what a party is, and it brings all sorts of clichés and expectations to the forefront of your consciousness. When you enter the party you immediately begin categorizing and framing every individual you encounter. "Oh, she's a slut. He's a party animal. He's a frat-boy. She's hot." Normally you are not even aware that this process is taking place in your head, you are so used to it that anything other than this kind of thinking does not seem possible or relevant.

    A party is an easy, cliché environment to discuss. What you must realize is that this mindset persists in almost all environments that you find yourself in. The more familiar the environment, the more this sort of thought process takes place, and since most people find themselves in the same or similar sort of environment on a daily basis, their thoughts are usually nothing but this sort of thinking, but on an almost subconscious level where they do not even realize that they're doing it.

    When you become truly aware of this thought process, it can be a shocking realization, for you begin to see it in action everywhere. It's as if you suddenly discover that the world you live in is actually inhabited by millions of invisible ghosts! For example, when you walk into a store or any sort of institution, all sorts of unwritten rules "exist" that dictate the actions that you must (or should) take.

    Convenience-store

    When you walk into a convenience store, it is expected that you go and get whatever item it is you're looking for, walk up to the cashier, hand her some paper or a plastic card, and promptly leave. There are even signs that enforce this behavior ("No loitering!").

    Imagine a person unaware of all these invisible, man-made rules that exist in the minds of men. They might walk into a convenience store, and just sort of aimlessly look around, stand around for a while, and perhaps look a bit confused. This person would be asked if they need any help, and to this question the person would then likely react with further confusion. "Help? Is there something wrong?"

    Perhaps the easiest way to stop this kind of "frame thinking" from happening is to place yourself in a totally unfamiliar environment, for then your brain is at a complete loss of what to do. For modern American humans especially, it might be ironic to note that the most unfamiliar environment would likely be... "the environment." Walk along a trail you've never been on by yourself. You might be surprised at how quiet it can be, this is partly because your brain is chattering less, and partly because you aren't surrounded by all the other humans making all sorts of noise. Instead of classifying everything it sees into models and archetypes it sees the world slightly closer to what it actually is. Meditation is perhaps another way, as it helps stop the chatter, but you should have your eyes open, not closed, so that you can experience your external (as opposed to internal) environment.

    In such a situation you might then become more aware of the "frame mindset" that I'm referring to. You might be astonished then to realize how much of the world you've lived in has been a world completely imaginary. A world that you carry around with you like a massive weight. This world is the world that our society has created for itself. It exists solely in the minds of human beings. It's important to think of it as a "world", because that's essentially what it feels like. You might then begin to wonder at all the different worlds that exist in our world. Travel to the middle east or to a remote tribal village and marvel at how different the world they've created for themselves is compared to yours. It is very similar to what we mean when we say "culture."

    There is, actually, a point to this note. And that is that this world that everyone carries with them, that you carry with you everywhere you go, is just in your head. Even though it may seem like it *is* the world, it is not. The actual world out there is far more complicated, and far larger than the one that's in your head. These may seem like obvious statements but they are not. Most people do not realize this because they're not even aware of this distinction. They are completely absorbed in the world of symbols in their head, and they apply these man-made symbols onto the objects that they encounter. For example, we say that a rabbit is hairy, or that sandpaper is rough. These concepts of "hairy" and "rough", "cold" and "hot", do not exist in nature on their own. They are relationships between you and the world, and their feeble existence depends on your ability to experience them. They can only be said to exist in the world through you. There is no "hairiness" out there.

    Frame Thinking And Social Roles - Part 2

    Hexxus

    Seeing these photos from the oil spill:

    O06_23680647

    I can't help but be reminded of Hexxus from Fern Gully. How eerily appropriate:

    Save The Internet!

    You may not be aware of this, but the internet as you know it is under attack.

    Some recent developments have made the matter all the more urgent. It looks like the FCC chairman may cave to corporate interests and back down on Net Neutrality. Please consider filing a public comment under proceeding 09-191 before it's too late.

    Here is mine:

    I'm writing to urge the FCC to reclassify broadband under Title II of the Communications Act as a a telecommunications service, which it should have been in the first place.

    This will give the FCC the necessary authority to ensure Americans unfettered access to the internet.

    This issue is of colossal importance, not just to Americans but to humanity at large. A neutral internet is vital to the progress of man as a whole. Net neutrality would ensure that the internet remain as level a playing field as it is today, unharmed by the interests of corporate giants.

    At stake is the very foundation of information, knowledge, and even freedom of speech. The FCC has a duty to protect all of these values and the American people.

    We have seen what happens when industries become dominated by mega-corporations, where a small handful of very large companies have absurd control over the government and the lives of Americans in general. One need only to take a look at our current health crisis, the growing number of obese people and Type-II diabetics, or to the disparity in funding for education as opposed to military spending, to see what happens when public policy is dictated to the government through the lobbying efforts of mega-corporations whose sole motive is to cut costs and make profits.

    There are countless examples of industries out of control due to the obscene power poorly wielded by conglomerates. In some States it is illegal to disparage a hamburger [1][2]. The fast food industry has led to the dissolution of a diversity of healthy foods and to the creation of a monoculture of a small number of commodity foods, manufactured by about only 6 corporations, with questionable nutritious content, occasionally deadly [3][4], and with a negative environmental impact that is wholly undeniable.

    It may sound odd to compare the state of modern industrial food to internet access, but the point should be clear. When a small number of extremely powerful, profit-motivated companies are given unrestrained control over any resource, the quality of that resource plunges, and access to better alternatives becomes marginalized.

    What a tragedy to humanity it would be if this were to happen to the medium that connects us all.

    As a government entity you are the only force that can protect us, the people, indeed that it is your primary function.

    Please act.

    Sincerely,
    Greg Slepak

    [1] http://www.purefood.org/disparg.html
    [2] http://www.examiner.com/x-12153-Nashville-Indie-Movie-Examiner~y2009m6d29-Foo...
    [3] http://www.google.com/search?q=salmonella+poisoning
    [4] http://www.google.com/search?q=mad+cow+disease

    UPDATE: Looks like there's hope still!

  • Greg Slepak's Posterous

    Archive

    2011 (2)
    2010 (12)
Next Page 1 of 2