And For Our Next Trick: Twuzzer.com

posted by luis

Twuzzer.com

Here’s another one-day app that Jason and I put together last Monday. It’s a Twitter/Google Maps mashup that uses the new search.twitter.com API that the recent Summize acquisition has made possible. The actual functionality was mostly Jason’s work; my contributions had more to do with interface and general design concept this time around. I’m particularly happy with the fail-whale massacre.

Syndeo has got another 3 apps currently in the pipeline as I write this and I’ve been musing recently about what’s changed, i.e., why have we suddenly been churning them out with such gusto. In the past two months we’ve released Highfiber, Infinitube, Twuzzer, and have significantly redesigned the Octales alpha. Within the next 30 days, we’ll have twice that number up and running. I had initial thoughts as to why it was happening, and I remember rejecting them initially because they seemed a little too convenient. But here they are anyway, marketing be damned.

I think it has a lot to do with MorphExchange. I first tried this Philippine-operated hosting platform in late March and recall being very skeptical about the offering. My main beef was that I had, over the past two years, been slowly improving my systems-administration skills and suddenly I was faced with an environment where those skills were essentially reduced to clicking “Restart Process.” Many, many hosting internals were obfuscated by MorphExchange in an effort to both simplify the hosting workflow and (I suppose) to protect their compute cloud from too much curious poking.

Over the past four months, a handful of interesting things have happened that changed my mind about the experience. The first was that the MEx service got better, obviously. They added rake tasks and scheduling, better logging, worked out a number of load-balancer issues, and polished up the user-interface significantly. The second was that I started getting into the idea of “deploy and forget,” i.e., you push your application to production and essentially know that they will run, unless your code was screwed up somehow.

In a way, “deploy and forget” is the only hosting methodology that would make sense for the kind of small apps that Syndeo likes building. Because we have so many of them, we’re unable to go through the hassle of setting up and maintaining new servers for each new product. When I built Infinitube two weeks ago, the single biggest time sink was building my server and Rails stack. The app itself took about 3 hours to write, another 3 hours to build the GUI, and nearly 2 hours just to deploy to a working server. I realize now that if I had deployed to MEx instead our other hosting provider, I would have saved myself a good 90 minutes, and quite a bit of grief. (I know that doesn’t sound like a lot of savings, but when you measure your development-cycles in hours instead of weeks, that’s a huge deal. 90 minutes is the difference between leaving the office on time, and leaving the office exhausted and pissed off at yourself.)

So when Jason and I built Twuzzer earlier this week, I was confident in the notion that it’d take about 5 minutes to register the domain name, configure the DNS and deploy to MorphExchange. Jason started building the app at 9:30am on Monday the 28th; I got involved about two hours later. By about 4pm we were entering the cleanup and polish stage, and by 5:50pm we started setting up the MEx account. Plenty of time to spare. Twuzzer.com became globally accessible later that evening, while I was busy getting smashed at a nearby beer garden.

Now, before I start to sound like a sock-puppet, I will temper this entry by saying that there are a number of areas that MEx could stand to improve. The deploy process needs more error-notices, for example, and I’m still unsure what MEx plans to do regarding SMTP. (C’mon guys, practically every virtual-hosting provider has outgoing-email, it’s just one of those basic features you throw in.) Part of the reason why I can make unreserved recommendations about them is because it fits our situation so well. I’m not running an internet banking application, or an e-commerce portal, or a biometrically-secured, multi-threaded arse-sniffing machine. Our apps are supposed to be small, modest and fun, and I’ll be damned if I pay more than a dollar a day for each one, yessirree!

Over the next couple of weeks, we should see a number of other mini-apps from our lab, very likely hosted on MorphExchange. We’ve got an MP3 search-and-play app, a make-the-world-a-better-place app and (I’m crossing my fingers with this one) the actual Labs site for showcasing all of these small treasures. See you in a bit.

The Eraserheads Project

posted by luis

Seemed like a good time to do this, seeing as both Highfiber.org and the Eraserheads are making mini-comebacks within 2 months of each other. (Ok, so I might be overstating Highfiber’s contribution to local pop culture a little.) Anyway, so I brought The Eraserheads Project back today, as a tribute to the band and hopefully as a way for people who have never listened to their music (and there are more of them born each day) to try it out.

Some notes here.  I guess it bears mentioning that the continued survival of this project depends greatly on financial and/or legal factors. We’ll see what happens.

New Web Toy: Infinitube.net

posted by luis

A couple of days ago, a friend and I were lamenting my lack of a proper television in my house. (Seeing as I have 3 laptops and a pretty large LCD monitor, it seemed like a  redundant appliance you know?) The more I thought about it though, the more I came to realize that having a TV around was useful just to have something else going on while you’re working. Obviously, when you’re building up momentum you don’t want to be bothered by anything, but for everyday stuff, it’s usually a good idea to have something to look at every now and again just to let your mind breathe.

I wasn’t of course, about to buy a television to fill this need. I don’t have the space and didn’t really want to add a cable tv bill on top of everything else I have to pay for every month. So, I built a web app instead.

Infinitube is probably the simplest thing I’ve ever thrown together; all it is is a front-end for the YouTube-G Ruby Gem, coupled with Youtube’s own Javascript API. I’m running a really barebones Rails application on PostgreSQL, with all of 2 plugins. Took about 8 hours or so from my first wireframe on Illustrator to the final production deploy. (It would have been even quicker if I didn’t have to clean out one of our old servers first so I’d actually have something to put this app on.) I briefly considered putting it on AppSpace, but for something that’s almost 100% personal use, I figured that $30/month was a bit much.

Still trying to figure out a couple of things, e.g.:

1) No fullscreen mode yet, which really sucks. You could arguably circumvent this just by using the operating-system zoom on Mac OS X, but you never know when I might need to use the site on a Windows machine. And the fact that I don’t know how to do this yet annoys/challenges me. (Mostly annoys.)

2) Eventually, I’ll need to add user-registration so we can attach some auto-complete functionality to the query field. That way, your previous keywords show up as you type. (At the moment, keywords are tied to session data, which is a bit fragile, but at least it keeps me from getting my search terms mixed up with anyone else’s.)

3) I actually lied about the *non-stop* part in “Non-stop Youtube broadcasts.” You’re only ever going to get about 50 videos in one run, unfortunately. (I figure I might as well come out and say that now, before anybody starts complaining.) Because I’m using YouTube-G instead of the full YouTube Ruby wrapper, I lost some flexibility here, in exchange for a big boost in productivity (YTG doesn’t require a developer key and has a one-page README, for instance). I’ll probably shift to the older brother in the near future, but for now, I’ve already getting quite a bit of functionality out of the younger gem.

4) Keyboard shortcuts would be nice, as it’s a little more convenient than clicking the actual buttons. This one should be really easy to do, although I have to figure out how to isolate the keystrokes from the query field. It’d be super cool to have the number keys mapped to the 10 most recent keywords a user entered; almost like channel-surfing! Super cool!

Anyway, so yeah. So it’s totally possible to build a halfway-decent, almost bug-free web application in about a full work-day’s time. (Of course, it probably helps if the whole thing is under 800 lines of code, but you know what I mean.)

The Dark Knight Movie Review

posted by luis

Dark Knight

[NO SPOILERS, don’t worry.]

So finally, The Dark Knight. Christopher Nolan’s followup to 2006’s Batman Begins is easily the most anticipated movie of the year, and early reviews have been unanimously positive (or as close to unanimous as is possible with this sort of movie). I’m gonna get the obvious bit out of the way first: Nobody is exaggerating when they say that Heath Ledger’s performance is jaw-droppingly good. His Joker is as creepy as Anthony Hopkins’ Hannibal Lecter, as slimey as Robert De Niro’s Max Cady, and as malevolent as Kevin Spacey’s John Doe. In that sense, The Dark Knight does take a lot of cues from the old guard: there are smatterings of The Silence of the Lambs and Se7en all over this movie.

Usually, I would rail at the unoriginal parts of any movie, but The Dark Knight’s influences are just that – influences. It pulls off many of its twists with a unique flair, much of it powered completely off of Legder’s showmanship.

My problem with this movie lay mostly in two things: the first act, and the third act. Specifically: I found the first act to be really irregular and disorganized, and the third act to be mostly unnecessary. Interestingly, my problems with the first act were mostly because of the existence of the third, i.e., we needed to set up so many characters and situations in order for the psycho-analytic/social commentary bits towards the end to make any sense. If he had instead trimmed all of that fat away and concentrated on the tension between the two main leads, I think he would have found that there was more than enough story material in there already. The question is why he decided to do it the way he did. I don’t profess to know the answer to that but of course I have a theory: Nolan was trying to make The Greatest Superhero Movie Ever.

Now, I appreciate that kind of ambition, and I’m sure that quite a few people would even agree that he had actually reached this lofty goal. I do personally think that he lost focus though, and tried to make the material do more than it was necessarily meant to, or even needed to. Nolan’s love for the Batman mythos has always had a lot to do with the depth of the title character’s psychosis – easy pickings for any serious film director. The 2005 Batman spent a lot of time mulling over the concept of fear, while this followup reflects on the dichotomy of order and chaos. I’ve noticed that Nolan likes to use a lot of repetition in his movies, both in dialogue (characters are constantly repeating key lines back to each other) and in characterization. In The Dark Knight, Batman and the Joker are portrayed as opposite sides of the coin, a duality that is then represented visually by Harvey Dent/Two-Face. Both of his previous films, Insomnia and The Prestige, spent a lot of time dealing with similar subject matter in a similar style, but sadly, DK is neither as complex as the former, or as creative as the latter.

So given that I mostly disliked both the first and third acts of the film, it may be hard to believe me when I say that I thought that Dark Knight was a really good movie, up there with Iron Man and Spider-Man II as one of my all-time favorites. That’s how good the second act was; it was lean and spry most of the way through, and idled just enough to allow the tension to build back up again. I’ll probably have to see it again one of these days to make up my mind, but at the moment, DK is at #3 on my personal list of best superhero movies ever made.

Eraserheads Reunion Concert Fantasy Set-List

posted by luis

By now the news is all over the Internet so I figure it’s time to start making predictions. (See here first if you live in a cave — with an internet connection — http://philmusic.com/main/content/view/165/1/)

To summarize:

It turns out that Marlboro’s plunking down approximately PhP10m in talent fees for the Eraserheads to do a single 45-minute set in the CCP open grounds at the end of August … which of course immediately set off alarms in my head. 45-minutes is barely enough to do 9 songs if they really rip through it. You’re definitely not going to hear the C-level tracks (like my personal favorite “Yoko”), and any jams are going to be pretty brief. So given that we’re only talking about 9 songs (maybe 10 if they do an encore), what do you think the set-list will look like? Here’re my thoughts:

1. “Huling El Bimbo”
Open strong with a really well-known (one would argue “overused”) classic. I’m ok with starting the concert off with this as there’s no way they can get away without doing it anyway, so it might as well be at the very beginning.

2. “Alapaap”
Another really overused classic. My fondest memory of this is when the boys played an extra long (15-minute?) jam during a big beauty pageant (was it Binibining Pilipinas 1996?). Ely was lip-syncing out of time on purpose.

3. “Torpedo” or “Overdrive”
I really like the Eraserheads’ elseworlds-version of Radiohead’s “Creep.” The more-likely choice is “Overdrive” though, coz that’s pretty much a must-sing.

4. “Magasin”
Possibly the best-written Eraserheads song ever; the punchline towards the end is second to none.

5. “Huwag Mo Nang Itanong”
My all-time favorite Eraserheads song. I still don’t quite know what this is about though.

6. “Superproxy”
Ely and Raimund stage a rap-off. In one alternate timeline, the concert will end with Ely suffering another heart-attack and Sandwich fans all shouting “SUGOD!” The eight Pupil fans in the audience look on, silently.

7. “Harana”
I love how this track came out of nowhere years after Cutterpillow and yet sounded like such a signature Eheads song. It’s likely that they won’t do this one, but I can always dream.

8. “With a Smile”
You know you can’t get away with not hearing this one again, right?

9. “Sembreak” or “Toyang”
These two songs are about equal in my mind. What we’re doing here is going back in time slowly to set the stage for the encore …

10. “Pare Ko”
I.E., the song that started it all. Crowd goes wild, lights go dim, Eraserheads cash their checks.

Original post: Eraserheads Reunion Concert Fantasy Set-List on Highfiber.org

Cloud Computing for Everyone

posted by luis

I was listening to a Supernova panel earlier featuring writer Nicholas Carr, where he shared a really interesting insight about how computing is becoming a utility in much the same way as electricity or water currently are. He compared the trend to electricity back in the early 1900’s, when every factory had to produce its own power in order to keep itself functioning. This was of course, back in the days before Alternating Current, and every large-scale industry had to be sitting beside a river if they were water- or steam-powered. Of course, when AC came along in the 1910’s, it became possible to centralize power-generation, such that all of these industries could simply plug in to a power-line and receive as much as electricity as it could pay for.

A similar trend is occuring now, and it’s happening at the computing level. Essentially, we are relying more and more on centralized computing, and less on what’s actually installed on our local machines. It’s happening with things like content-creation, remote storage, and media consumption. But we’re still fairly early on in the process, and in some ways it’s a lot like the early days of electricity as well. The centralization of power-generation is only as good as the distribution lines that deliver it, i.e., if there aren’t any lines to your house you’re essentially screwed. Similarly, the democratization of computing power is only as good as the pipe from the source to the parties requesting it.

The reason why we don’t have an online image editor of the same caliber as Photoshop, for example, is largely because the latency between requests would render the app practically unusable. But let’s say bandwidth and latency were such that it would be indistinguishable from the desktop (i.e., below 20-milliseconds, you know like ping times in Quake III), and let’s posit further that a browser-based Photoshop could give you a similar design experience. Suddenly, the notion of software as a package disappears; instead, our browser (although I may be stretching the definition of the term “browser” here) acts purely as a display for computing that’s occurring thousands of miles away from us. The actual software never has to touch our machine apart from a few cached assets. What we’re describing here is the purest form of the “thin client” concept.

Now, what’s interesting here is the question of why we aren’t at this stage yet. In that same Supernova panel, Chris Meyer pointed out that although computing power is doubling every 18 months (Moore’s Law), bandwidth doubles once every century (Grove’s Law). This notion was echoed by Eric Schmidt in the early 90’s, when he said, “When the network becomes as fast as the processor, the computer hollows out and spreads across the network.”

As businesses begin to incorporate this idea into their overall strategies, we start to see more and more of our lives being transposed from our local machines to some abstract place online. Google and Microsoft have their respective online office suites, Apple is pushing out the MobileMe service, and Amazon is trying to wedge itself underneath all of the smaller, independent offerings as a platform for utilitarian cloud computing. But all of these efforts are ultimately limited by bandwidth, and it makes one wonder how much longer we have to wait before we can get to Photoshop Online that doesn’t suck.

I also wonder how we know we’ll have reached that point. When our home connections reach 150Mbps (which is the theoretical throughput of the average SATA hard drive) and achieve a latency of less than 20ms? That’s fairly far off, it looks like. If SpeedTest.net is to be believed, for instance, the global average broadband connection speed looks to be about 2.8mbps down / 598kbps up (although admittedly, this data is almost completely skewed by the fact that no dial-up users ever measure their bandwidth at Speedtest). I think we could make an educated guess that the vast majority of the 1.4 billion people currently online are probably doing so on less than 128kbps, i.e., completely out-of-reach of the thin-client cloud-computing dream. Global average ping times meanwhile look to be close to 200ms.

Here’s the other side of the analysis though, keeping in mind our two eponymous laws (Moore’s and Grove’s). If computing power on a desktop doubles so quickly, and software becomes more and more complex, how will cloud software – which at the moment can only muster basic, stripped-down versions of their desktop siblings – keep up? When you take into account Wirth’s Law, things get even murkier: “Software gets slower faster than hardware gets faster.” Can cloud software get faster faster than desktop software gets faster?