Thursday, August 28, 2008

The Next Big Application

Another quick post, just because I cannot delay any longer.

People, get your Firefoxen over to Mozilla Labs and download the prototype of Ubiquity.

If you need convincing, watch the short video.

In a sentence, Ubiquity uses the power of web APIs and some clever behind the scenes coding to deliver an easy to use application that can automate, blend, and extend the functionality offered by separate Internet applications.

Even though Ubiquity is in the very early stages, it won't wreck your computer, and it's already hitting me with a revolution like the first time I used Launchy. Which is not easy to do.


I insist everyone give it a shot. You'll like it.

Vacation Continues...A Random Fact

Well, I'm heading back up to school next Tuesday, so I should get some more posts done in about a week. For now, here's a random fact from Scientific American:

Ever wonder why Europeans don't refrigerate their milk? The answer is both obvious and less offensive than you think!

According to SciAm, some organic and most European (boxed and unrefrigerated) milk is pasteurized differently than "regular" American milk. While the milk I drink is pasteurized using a fairly lame 145F for 30 minutes or 160F for 15 seconds cycle, there is another level called Ultra High Temperature (UHT) pasteurization.

UHT heats the milk to 280F (well above the boiling point of water) for a few seconds. I imagine they're using some sort of flash boiling, but I'm not sure. This extreme heat kills almost all the bacteria in the milk, so it can basically sit on the shelf for six months.

For an American, this sounds pretty sketchy, but the milk probably contains less bacteria than my refridgerated milk. So why not use UHT on all milk products?

SciAm explains that "UHT sweetens the flavor of milk by burning, or caramelizing, some of its sugars", which is apparently not the taste Americans are accustomed to. I imagine it tastes like a stronger version of when I try to make hot chocolate, but end up heating the milk in the microwave for too long and it begins to bubble.

Funny, because caramelizing is a crucial step for a lot of my cooking. Well, in any case, this should allay any traveler's fears about drinking European milk :)

Thursday, August 21, 2008

Microsoft listens!

According to Lifehacker, Photosynth is finally open to those with a windows Live ID!

I'm sure my angry rant about them not updating promising products had everything to do with that ;)

I will probably check this out when I get back from vacation.

Wednesday, August 20, 2008

Games!

I just watched an episode of Numb3rs, which is an FBI detective show with a healthy dose of math/CS. I used to watch a lot of it, but the math has somewhat soured in recent episodes. Coincidentally, my fantastic high school math teacher's father did math consulting for the show after his blog about the show gained some attention with the producers. Cool!
Disclaimer for real math-heads: Numb3rs is best when taken as entertainment, and as discovery of math topics. Often, in the translation from math to exciting real life application!!1, the math is distorted a little.

Anyway, this episode (which happens to be the one on the home page of Numb3rs linked above right now) mentioned the Chinese Room thought experiment and the perfect information game of Chomp (or Munch, etc). Chomp is a fabulous game because it is both utterly simplistic and a neat window into mathematics and game theory. Try it out at the previous link after you read this quick description.

(As an aside: the Chinese Room thought experiment, like most thought experiments, is a great read. I may write about it later, because it seems to be a very interesting statement on Artificial Intelligence that, with apologies to one of the greatest men in history, goes beyond Turing Tests.)

I mentioned that Chomp is a perfect information game, which is a fancy mathematician way of describing games like checkers or chess, as opposed to the prisoner's dilemma. In other words, in a perfect information game, the entire layout or "state" of the game is out there for all players to see. In the prisoner's dilemma, the strategy comes from the lack of perfect information, as it does in most games, like poker or, more abstractly, life. Although I, like most people, have played a perfect information game and thought nothing strange of it, I now find it kind of interesting that some games can have strategy and be interesting without withholding information.

Okay, back to Chomp. I mentioned that Chomp is simple- the players alternate taking blocks of items from a grid. These blocks are created by picking an item and taking all of the blocks to the right and down from that item. This is a lot easier to visualize with the sample game I linked above, called Munch. With that online version, you can play against a computer that always plays optimal moves.

Now comes the interesting part of Chomp: with perfect strategy, the first player always wins. In Numb3rs, Charlie claims that although this can be proved, the winning strategies cannot be proved. I don't think that's true at all. According to the W-God, the first player always wins because of strategy-stealing. The strategy-stealing argument claims that the proof does not constitute how to win every time, because it is non-constructive, i.e., a mere statement of existence. This may be why the show claimed that the winning strategies cannot be proved, because intuitively, I'm sure that you can reason out winning strategies for Chomp, if only by brute force. I may examine this later.

So, if you haven't yet, play around with Chomp online, and then play with your friends. See if you can always win as the first player. To be honest, I haven't figured it out yet!

I'm a big fan of simple games like these that hold the key to interesting mathematical concepts. Feel free to post any others you know of. I once attempted to learn Go, but after a few hours, I was still pretty mediocre. I think mastery of the game is beyond my reach. Go is interesting because it is fairly simple, but incredibly complex to play in practice. In fact, in CS terms, the depth of the search required to play well is so large that computers will probably never solve it in brute force (like they did Chess with Deep Blue).

Sunday, August 17, 2008

Face Swapping

This is a great implementation of automatic face swapping in digital photographs. I hadn't thought of it before, but I suppose it is a natural extension of the face-detection algorithms in even budget cameras today.

In fact, I remember seeing a new point and shoot that has a special burst mode for group shots, where it takes 3 pictures which can be merged in software later to get a photo with everyone's eyes open. I can't find the link now. However, I used to do a similar thing at family parties, with a tripod and the camera's timer. I would take a few shots, and try to combine them later in Photoshop.

I tried this software from Microsoft, which unfortunately looks like it was abandoned. When I used it, it didn't work amazingly well, but I suspect that was due to each shot being of ~30 people, which is tougher for the algorithm than a few. I would've been interested to see this or similar photo software develop at MS- they do seem to know what they're doing. Photosynth was another promising example- which hasn't been updated in a year. What's going on, Microsoft?? I've heard some mutterings about Seadragon (navigation of arbitrarily large photo sets!), which Photosynth is based on, but nothing else. I guess Microsoft would rather spend their enormous resources pushing out Silverlight, which has shown me absolutely nothing and is a shameless repackaging of Flash so that MS can control the market, than on two truly innovative ideas.


Tangent over- back to the original software. It's pretty clear that this face switcher is useful, and there are good examples on their page. I'm interested in where we go from here- what's the next big thing in photo manipulation? Between face detection and seam carving, there's been some cool things lately, but what comes next? And will it be an in-camera revolution, or a post production enhancement?

Face detection is interesting because it is probably the only new feature since digital was invented that truly takes advantage of digital- i.e., something that wouldn't have happened in film cameras. Everyone can be happy with a feature that reduces the amount of photos with the wrong piece of the scene in focus! In addition to face detection, there have been plenty of other enhancements, which have mostly revolved around making it easier to take good photos. I'm thinking of horizon guides, live histograms with blinking highlights, scene modes, and moving object tracking. Even the adoption of image stabilization has done wonders for blurry photo syndrome. So, what else can digital do to create a new feature set?

You know, I really can't think of anything right now. I hope I will later, but for now- any ideas?

Thursday, August 14, 2008

Starting Fresh, Part One

In this Starting Fresh series, I will document how I wiped my hard drive clean and started fresh. In this part, I'll talk about drive imaging. Upcoming posts may include the best applications to install, portable applications, and the like.

Imaging is a very simple concept: take a snapshot of a fully set up computer and use it to easily set up other computers with the same hardware or the same computer in the future. At work this summer, we used Clonezilla to image machines for the workers. Once the image for a specific hardware was created, we simply loaded Clonezilla in a Live CD (the easiest way to run handy Linux-based tools), hit a few buttons, and we had an almost fully set up machine in just a few minutes. The speed was incredible the first time I did it, and I knew I had to try this at home.

Clonezilla is great for corporate use, but I knew my requirements were a little less stringent. Clonezilla is a superset of PartImage, so that's not a bad place to start. Of course, commercial applications such as Norton Ghost exist, but I'm somewhat comfortable with Linux, so I thought I'd save some money.

It took me a short time to figure out how I was going to create the image: at work, we used an SSH server (essentially another computer that hosts files, in this case for Clonezilla to grab and use), but I wanted to go much simpler. At college, I typically only have one machine, this laptop, so I needed a way to store the image locally. While it is possible to use an external hard drive to store the image, I didn't want to finagle with Linux's external drive mounting. After the fact, I've realized this was probably a mistake; it would've been a good, simple solution.

In any case, I also wanted to make at least two partitions on my laptop drive, to keep my data separate from Windows and my applications. Partitions are a nice way to divide one physical hard drive into several virtual hard drives that Windows sees as different devices.

The two main advantages to multiple partitons are adding a simple layer of protection from dumb viruses, and having a little less backing up to do when I want to wipe Windows again. One downside to this is having to resize partitions when you realize you need more space on the application drive.

In this case, a data partition is a good enough place for PartImage to save your main Windows image to. I used SystemRescueCd to run PartImage, which was dead simple. I followed a few of the good guides on the internet, notably this guide for Ubuntu (no difference), which handily showed how to mount my data partition and show PartImage where it was.

After imaging the partition, I booted into Windows, played around for a day or so, and then used PartImage again to wipe back to my saved image. It worked like a charm, and I had my known-working install back. I will continue to perfect my Windows install, and make periodic images. Then, when the inevitable Windows slowdown occurs, I simply wipe back to a good one, and have a fresh, fast, stable OS again.

PartImage does not take the place of backups- I do not reccommend you create images that include your data, because they'd be huge. However, combining proper data backups with Windows backups is great, and anyone can do it with a little guidance.

I will write about why I wiped my hard drive and what applications I installed on my image later.

Wednesday, August 13, 2008

The Idea Factory

There was a nice article in the Globe Magazine that I read tonight about startups in Kendall Square. Seems like there's a great place called the Cambridge Innovation Center (CIC) where Tim Rowe gives entrepreneurs a place to grow their company.

I love this idea simply because I love the idea of encouraging smart people to do smart things in the Boston area. Cambridge, home to MIT, has some very smart people with presumably great ideas. The CIC attempts to keep those people close to home, instead of in Silicon Valley.

I'd like to focus on Conduit Labs, the makers of LoudCrowd, a new type of social videogame centered around dance. At first glance, I must say, Conduit Labs really can't go wrong here: Guitar Hero has paved the way for social videogames entering the mainstream of "cool", and LoudCrowd is probably hoping to pick up where Dance Dance Revolution left off.

Unfortunately, this article exposes a fairly serious weakness in the Conduit team: usability testing. Here's one example:

"Conduit Chief Nabeel Hyatt stands over one of the LoudCrowd testers, Lise Caldara...[who says]
"I like the background. It's awesome," she says. But then she hesitates. "I don't know how to start," she says. "This looks cool. Very confusing, but . . . nice."
...
Hyatt prompts her. "Click for dance," he says."

Conduit Labs [See edit below] If you are in this situation, you have failed. Do not be swayed by the success of your product in these tests, because your tests are useless. You should never be lurking over your users while they test the program, and actually telling the users what to do is so fundamentally against the entire idea of the test that I'm amazed Hyatt didn't realize it.
It seems crystal clear to me that if you have to tell your users what to do, if you're confusing your users as to the entire point of the game- there's your usability test. Go back and start over.

Steve Krug is considered to a god of usability testing, so maybe picking up a copy of his book would do Conduit some good. I haven't read his book, but it looks absolutely great, and I plan to pick up a copy soon. The great Jeff Atwood of Coding Horror agrees about Steve.

In closing, Conduit Labs some people really need to re-examine their usability testing. I think they definitely have an idea worth pursuing, and it would be a shame to see it come out in a half-baked, confusing format. Hyatt is not going to visit each user's house and explain the functionality when the software releases, so it better be clearer than it was when the article was written. If they make their idea clearly presentable and it is as catchy as it seems, they will be successful. Good luck, guys.

EDIT:
Conduit comments that the article was embellished. See below.

PS:
Sorry for the lack of posts lately. I just reformatted and reinstalled (by choice, thankfully), so I've been setting up for the past few days, and that will continue for the rest of the week. I'll do a writeup of what I've discovered when I'm done.

Sunday, August 10, 2008

Quis custodiet ipsos custodes?

First, I want to mention that cops have extremely dangerous jobs, and have to deal with unruly people all day. I have no doubt that the nature of their job contributes to incidents like this recent horror show, and the absolute ridiculous outbreak of taser incidents lately. No doubt, I hope, the cops we see on internet videos are just the exception.

But the fact that their job is difficult and violent by nature does not at all excuse the many violations we have seen on the internet, and the many that go undocumented. Something must be done to reign in the power of the police. What can technology do to help this problem?

The main issue here is making those in power feel accountable. People should not be afraid of their governments; governments should be afraid of their people. Going back to the Latin title (Who will guard the guards?), Plato's solution was the noble lie: instill a false sense of superiority amongst the rulers, such that they believe it is their moral duty to rule the "lesser" population. They do not rule because they want to; they rule because it is right for them to do. He believed that if this false distinction between people was believed, society could exist peacefully.

At the risk of doubting a far smarter man, I doubt that placing the police above the civilians will work; in fact, I think it is precisely this false belief among some police that lead to abuses of power. So, what can technology do to help this problem?

To address the critical issue of accountability for the police, I take inspiration from the fact that it has already begun: the proliferation of video cameras and YouTube allows any percieved civil rights violation to be seen by millions. And my, how the greater internet loves to watch police screw up! On a positive note, I do recall this instance of Digg sending letters to this cop's supervisor and flooding his RateMyCop profile with positive comments. The guy did a legitimately good job (according to the short video), and was rewarded.

So, perhaps a RateMyCop style solution is the answer? I would like to think so, but I think an even more formal implementation is necessary. The internet is wonderful, but it is far too subject to the whims and mob mentality that can get a good man fired. RateMyCop and YouTube are good starts, but can't go much further than raising awareness.

I'm sure most cops will hate me for suggesting this, but I think a formal review board with random video audits of the police is necessary. One of the best features of American government is the system of checks and balances, and I just don't think we have the proper checks in place for the police. Of course, most officers would say it's not that they have something to hide, but they still do not support this invasion of the police procedure. This is an ironic argument, because it is exactly the argument of civilians against wiretapping and spying. I believe it is a strong argument for civilians (privacy comes first, and the Constitution is pretty important), but not for a government agency charged with protecting the people.

This audit would have to be careful not to interrupt police procedures- I do not want to reduce effectiveness of our already ineffective police force. Nonetheless, it is extremely important to start setting a precedent for our police: they should be accountable and afraid for their jobs. So, what do you think? How can we guard the guards?

Saturday, August 9, 2008

Working Efficiency

Here's an interesting article from the IGDA. It details the false promise of the long work week, which, while quite relevant to IGDA's topic of game development, crops up in almost every industry. This article ties in to an greater, central idea I hope to elucidate in the future- but for now, a quick summary.

IGDA claims that the 40 hour workweek is the standard for a reason: while a few bursts of 60 or 80 hour weeks raise productivity in the short term, they quickly result in less total productivity. The Work Less Institute is quite vehement that industries that exploit workers for no real purpose (since the productivity is lower than a normal work week) are ignoring the facts because of a conspiracy against non-profit knowledge. I'm not sure if I would go that far, but it is clear that some industries stick to their patterns of work, despite evidence to the contrary.


First, my experience. All else held constant (interest in the subject, other activities), I absolutely agree that there is a limit of the amount of "school time" I can perform in any given week. During a particularly busy week at school, I may have to stay up late a few nights in a row and not take many breaks, and it is very obvious that the quality and quantity of my work decreases. Of course, this is exacerbated by a lack of quality sleep, which may be an even more significant factor.

In general, I try to avoid these weeks of solid work and little sleep, because I have come to accept that I simply cannot be productive after a certain amount of work. Unfortunately, time crunches still happen, because I am certainly not perfect at planning and not procrastinating. I am even more serious about getting the proper amount of sleep: I will often simply quit a project when working late because I know that if I get the rest I need, I may have a better chance of completing the work later, even if I have to turn it in late. I do this most frequently when I study for tests, as I try to optimize towards the least amount of memorization necessary to do well. I often feel that people who stay up all night studying for a test actually work against themselves, because their recall will not be anywhere as good on the test day.

Clearly, the effectiveness of this depends on the understanding of the professor and your willingness to take a reduced grade. I feel strongly that the purpose of my time in college is twofold: to learn how to learn and to get the most knowledge I can about interesting things. Grades have very little to do with either of those objectives at this level, but they are unfortunately still a factor to leave my options open after college. Still, I try to balance my life and my grades to get the most out of my college experience, and I'm happy with how I've done so far.


Now, what about the rest of the world? Can it really be that Company X, forcing its workers into 80 hour weeks, can actually cut the hours to 40 and maintain output, or even increase it?
Personally, I think there are some areas where this is possible, and some where it isn't. In my limited experience developing software, I absolutely need the sharpest version of my mind to tackle hard problems, and usually when I work late, I end up having to re-write or work around the terrible code I've written. Considering the software industry's propensity to deliver late and over-budget, such a shift to lower hours should be considered.

I can think of two famous examples of long hour workers: lawyers and sweatshop labor. In the case of the lawyers, I think that some of their work is simliar to software development in that they may be better off with their full mental capacity rather than a few more hours worth of rote memorization. On the other hand, the intensity and monetary value of their job may require 80 hour work weeks, and perhaps the best lawyers are selected out of those who can withstand the long hours better.

What about sweatshops? Most of the jobs are repetitive and mindless, so perhaps mental acuity is not as important as simply plugging away at the job for the maximum amount of time. Of course, there comes a point where even a factory worker will not be able to produce quality examples often enough and the boss must let them rest. Unions exist partly to balance the abuse of long hours, but do they really work?



So, what do you think? Is it really possible to work less and produce more? What do we have to do to make this happen in the working world? Are unions the answer? Are there some industries exempt from the long hour paradox? What about industries that are especially vulnerable?

In any case, I strongly suggest that you read the article. It is long, but extremely well written and covers quite a lot of topics. Stay tuned for more on this train of thought.

Thursday, August 7, 2008

The downfall of Kuro5hin

Anyone remember Kuro5hin? I certainly didn't. I ran across this article about the downfall of K5, written in 2005.
One of the best things about reading old articles is that you know which predictions came true, as well as those that failed miserably. This article is perhaps even more revealing.

Kuro5hin tried a new model, where users voted on articles, to promote a better, more democratic selection of articles. However, they ran into some trouble:

"the focus of the site ended up not being about technology mainly because it is harder for people to write technology articles than write about everyday topics that are nearer and dearer to their hearts."

Sound familiar? The massively popular Digg attempted a similar revolution of news posting, and, I have to say, they seem to have succeeded where Kuro5hin failed. Digg is a classic example of a successful Web 2.0 company- started by a techie, the first version written by contract on the cheap, and now worth lots and lots of money.

Digg's algorithm is probably the reason it has done better than Kuro5hin. It has been refined many times, and has evolved from what was probably a very simplistic votes*time style algorithm to one that handles gaming relatively decently (depending on how you ask).

However, I have to draw some parallels between K5 and Digg. The most obvious is the quote above about technology news being diluted by "ordinary" news. Digg handled that by creating different sections for different posts, which is probably better than trying to fight it.
Nonetheless, many (including me) have grown weary of Digg's childish top page, which only occasionally has a nugget of interesting technology news. I find reddit's programming section orders of magnitude better than Digg nowadays.

So, let's assume Digg doesn't completely fall off the cliff in the next year or so (which won't happen, considering the huge momentum it has already found). What made it work better than K5? As I mentioned, the algorithm is better. In addition, it came out later, to a more experienced market of users.
What do you think?

Wednesday, August 6, 2008

A Humble Manifesto

Hello World!

Here's what you need to know about me, what I'm going to do with this blog, and what I want out of this blog.

I'm Chris Murphy. I'm a Computer Science major at the small, liberal arts school known as Bowdoin College in Brunswick, Maine. Bowdoin has a very small CS department, consisting of mostly shockingly good Robocup nerds and brilliant GIS folk.

I am neither. While my interests vary over time, they have always centered around computers. The course of this blog will describe my current interests.

Speaking of this blog...
In my mind, this blog is still a murky cloud; a cloud that may form into one of many ideas, or may float on as a confluence of my varied interests.
I figure that by admitting to the Internet (and myself) up front that this blog has no predestination, I may actually end up with something worth reading.

As I envision it right now, this blog will document my learning process. Although I'll try to stay focused on technology related items, who knows what I'll end up learning.


Now, what do I want out of this blog? I want more knowledge. I want to sharpen my writing skills, which have largely been neglected since high school [despite the best efforts of my liberal arts education...;)]. I want to display my work (in all subjects) and be shown why it's horribly wrong.
I don't have any aspirations of anyone ever reading this blog. But perhaps some day, I will write something that someone reads. And when that someone reads it, I hope they post a comment politely describing what's wrong with it.

Why do I want to do this? I love learning. I strongly believe that everything in the world has some facet of interest, and I hope to find the tastiest facets and share them with the world. Also, while I largely love the professors at Bowdoin, I think I need more than one person giving comments on my work, or guiding me on how to solve problems. With the help of the Internet, maybe this blog can provide that, and I can get better. As they say, evolve or die.


That's all for tonight, folks. See you when I learn something cool.