January 12th, 2009


Xing, impressions, not impressed

I just signed up at Xing.com, https://www.xing.com/profile/Mark_Atwood

First impressions, less than impressed. I can't see what it brings to the party that LinkedIn, Facebook, Biznik, FriendFeed, Plaxo, or Pathable don't already do better.

Let's start with such basic stuff as it's use/abuse of the "3rd party password" antipattern to get my GMail contacts. There is no excuse for that, use the Google Contacts API.

The process of adding contacts really should be run thru a UI review, watching and listening to untrained users operating it. It's pretty user-slow and clunky.

That the "My other profiles on the web" doesn't have LinkedIn, Facebook, Biznik, Plaxo, or FriendFeed as an option is anti-social and insulting to the users.

It doesn't seem to make any effort to pull or track date from any of the other "other profiles", either automatically or on demand, instead wanting me to fill in all my data again. Boring and wrong. Once again, making things harder for the users.

It's also not very fast.

There are many good things about it. It appears to be very multi-lingual and i18n aware (which explains why it's so popular in Europe), and has a rich set of display privacy options

Amused by useless messages

That I get on OkCupid a message from someone with one bad ugly picture at a match rating of 40% that says "Hi! I want to talk to you." has to be a joke of some sort. Delete.

That I get a 419 scam spam that offers me the opportunity to help loot the "UN Scam Victim Recompense Fund" is an even bigger joke. Delete.

Logging in Drizzle, Part 1

A feature of the MySQL server that is used a lot, and yet is a source of much user confusion, code complexity, and multiprocessor lock contention, is logging. Query logging, slow query logging, and the new 5.1 feature, "log to table".

I've removed most all of that stuff from Drizzle (and removed two or three sets of now-no-longer-necessary mutex locks in the process), and replaced it with hooks into a logging plugin subsystem, and have implemented two plugins for it. One logs to a file, and the other logs to syslog.

The output looks almost completely unlike the current MySQL logging. There are no hash-prefixed pseudocomments, for one thing. And there is no distinction between the query log and the slow query log. Queries get logged, and the amount of time each query takes gets logged with it. This subsumes the "micro-slow patch" that is spreading around in the MySQL legacy world.

The current format is pretty "programmer-centric", but concrete advice and patches are welcome.

snprintf(msgbuf, MAX_MSG_LEN,
"thread_id=%ld query_id=%ld"
" t_connect=%lld t_start=%lld t_lock=%lld"
" command=%.*s"
" rows_sent=%ld rows_examined=%u\n"
" db=\"%.*s\" query=\"%.*s\"\n",
(unsigned long) session->thread_id,
(unsigned long) session->query_id,
(unsigned long long)(t_mark - session->connect_utime),
(unsigned long long)(t_mark - session->start_utime),
(unsigned long long)(t_mark - session->utime_after_lock),
(unsigned long) session->sent_row_count,
(uint32_t) session->examined_row_count,
session->db_length, session->db,
session->query_length, session->query);

How to interpret this output, and how to turn on, control, and use logging, will be described in additional posts.