Today I discovered that there's a new port of memcached for Windows! This one reflects memcached v1.2.4, which added a bunch of new features like multi-get, append/prepend, and check and set. This is a huge release even though it's in beta and is the first pass from the new maintainer. I am especially happy because I was considering putting in some time to do the port myself; I wasn't looking forward to it since I'd have to learn C++ and it'd take me awhile.
I also found the BeIT memcached client library, which purports to improve on Enyim. I haven't had a chance to try it out yet, but I like the embeddable, lightweight nature of its code. It supports a few commands that Enyim doesn't so I'm going to give it a try. Enyim had a couple quirks that we found and worked around so I'm always willing to find a more straightforward framework if possible. I don't understand the hashing issues enough to ascertain which is using the better-performing or more consistent algorithm so I don't have a preference on that front.
All in all, these were two very welcome developments. It's never been a better time to be a memcached fan in the .NET world!
Google recently announced its AppEngine initiative and I can't say I get who would want it. It strikes me as too inextricable from Google.
Amazon Web Services operates in a similar fashion but it is clearly serving as an infrastructure provider rather than a platform. While it'd be hard to migrate off of AWS if you ever chose to do that, it's not as if you're promoting Amazon by virtue of creating and running your application. At every turn, the AppEngine application uses Google products like Google Checkout and Google Accounts. Building a business so closely associated with the largest Internet company in the world strikes me as perilous.
AppEngine aspires to be a platform like Facebook has become. But it lacks the social aspects that make Facebook so attractive as an application platform. So, ultimately, I think AppEngine's main competitor is not Amazon, Facebook, or even Microsoft (which has its own cloud initiative in development) but Ning. Who's Ning? Exactly. I just don't see this market as compelling so I don't understand why Google's entered it.
I deployed my most recent project at work today. It's a Facebook application that allows Quick Blogcast customers to link their accounts to their Facebook profiles.
I know that bringing a blog into your Facebook profile is nothing new. There are many such applications out there right now that can do that. But I think this Quick Blogcast version is unique in that you can make it so that your friends and visitors never leave Facebook, even to comment! What's more, we leverage nearly all of the Facebook integration points. This allows the Quick Blogcast customer to publicize his or her blog to the fullest extent while still respecting the conventions and norms of the Facebook world. While that may not sound like much, it's been quite a learning experience for me.
For one thing, I had to master the Facebook API. Luckily, I only had to learn it secondhand because I had an excellent framework called Facebook.NET to lean on. After a month or so of experience, I even felt conversant enough to help others and supply patches. In so doing, I apparently really helped the developer of Thugz Passion, a game which I've grown to enjoy.
It was also a chance to get to know memcached better. I used the terrific Enyim.com Memcached framework to interact with a Win32 port of the service. I wish I knew enough C++ to move that project to the current version of the Linux original. I futilely check the danga email archives to see whether anyone's gotten impatient with progress and just did it on their own.
I was (and am) very impressed by memcached, which is an excellent (and free) distributed caching system. ASP.NET is top-notch at scaling but its caching mechanisms (namely, the object bags like Cache, Application, and Session) can easily become bottlenecks after enough usage is thrown at them. I think memcached offers a way out—it's certainly worked wonders in the Linux world.
I affectionately call this integration app Quick FaceBlogBookCast. It cracks me up every time; it's easily the most cumbersome portmanteau I've come across. (I can't believe I forgot the other Facebook app I released today: Domain Center for Facebook! It's a way to spontaneously generate domain name suggestions from the information contained on your Facebook profile. The algorithms right now are pretty coarse, but I plan to refine them each and every release until they're uncannily right some day.)
[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]
"… eudaimonia is the human entelechy." — Leonard Peikoff, Objectivism: The Philosophy of Ayn Rand, p. 349
I can vividly remember the first time I read those words back in 1991. I was still in high school and I immediately went to the dictionary to find out the meaning of the two words I didn't know. That phrase solidified my desire to study philosophy in college. (There wasn't enough courses that fit my schedule to get my bachelor's in philosophy, so I had to minor in it and major in history.)
Eudaimonia, Aristotle's idea of happiness or the good life derived through rational living, has informed my entire life since then. Ayn Rand's Objectivism is, I think, the perfect realization of his conception. Lately I've gotten it into my head that I need to write on the subject and bring their ideas into the self-improvement, self-help canon.
If you've read that genre to any degree, you'll know that it invariably takes emotion as a given, such that the goal of it is to feel better about yourself. It's almost as if the authors regard the subject of virtue and reason as irrelevant. Even the cognitive psychologists like Seligman and Beck emphasize the centrality of emotion, though they're immeasurably better because they understand that thought precedes emotion.
I'm working on my outline but I'm not going to get into it just in case it fizzles like so many of my grandly-started ideas. I'm really enamored of the central idea, which I think could be the start of something big. We'll see. I will, of course, keep this blog updated with any progress.
Longtime readers may already know that I am a big fan of JetBrains' ReSharper add-in for Visual Studio. I recommend it highly to any .NET developer, but especially to any of those who are interested in being more productive. You'd think that that'd be everyone, but I've found it not to be the case. Many developers I recommend the tool do don't want to learn a new tool, aren't particularly keyboard-enthusiastic, or mistakenly believe that ReSharper is superfluous. On that last point, I've stumbled upon a nice comparison chart showing that that is not the case.
There's overlap, to be sure, but in nearly every instance I've encountered ReSharper's implementation is more thorough and more thoughtful. It's worth every penny.
Today is the day of Earth Hour, where everyone is supposed to turn off their lights for an hour tonight in a pointless show of support for global warming. Global warming is currently under such an attack that, like deities in every religion, it must be constantly re-assured that it is foremost in everyone's mind. Also, don't look too closely at the tenets of the cult of climate change. I'll save the similarities between environmentalism and religion for another entry.
Google adopted a black theme for the occasion, though they had the courage to admit that it doesn't save an ounce of energy to do so. It's probably to promote "awareness" and demonstrate their environmentalist chops. Did they power down any of the hundreds of data centers they run in a show of solidarity? Of course not. It's still a business, and that sop would be expensive.
The thing that most bugs me about Earth Hour is that it celebrates darkness. The light bulb is perhaps the greatest invention ever and we're told that we need to turn it off in order to save the earth. The position is clearly us (our technological way of life) versus nature. It's Rousseau for the modern man.
If you think that Gore et al. don't really want to turn back the clock or rollback the economic progress, then consider his recent plea to reduce carbon dioxide emissions from the United States by 90% by 2050. 90%! In the best case, where we switch from coal to nuclear power and internal combustion engines to electric ones, I doubt that we could get down to 10% of our current emissions and the dislocations in trying would be absolutely astounding. Worst case, we'd have to just shut down.
All of this just leaves me speechless, but I mustn't avoid speaking out. I will most likely be alive in 2050 and I do not want to live a "nasty, brutish, and short" existence. If the global plan to turn Earth Hour into Earth Year succeeds, I'm afraid that my future will be exactly that.
[UPDATE (4/2/2008): Keith Lockitch puts it well: "But during Earth Hour we see the disturbing spectacle of people celebrating those lights going out—of people rejoicing at the sight of skyscrapers going dark. If anything, what Earth Hour represents is the renunciation of civilization."]
Over at Found on the Web, I've made my first April Fool's joke. As you might expect, it's Rick-Roll related.
Here's the Javascript I used:
<script type="text/javascript" language="javascript">
var links = document.getElementsByTagName("a");
for (var i=0; i < links.length; i++)
{
links[i].onclick = function()
{
location.href="http://www.youtube.com/watch?v=oHg5SJYRHA0";return false;
};
}
</script>
It gets every hyperlink on the page, loops over them, and adds an onclick event handler that performs the redirect.
Tonight I attended a lecture on "Algorithmic Architecture" by Kostas Terzidis at Taliesin West. Terzidis, a Harvard professor and former software engineer, is interested in the intersection of architecture and technology—mainly the role that computers play in automating much of the design aspects of architecture.
He spent much of his lecture philosophizing about this crossroads we find ourselves approaching. In contradictory fashion, he opined that there is nothing new, only recycled ideas and forgotten truths, while arguing that computers have enabled us to realize designs that were impossible just decades ago. That increase reliance on computer power has divorced us from the practice of architecture while bubbling over the inevitable supplanting of the creative process. Honestly, it wasn't terribly different from some of the incoherent rhapsodies of Frank Lloyd Wright.
The idea of automating the creative process intrigued me greatly though. At first, I was troubled by the mechanization of design. On the surface, it seems to obviate the individualistic architect, the creator of greatness. But upon pondering it more, I think that there's no reason why the stamp of the architect has to go away.
The future of architecture as programming is one where a program is written that takes all the variables and constraints of the architectural problem and devises thousands of buildings that solve it. Site topography, materials, budget, number of rooms, central plant, and so on are just inputs to be considered. While this seemingly diminishes the role of the architect, I think it could easily maintain his part.
Perhaps each programmer qua architect would codify his aesthetic sense in different ways or assign different weights to the various considerations. In so doing, the designs his program generates might look all of a same piece and his particular theme shines through. His job, then, becomes one of practiced selection of the best design combination.
It's going to be awhile before such a transformation of the trade takes place due to the massive increase in computing power necessary to effect it. But it seems inevitable and inexorable.
With credit to Diana Hsieh for the inspiration, here's some quick reviews of movies I've recently watched:
I'll try to make the next installment considerably shorter. If you're a Netflix customer and want to be my friend, I'm game.
I went to Netflix just now to rate a movie I watched. On the front page, the image at right greeted me.
You may or may not know, but Netflix is offering a $1 million prize for a 10% improvement in its recommendation algorithm. I honestly don't know if the recommendation at right is what they're trying to improve but if it is then 10% better shouldn't be too difficult.
I mean, because I liked a documentary about capital punishment, a 80s puppet children's show, and my children liked an insipid phonics teaching program they think that I'd really dig a pseudo-martial arts exercise video. Sorry, but WTF?!
They just completed a big ol' upgrade but I think they missed a spot. Yeah, over there. See that recommendation engine-sized dark spot over there. There you go, you've found it.