Website Logo. Upload to /source/logo.png ; disable in /source/_includes/logo.html

Mocking Eye

'Tis all in vain?

Exploring the Exocortex

| Comments

For the past several weeks I have been working on an Independent Study course at Brandeis University which I have titled Exploring the Exocortex: Machine Learning for Human Behavior, advised by Professor Tim Hickey. Originally conceived as an attempt to use biologically inspired machine learning techniques such as neural nets and genetic algorithms towards modeling and then improving day-to-day human behavior, the course has moved towards a more direct path to solving that problem. I have read several papers and chapters in books, summaries of which I will post soon. In the end, this series of posts (which my be followed using the category exocortex on this blog) will adapted and augmented into a paper, which I will also post here. I believe that research should be done openly and publicly, and so, that's just what I shall do. What is the exocortex? To the best of my knowledge, this is a term coined by researcher Ben Houston--and popularized by science fiction author Charlie Stross--to describe the various systems humans may use in thinking but which are not part of our bio-brain. Already, our Blackberries, iPhones, and other essential electronic devices are proto-exocortices (yup, the plural isn't pretty). Why am I working on the exocortex? As human civilization has grown, we have increased in complexity. Some welcome this, some don't. Some believe that it will lead to some sort of Singularity. The Flynn Effect most likely is a result of humans attempting to adapt to this environment which is growing exponentially more complex. Already the problems of an Attention Economy, pioneered by the same people who pioneered modeling human behavior and augmenting human cognition, are apparent: There are more things one must pay attention to, within the same time constraints and physical limitations. Thus, it seems obvious to me that to cope with this information, and more importantly, attention load humans must create appropriate tools. The exocortex is a collective name for those tools. What do you mean by "Human Behavior"? I am planning to specifically tackle the problems I have greatest difficulty with allocating attention to: those pesky appointments and other thing one might put on a calendar. These things have a relatively high importance, and also allow pretty easy assessment of goal completion. How do you plan to work on that? I am devoting this course to creating a document detailing what I believe is a path of least resistance to a piece of software that can model strategies for goal completion and evaluate the best ones. If time permits, I will implement as much of it as I can. Here's a rough plan for such a system:
  • Goals are inputted into the system.
  • User provides goal strategy by narrating real-life activities.
  • User strategy narrative is annotated using frames from FrameNet.
  • Goal-completion satisfaction is rated by user. This is somehow applied to constituent frames.
  • Process is repeated, and different frames are assigned different valuations based on perceived contribution to goal completion.
  • System provides best set of frames to form optimal strategy for the completion of each goal.
How does this system differ from a PIM, e.g. on a Blackberry? Various calendar systems may provide reminders, perhaps with some intelligence noticing your location etc., that assign to you the task of evaluating your current strategy and seeing if it matches a hypothetical optimal strategy for accomplishing the goal specified in the reminder. This is an attention heavy process. Instead, I would like to move as much of the strategy modeling and evaluation as possible out to the exocortex. Even when strategy evaluation is not yet optimal within the system, merely providing concrete strategy options should reduce the attention needed by the user to evaluate a course of action. Are you really going to do this, and not let it stagnate like you've done with Gargoyle? Well, I'm still working on Gargoyle, slowly but surely! Many new things in my life have taken time I could spend on it (some will be revealed soon). This exocortex project, however, is guaranteed within the semester time frame as a grade depends on it. So, you can be assured of results. I hope you're interested and excited, because I am!

Science Fiction -- Narratives That Let Us Grow

| Comments

Science Fiction. I like reading it. But I find just about anything calling itself that in video form to be very disappointing. Why do I like science fiction? Well, one could pick any of numerous tropes and assume it has some attraction to me. Perhaps it's space, or aliens, or AI. Maybe I'm just attracted to the futurism aspect, the extrapolation of current circumstances and the examining of possibilities. Well, although the last one may approach what SF means to me, none of these reasons really captures its appeal. Let's start with what bothers me about most SF in Movies and on TV. In just about every case, I create a description such as "Soap Opera... IN SPACE" (that's Star Trek) "Jesus/Harry Potter/Frodo Baggins*... IN SPACE" (that's Star Wars). Well, what's the problem with that? Assuming whatever I put before "IN SPACE" or "WITH LASERS" or "IN THE NOT TOO FAR OFF FUTURE" is valid and valuable, there really isn't a problem, right? Various form of narratives, be they prose, poetry, movies, tv series, oral histories, what have you, attempt to present and explicate some aspect of humanity, the universe, and our experiences in it. Since this encompasses just about everything, well, there aren't real limits. Much of what we would call "fiction" or "drama" works within the bounds of the "real world". This means that although the characters may have never existed, their experiences are set within an environment that we right now, or in the past, may have found easily possible. Science Fiction, and really just about everything one could call Speculative Fiction, instead sets the interactions within a reality stretched somehow. Perhaps it's stretched into the future. Perhaps it's stretched merely beyond the bounds of the mundane (as in magical realism). So, in both the SF I like and the SF I dislike, this stretching seems to take place, so what is my problem? Well, it is that the stretching of reality must serve a purpose. Just like most narratives cannot be truly mundane for we could not extract something to add to our lives from them in that case, the stretching of reality cannot have utterly no effect on the narrative itself. This is, however, exactly the case in my "...IN SPACE" examples. The same lessons, ideas, memes, and emotions can be just as easily be gleaned from the narrative with even vast shifts in environment. The SF I enjoy most, however, makes the stretching of reality integral. That is the whole point. It means to stretch reality in some way, and then examine, speculatively, the effects on the aforementioned humans, the universe, and their mutual interactions. Change the environment, and suddenly things just don't make sense. Isaac Asimov's Foundation series may have been roughly patterned on Gibbon's The Rise and Fall of the Roman Empire, but without pretty serious revisions it can't be easily placed within another context. His Robot stories fundamentally examine the interactions of robots and humans. You can't merely replace "robots" with something else and retain narrative cohesiveness. My point of view is limited by what I can experience. "Plain" Fiction can provide many new points of view, which is truly necessary, in my opinion. SF, however, goes even further beyond that. It provides not only new ways to view similar things, but it creates wholly novel things and shows different ways of looking at those. This means that not only does it train one to perhaps see things as others see them, but it also allows a better understanding of how others might see things that are not yet existing. That is, faced with different choices, not only can the consequences be plotted, but also a more complex set of potential multiple understandings of the choices. Yes, this may sound like an overly practical end for narratives. But I believe that whether we want to or not, we internalize the narratives we consume and then proceed to reapply them as sorts of priors. If we merely wallow in archetypes the narratives that we ourselves create will be constrained. I want our minds to be free, our future to be thick with possibility, and our past to be replete with the ambiguities that it truly contained rather than the mere certainty of what came to pass. * young orphan-ish male living mundane life discovers that his father (or uncle) are rather greater than they seemed, and receive relic/gift from him (usually arbitrarily). Proceed to go on adventure of discovery, gaining much wisdom in the process.

Moviesneak -- Stretch Your Movie Ticket Dollar

| Comments

Ever sneak from one movie to another at the movie theatre, after only paying for one ticket? Well, I have. And I like it. This can often be done by looking at the showtimes ahead of time and finding movies that are times relatively near each other. Although this is sometimes thwarted by placing the temporally adjacent movies in different sections of the theatre, there are often opportunities for this type of sneaking. But instead of bothering to study movie showtime tables and such, I've written a little python script to do it for me. It's rather rudimentary. Here's how to use it:
  1. Get moviesneak.py
  2. Get showtimes for a theatre in your area.
    1. The format moviesneak accepts is Google Showtimes, which can be accessed by googling showtimes <zipcode>, or using this url: http://www.google.com/movies?near=<zipcode>.
    2. Then select all the showtimes in a particular movie theatre, starting from the review stars, not including the theatre's address.
    3. Copy these into a file somewhere.
  3. Run moviesneak: moviesneak.py showtimes-file [optional time threshold in seconds].
    • By default, the threshold is 15 minutes (900 seconds). The threshold is how long before or after the end of one movie the following one should be. So a 15 minutes threshold means the following movie can start 15 mins before the current one ends, or 15 after (remember that even though it starts 15 mins before the current ends, you won't have to leave early, you'll only miss the previews)
The code is under a BSD license, so just about anything can be done with it. If you have time to muck with BeautifulSoup or just plain regex, it would be nice if moviesneak could query google showtimes (or any other source) directly. The algorithm is very simple, and pretty ugly, but it can be plugged into pretty surroundings easily (such as a web interface). Edit: I haven't bothered writing a chaining algorithm (i.e. find the longest sequence of contiguous movies) mostly because I really can't watch more than 2 movies in a row at a movie theatre. However, one shouldn't be hard to write, since the corpus size is small enough even horrible algorithms will chug through quickly. Maybe when I'm bored enough/free enough I'll write one to extend moviesneak.

Teaching

| Comments

The primary task of a useful teacher is to teach his students to recognize ‘inconvenient’ facts - I mean facts that are inconvenient for their party opinions. And for every party opinion there are facts that are extremely inconvenient, for my own opinion no less than for others. I believe the teacher accomplishes more than a mere intellectual task if he compels his audience to accustom itself to the existence of such facts. I would be so immodest as even to apply the expression ‘moral achievement’, though perhaps that may sound too grandiose for something that should go without saying.

An Svnwiki in Python

| Comments

On a whim, I wrote a little wiki type thing in Python that sits on top of an SVN repo. It's incredibly basic, and basically lets you browse a repo and edit files. Natively, it supports markdown as its default display mechanism, but it would be trivial to teach it the meaning of file extensions and have other view templates. The intended use was for a personal notebook type thing, which I decided to abandon. Basically, it's a lot like Jottit, except you actually have all your data, and can replicate it between locations. Yes, it also sounds like git-wiki,but I only found out about that after I've finished coding this version. Although I decided not to use it, someone else my find it useful, at least the codebase. I am offering it here with absolutely no warranty, and you can use it however you like, you can attribute or not, whatever. Since this was built for private use, i.e. no public access, I was going to integrate grep into it, and other such utils, leveraging unix text processing for search, mass editing, etc. So one may be interested in continuing that. I did not implement a facility for adding pages easily, though that's a trivial piece of coding. Code: svnwiki.tar.gz Change the base variable to reflect the location of your repo. Requirements:
  • web.py
  • pysvn (on debian this is the python-svn package rather than python-subversion)
  • markdown

DIYBio

| Comments

Yesterday I partook in the 2nd ever meeting of the diybio group in Cambridge, MA. DIYBio The meeting was hosted at BetaHouse this time rather than the less experiment friendly Asgard "irish" pub. I got there early, but soon enough other diybionauts — there is no consensus yet around nomenclature, though biohacker seems to hold most sway — began to filter in. We started by chatting and discussing the proposed activity: the good old party trick of extracting DNA from various things (I posted a very similar protocol in this blog before). The demographics seems skewed pretty much exclusively towards tech professionals and young academics in their 20's. The majority don't have degrees in biology, but obviously, everyone is very much interested in the subject or they wouldn't be involved. A small transhumanist contingent was also to be found. When everyone had arrived, we proceeded with the experiment. We used oatmeal, apples, and humans as sources for DNA samples. I was one of the brave few who volunteered their precious genetic data, and I daresay our DNA ended up vastly superior. Either way, it was lots of fun, and in mere minutes we had actually done some biology in a kitchen. Modest beginning foretelling future greatness, perhaps? After we were finished we quickly covered the biological processes involved in our experiment, and sat down to considering the future of the organization. DIYBio aims to be a beacon of responsible and safe amateur involvement in biotech. A major part of its mission is to provide education and guidance on techniques and procedures. But while pursuing these lofty, and slightly nebulous goals, we will do lots of fun biological stuff, too! When a $100 Transformation was suggested (i.e. modifying an organism for $100) I replied that it may come closer to $200 in the end, One Transformation Per Child someone quipped in response. A lofty goal, but a worthy one! Another idea floated was to field an iGEM team not backed by an academic institution. A sort of "minutes" of the meeting can be found on this thread of the diybio google group. The picture on the left? That's me with the test tube of human DNA. The DNA is the milky white substance visible between the two layers of liquid in the tube. There is also some DNA attached to the toothpick I am intently examining :) Don't phage me, bro!

Political Spectrum Through Fiscal Preference

| Comments

I was thinking today that most political affiliation to parties and left/right wing, can be concisely encapsulated by looking at the top Fiscal Priority of an individual. This seems to be able to identify parties and lables that otherwise elude simple description, since they contain a variety of various other views. For example, the US Democratic Party favors government spending maximized towards social programs. The US Republican Party favors--at least since Reagan--government spending maximized towards defense. The US Libertarian Party favors decreased fiscal spending in all categories, and the US Green Party of course favors maximal environmental spending. I'm not quite up to date on the Israeli party zeitgeist, but this same methodology can be applied to them as they were when I left in 2000. People often complain of the blurring of distinction between parties and labels, as do I. Usually such an affiliation tells you little about the person identifying as something or other except who they will likely vote for. Now, however, you will be able to understand their fiscal priorities. Anecdotally (that is, as far as I can stretch this thought exercise without actual data and polls), this is the only policy preference that is tightly-coupled to labels. Bypass the screen of parties and cumbursome ideology: just ask people for what the top spending priority should be for the gov't, realistically*. * This means that although a Republican may want to spend the most on, say, Education, their prefered foreign policy would require heavy military spending, thus in reality, they would maximize defense spending. People are not always honest with themselves about these things, so you have to present this caveat explicitely to attempt to ellicit accurate replies.

Grahpically Representing a Programming Language

| Comments

I have been thinking about taking some programming language and making some sort graphical interface akin to StarLogo TNG but I may be approaching it too a posteriori. That is, I'm assuming a graphigal, i.e. spatial, representation of it would be necessarily good. But I think that follows from the principles of UI design: user interfaces are all about metaphors and similes, and the closer they are to experiences humans have evolved to handle well (like manipulating physical objects) the easier it is for humans to grok. I thought long and hard about using Python but its syntax and semantics just don't respond to spatialization very well. That's when I thought of using Haskell and it might be just perfect for it. When I was trying to model Python spatially I ended up with perverting it into some sort of data structure oriented language. That is, the graphical objects combine into bigger objects which represented data structures. Haskell on the other hand would let me turn just about every user defined function into a physical object, and most built-in functions into a physical idiom. Rather than mere construction of playing blocks, I will translate operators (such as cons) into actions the user performs in the design environment. More on this soon.

The Shahadah (Islamic Declaration of Faith) in Python

| Comments

A moment of fancy on IRC led me to concoct the following:
((len([i for i in __globals__ if i is not god and type(i) is type(god)]) == 0) and (god.prophet == muhammad))) == True
This is the Shahadah represented in Python. Programming Language Wars are frequently religious, I thought why not take it a step further.

Checking in to Brightkite

| Comments

I've been using Brightkite for several weeks now, and I rather enjoy it. What is it? Well, it's a GPS-less location tracking service, of sorts. In its actual usage it is much like Twitter. You register your cellphone , and whenever you arrive at a new location  you can "check in". You just SMS your current address to the service, and it registers that. You can also search for businesses and pick the correct one. It levereges the Google Maps API for location degection based on the address you provide. Once you're checked in to a location, you can post notes, little messages in the same vein as twitter, which will be listed both globally, and within the location's stream. You can also send in pictures to a location. Of course, you can keep track of where your friends are and their various posts. There is some rudimentary permissions control. There are three groups: Public, Friends, Trusted Friends; and you can decide which can see your exact location, or only the city you checked in, and which can see the notes you post. The system notifies you of people checked in nearby, if you so wish, within a radius you specify. My favourite feature of the whole thing is its replication to Twitter. That is, any post you make to Brightkite also appear in twitter, with a little http://bkite.com/xxxx URL appended, which when clicked shows your location on a map. As I was checking in at my work place I had an idea. So I took a screenshot of their check-in button (I hope they will forgive me that transgression). Now I can display it on some site, and garnish it with a check-in link to whatever location is related to that site. For example, on a conference page, you can just click that button to indicate you have arrived, and everyone at the conference on Brightkite will be notified. Here's an example of it checking you in at MIT (requires Brightkite account):
[[posterous-content:jrFmsbFwhkueDsEoCkbf]]
Cool, eh? Brightkite brings location-aware augmented reality one step closer for those without convenient GPS. Want an invite? I've got some left. Leave a comment somehow containing your email (if I don't know it), and if I like you enough, I'll send you one!