Friday, April 29, 2011

A Unifying Theory for Humor

My friend Sean forwarded me a very interesting read today about classifying humor. It look a while to get into, but after getting a page or two deep into the article, I read a passage which smacked me in the face like a wet noodle. I found this summary to be refreshing, elegant, and a great candidate for Occam's Razor:

McGraw and Caleb Warren, a doctoral student, presented their elegantly simple formulation in the August 2010 issue of the journal Psychological Science. Their paper, “Benign Violations: Making Immoral Behavior Funny,” cited scores of philosophers, psychologists, and neuroscientists (as well as Mel Brooks and Carol Burnett). The theory they lay out: “Laughter and amusement result from violations that are simultaneously seen as benign.” That is, they perceive a violation—”of personal dignity (e.g., slapstick, physical deformities), linguistic norms (e.g., unusual accents, malapropisms), social norms (e.g., eating from a sterile bedpan, strange behaviors), and even moral norms (e.g., bestiality, disrespectful behaviors)”—while simultaneously recognizing that the violation doesn’t pose a threat to them or their worldview. The theory is ludicrously, vaporously simple. But extensive field tests revealed nuances, variables that determined exactly how funny a joke was perceived to be.

Enjoy the full article @
http://www.wired.com/magazine/2011/04/ff_humorcode

Monday, April 4, 2011

IFF: If and Only If...

Sometimes I take some time off from programming to work on little side projects. Currently my friend Dippingsauce and I have been working on getting a new 4chanesque page up called "If and Only If" which focuses on the rhyming hypothetical of our favourite celebs.

He's a pretty stupid IFF for Charlie Sheen:
"If Charlie Sheen processed red blood cells for a living, he'd be Charlie Spleen."
read some moar! @ http://www.babolabs.com/iff

Currently, we're working on getting a reddit style up and down rating system up and running. We'd love to hear your suggestions. Some users have uploaded some pretty funny content. Feel free to upload some yourself. It's nothing serious, just for fun, so know yourselves out.

Be well,
- mek

Sunday, April 3, 2011

Why GIMP isn't as bad as people say

This post is in response to an article written on "Piestar"

http://piestar.net/2009/03/01/gimp-sucks/#comment-15138

Gimp is modular, extensible, extendible, portable, lightweight, easy on memory, has a powerful batch processing system, tons of features, regular patches and bug fixes, is free of cost, open source, and has a helpful user-base.

I think the responses to this article would be a lot more interesting if every photoshop user who didn’t pay for their software was pruned from the wall. If Photoshop was priced at $50 – $100, I’d be inclined to agree with this article. However, it’s not. Photoshop CS5 costs 5 to 10 times said quote.

It’s not just about price. Despite the fact that Photoshop CS5 is US$699 and the Gimp is free of charge, there is something to be said about the fact that it is free (as in freedom) software. It’s far more modular and portable than photoshop. In its current stage, I believe it is lagging behind its competitors (photoshop, illustrator, et al). However, I anticipate GIMP becoming far more usable as the need for editing graphics becomes greater in the open source community. For now, they’re still trying to get x11 up to par…

There’s a difference between saying a program suffers with respect to usability and a program being garbage. Likewise, a program with a good UI does not imply it is _not_ garbage. A program can look great but segfault constantly and be susceptible to buggy behaviour. From an implementation perspective, the Gimp is pretty decent software. It’s reasonable on memory, robust, modular and extensible, has a plethora of features, and allows easy interfacing with a variety of file formats. And not that the average end-user cares, but the algorithmic implementations of many of the GIMP’s features are pretty elaborate (especially when compared to other day-to-day programs such as text processors). Admittedly, from a usability perspective, the program does suffer from a poorly designed interface with completely unintuitive (and bizarrely implemented) controls, panels, canvas, and tools. That said, should one invest some time learning how to use GIMP correctly (less than $699 worth of time, I’d wager), then the software is more than adequate for the average user performing the average task (which I consider to be minor photo editing, resizing, changing hue and saturation, etc).

Also, many problems mentioned in this review have been noted by the designers and are under development, such as the new, “new non-destructive image processing core”.

I, for one, look forward to see how the GIMP will improve over the next few years. Until then, I suppose I’ll just have to stick to my CLI and avoid starting X all together…

Monday, September 6, 2010

Today's Hour of Exploration

Stumbled upon some great reads (I'm sure you ycombinator followers have already seen some of them but I thought I'd share anyways).

1. Social Entrapment - really funny analysis of preventing or terminating conversation. (mek approved)
  • http://hyperboleandahalf.blogspot.com/2010/09/four-levels-of-social-entrapment.html

2. Some problems with tar [Tape ARchive] (actually haven't read the whole thing yet - sorry)
  • http://duplicity.nongnu.org/new_format.html#nottar

3. I skipped the first three or so paragraphs and read starting at "Talkers v. Doers". Actually found it really interesting how this guy solved his problem. I am guilty of taking shortcuts and will try this strategy.

  • http://www.getrichslowly.org/blog/2010/08/30/action-not-words-the-difference-between-talkers-and-doers/
4. And of course: How to reset your sleep schedule, Seriously.

http://projectb14ck.org/how-to-reset-your-sleep-schedule-seriously

Hope some of you find use for these articles.

Sincerely,
- Mek

Thursday, December 17, 2009

Emacs Lisp lacks Tail-Call Optimization

I recently wrote a page-replacement simulator to experiment with functional techniques to handle memory retrieval on demand, as well as explore page-fault averages for a variety of paging algorithms and learned that elisp (Emacs Lisp) does not perform tail-call optimization on tail recursions!

Wait, first of all, what is a paging system? Paging is a concept in the scope of computer Operating Systems that deals with a programs need to access (and thus load to memory) specific pages of information from memory. When simulating the concept of paging, usually we are concerns with three main variables. Assume we only have to serve pages to a single process. Unrealistic, but bare with me. In this scenario, we first need to know the sequence of pages that the process needs. This information could appear as streaming request from a process, or a process may submit a request for an ordered sequence of pages. Once we have the ordered sequence, we need to have finite memory, we need some way of managing the page requests of processes. How many pages can we store at once? How long does it take (how expensive is it) to load new pages into memory? Chances are, we don't want to load a page into memory if it is already in memory. Or maybe we do! This brings us the the third factor: the paging algorithm. There are many different paging algorithms which depend greatly on the hardware its host computer has available. Some common examples of paging algorithms are FIFO (first in, first out) and LRU (least recently used). These are two paging systems that I explore in my simulation. If you are interested about learning more about paging systems, memory management, and virtual memory, I suggest reading: http://webster.cs.ucr.edu/AoA/Windows/HTML/MemoryArchitecturea3.html.

I have to study for a final exam for database theory now, so I will save the rest for a second post. In the follow up I will illustrate how I achieved a functional (paradigm) implementation of a paging system for FIFO and LRU, introduce the idea of recursion versus tail recursion, and then vent by ranting about why it is unacceptable that Emacs Lisp doesn't have tail-call optimization.

Also, this is a reminder to myself to talk about some new projects I am working on for computational linguistics, data mining, and machine learning. Code name: Linguistipedia.