Fishpool

To content | To menu | To search

Tuesday 12 June 2007

Font rendering Mac OS X vs Windows vs Linux

A topic which I've run tests with before (long time before), apparently has come back with Apple's Safari for Windows release. Jeff Atwood finds Mac OS X fonts wonky - well, they're certainly soft. Apple has never been too keen on strong hinting, perhaps because it messes inter-glyph metrics in favor of contrast. Windows is wonky in its own way - ClearType has good contrast, but letter spacing is sometimes a bit annoying.

Just for kicks, here's what Fedora 7 with FreeType autohinting and subpixel rendering (equivalent of ClearType) looks like. This is just one of the modes, but the one I personally prefer:


Comparing at 200% rendering to Jeff's examples; Safari/Windows, IE7/Windows, and Firefox/Fedora

I guess it's up to everyone's preferences, but I think Fedora wins this one. Spacing isn't perfect here either (in particular "b est" looks a bit ugly), but overall, contrast is excellent and paragraph spacing is very close to what it would be without hinting.

Wednesday 23 May 2007

Fedora 7 nice step forward again

I installed Fedora 7 Test on my home PC a couple of weeks ago, and encouraged by its smoothness, and wanting a clean upgrade to OpenOffice.org 2.2 and Gnome 2.18, rolled it on my laptop, too. Pretty nice! Apart from those upgrades, I got:

These might seem like minor items, but all of them improve daily usability, and I much more prefer regular small improvements to huge changes, anyway. OpenOffice.org 2.2 actually is a relatively major upgrade, with support for dual screen mode in Impress (finally), and improvements in the already-good PDF export functionality.

Only two bugs that annoy me (and I'm easily annoyed), both new, but then again, many others went away:

Absolutely no problems doing a yum upgrade, but I had two things going for me, so y'all take your own chances: I've done this many times before, and I've used LVM-managed volumes for a long time. If you haven't, or don't, upgrade using Anaconda or risk not being able to boot afterwards.

Saturday 19 May 2007

Consumer Java - could it be true?

With all the fuss recently about Adobe's Apollo bringing Flash to the desktop, Microsoft's Silverlight bringing .NET to the browser, and Sun's JavaFX bringing scriptable Java to the desktop and mobile devices, I've had to give some thought to the question of what might be the role of these platforms in the future of rich Internet applications, and whether the time might be getting closer for us to reconsider using Director and Shockwave to develop the things we can't develop using AJAX. Lets just say I'm not going to jump on any one of these quite yet.

However, I'd missed one thing Sun apparently is finally working on, that made me rather sceptical of JavaFX's potential - there is a project going on for fixing the consumer usability of Java in a browser environment called Consumer JRE, which might even be released as an update to Java 6. Wow - that'd make me really happy just as a daily user of all kinds of desktop Java applications, let alone that I might actually count Java as a viable option for developing something for consumer deployment. Good luck, guys. I'll be watching you closely.

Tuesday 8 May 2007

What to do with OpenID...

OpenID is one of the technologies I've been coming across repeatedly in the past year or so, that very much feel like the right kind of response to things that are a constant ache in today's internet. In particular, it's a pain in the butt for a consumer to manage six thousand logins to individual services, and as a result, it's almost as much of a pain for a consumer service (like Habbo) to demand logins; no one really wants to create yet another. I'm pretty convinced that we don't really need to have a database full of passwords, and that we'd be better off without it.

What we need is a way to identify that whoever visited us before and wanted us to call her PrettyGirl87 last week is the same person who wants to be known by this name this week - and we need to know that because our other users might care about a thing like that. We also want to be able to reach the users later, so we'd like to know their email address, or some other means of communication.

Neither of these things actually requires us to ask her to come up with and remember Yet Another Password, if some other means of identifying the user existed. OpenID might be an answer, or at least part of one. So I'm one of many considering whether to support OpenID. I'm also thinking whether we should provide OpenID identity for those users who'd actually like to use Habbo to identify themselves (which would be wonderful for completely different kinds of reasons). But both of those questions really are quite clear: yes, we should. The difficult question is, should we do that instead of something else? Because that's the question that faces anything we might want to implement. And I haven't seen an argument convincing enough to put OpenID on the top of the pile yet. The demand probably isn't going to come from users - but what would be the thing to swing the balance?

Wednesday 2 May 2007

Good presentations on scaling websites

Peter Van Dijck has collected a bunch of good presentations about developing scalable websites to his blog. Good stuff there, Cal Henderson in particular is always worth a read. I really should sometime collect some of our own learnings about the topic, in particular regarding how scaling challenges change when you're dealing with lots of interactive users with real-time messaging. It certainly has entirely different bottlenecks compared to a typical web site - but the profile of a typical web site is migrating in that direction, too.

Thursday 29 March 2007

Flash to video

So, I have this situation where I have a relatively rich, configurable Flash animation player (not a video, not a preset animation) and I'd like to convert the output to an MPEG-4/FLV video stream. The commercial converters all look like they're designed for converting single animations, but I want this to scale WAY up to a few million converted videos. So, I figure -- why not try a GStreamer pipeline that decodes the Flash with Swfdec and encodes with ffmpeg?

Good idea in theory. In practice, my source material is a little bit too much for Swfdec to handle. Off to try to contact the developers ;) I'd be happy to hear about other practical approaches, too.

Friday 23 March 2007

Käsittämätöntä soopaa

Hesarissakin uutisoitiin tänään VTT:n julkaisemasta sosiaalisen median liiketoimintamalli-tutkimuksesta otsikoituna suurinpiirtein "internet-palveluilla ei ole liiketoimintamallia" (sori, en voi linkata, kun hs.fi ei löydä uutista). Täytyy todeta, että kirjoittajien periaatteessa erilaisesta näkemyksestä se on nimenomaan käsitys joka tuon raportin lukemalla saa.

Sori nyt vaan tutkijat, mutta analyysinne on aivan käsittämätöntä soopaa. Ai liiketoimintamallitko ovat todellanne mielestänne vain "tilauspalvelut", "mainokset" ja "myytävää"? Jäiköhän nyt jotain ehkä havaitsematta, vai ettekö esimerkiksi näe minkäänlaista eroa esim Ebayn, Amazonin ja Habbon liiketoimintamallien välillä? Ja älkää nyt kukaan edes yrittäkö ehdottaa etteikö joku näistä kolmesta olisi "sosiaalista mediaa".

Ja mikä liiketoiminnan suunnittelun kurssi jäi käymättä että tulee mieleen ehdottaa vaihtoehtoiseksi malliksi "maksa käyttäjille palkkaa sisällöstä"? Missä se liiketoiminta tuossa mallissa mahtaisi olla?

Huh, nollatutkimus jos mikä. Rahoittajana olisin melko vihainen. Lopettaakseni kuitenkin positiivisesti, löysin samalla myös TIEKE:n julkaiseman, Kari A. Hintikan kirjoittaman Web 2.0-johdatuksen, joka on merkittävästi parempi johdatus aiheeseen niille jotka johdatusta kaipaavat.

Thursday 18 January 2007

First thoughts regarding the MySQL Falcon storage engine

One of my DBA colleagues mentioned that MySQL has released the first alpha version of the Falcon storage engine, which is advertised to most efficiently utilise modern hardware to provide a high-performance scalable replacement for InnoDB, which MySQL naturally tries to reduce dependency of. 

Unfortunately, just based on reading the Falcon documentation, I must draw the conclusion that without extensive further development, it won't be usable for very large installations such as the ones we run for Habbo for a number of reasons. I'm usually much more positive about MySQL, it after all being technology that has enabled Habbo to grow more than 100% every year I've been working on it, but this is a disappointment.

It supports just one tablespace per database, and each tablespace stores all data in a single file. While the concurrency problems of single-file access can be eliminated with careful application of modern kernel, filesystem and disk subsystem technology, single file databases still suffer from major administration issues.

Since a database can't be extended by additional tablespaces and data migrated by the storage engine, you'd better trust your capacity to indefinitely increase available storage space under one filesystem or downtime can't ever become a problem for you. Don't even think about deploying Falcon without a high-end NAS device that supports many times your current storage requirements, reliable logical volume management and an extendable file system. A database is also limited by the filesystem's maximum file size, so make sure that won't be a problem either. I wouldn't recommend ext3 for Falcon.

You'll also need to make backups either via SQL dumping the entire database (not really feasible for daily routine) or by backing up a single file, so either your filesystem, LVM system or storage device must support snapshot backups. Scalability may still become an issue, so be sure that the approach you choose doesn't degrade performance as file size grows.

Just one thread writing to disk may at first blush sound like excellent performance maximisation technique, but it forces you to make a choice between reliability (since it applied to log writes too, transactions are committed to disk in a serialized fashion - no concurrency) and scalability ("commits" to ram cache and background disk flushes certainly will perform well and scale nicely, but what if there's a power failure?). And this is not even the road to highest possible performance - the highest-end disk subsystems will become CPU limited if only one thread will be able to send I/O requests.

With one table space comes one cache/buffer pair, so developers are either forced to split their data model to multiple logical databases or suffer under one unpartitionable system where one bad table scan by one part of the application wipes the buffers from underneath the entire application. A truly modern storage system permits the DBA to assign certain tables or indices to their own caches and buffer spaces and retain a single logical model for software developers. MySQL has never had this ability, and apparently Falcon won't bring it, either.

A more traditional DBA might also cringe at the statement "it is impossible to predict or calculate the disk storage space required for a specific dataset." Many, many complaints could be made about the alpha-release's other restrictions, but I'll give MySQL the chance to keep their promise to address them in forthcoming versions.

I don't really understand which of its features qualify it as technology that utilises modern computers to the best possible effect. Perhaps they're referring to it automatically compressing data on disk? Sure, that may be useful, but it may just as well become a bottleneck when single-row updates require entire pages to be recompressed. Just that feature alone doesn't impress me. It's not more easily administrated, nor does it (on paper at least) address this kind of performance issues. At best, it's an upgrade to MyISAM, but shouldn't be mistaken for a solution to high-performance transactional database requirements.

More on it once I've had a chance to do some practical experimentation (might be a while).

Update: It seems Peter Zaitzev has benchmarked Falcon against MySQL's other storage engines, verifying my suspicion that it doesn't scale properly. Do note that neither MyISAM nor InnoDB show ideal scaling performance either.

Tuesday 2 January 2007

Three predictions for 2007

In the fine tradition of educated guessing, I thought I'd try to preview what's going to happen, or not, in the Internet world over the next 12 months. Here goes...

Continuing the ten-year tradition of "mobile internet overtakes xxx" punditry that fails to materialize, mobile video and social networking services will not become mainstream in 2007. The mobile 1" experience combined with severely limited input mechanisms just won't replace larger-format mediums. Mobile does have a niche in short-format updates and will gain limited popularity as a snapshot pictures upload vehicle.

Social web technology continues to find popularity in corporate environments, with Wikis replacing traditional document management systems in more and more companies. Consumer-oriented social networking hits peak growth amongst fierce competition in a niche-sites vs mass media battle.

TV companies are forced to accept the fact that Internet video services are able to provide a more relevant experience to their viewers, but few are able to actually deliver a satisfying service. YouTube continues to encroach on their field, despite outcries of copyright violations. By end of the year, DVR's will be marketed by their capability of showing Internet video content on televisions in addition to recording broadcast stuff.

Update: whoa, it seems I was really, really late with my last prediction. Let me qualify that a bit -- I'm not personally going to be satisfied by things like an Apple HTPC able to download stuff from iTunes, Xbox 360 movie downloads from Microsoft, or other such walled-garden solutions. The Sony Bravia thing might be a tiny step closer to what I had in mind, but ultimately I expect someone to provide a box which is not locked to single-vendor content. Something like the Democrazy Player on a TV would fit the bill better. If the Venice Project ends up on a non-PC living room device, that'd be It.

Monday 4 December 2006

Smart uses for RSS

I've thought for quite a while that RSS is one of the most important, and often overlooked technologies around for building interesting services. Overlooked because it has potential for much more than just the currently-widespread blog-type syndication of (new) content.

I think there's an amazing potential in delivering all kinds of information to users via RSS feeds personalized to their individual profile - whether based on recommendations, locale, activities, or like this new service FeedCycle, by serializing access to previously  published stuff in a sequence that makes most sense to the recipient. Think "my pals say Galactica is really cool, but I missed its first season - so I'd like to watch it two episodes a week to catch up". Or, one of those continuing novella-based stories many magazines publish.

- page 2 of 7 -