Skip navigation.

The Stripy Strudel's Journal

All Absentees Assume Formation

,

In a boring lecture, only three students are in the classroom. While the professor turns to the blackboard to write a long formula, five students slip away. The professor turns to the class and says disappointedly: “If two latecomers walk in, there'll be nobody left!”

This joke was funny the first time I heard it. But why is it funny, indeed? Common sense tells us that it's impossible that there are −2 students in a room. But the professor was somehow not surprised; to him −2 easily adds up with two latecomers and yields “nobody”. The problem is that we have no idea what negative two students look like and what properties they have, but it's natural for us to assume that they annihilate with positive two students.

Where does our “common sense” regarding to quantities come from? Natural numbers have properties (such as the possibility to increase any natural number by one) defined by a set of axioms, but why are these axioms exactly what they are? Natural numbers are called natural for the very reason that human invented, or, to be precise, apprehended them directly from the properties of the environment. One doesn't have to know math even at elementary school level to perceive empirically certain properties of natural numbers, for example, that 2 > 1.

For a long time, negative numbers were thought to not exist (and even zero took time to come into use), but as soon as at the dawn of Common era, such an extension to the set of numbers was first mentioned. It's not that somebody actually saw −2 students, but in bookkeeping of debts negative amounts of money or goods turned out to be quite conceivable. But if negative two swords, oxen or even slaves are possible, negative two students shouldn't seem something incomprehensible either.

The setting in the joke still seems absurd because nobody has ever witnessed a pair of positive one and negative one students being produced from nothing. But the very existence of a negative one student, or, to put it that way, lack of a student, is not absurd. One can even imagine that whole galaxies exist with negative quantities of stars, planets, universities and students. They probably call their half of the numeber axes “positive” and theorize about our existence, or, to be precise, the lack of us. (This is not the same as antimatter, despite some similarity. Antimatter exists in positive quantities, but this is rather about negative amounts of matter.)

By the way, while we're telling existential jokes, physicists shamelessly use negative quantities of electrons. A lack of electron, or −1 electron, is called an electron hole and used in analysis of semiconductors on par with an electron. Unfortunately, the number of studies of this kind in other areas of physics is negative with a large absolute value.

See also: Is logic empirical?

По-русски: Всех отсутствующих построить в одну шеренгу

Thoughtful Fantasizing Club

, , ,

In an imaginary, ideal and pitch abstract world live people who don't give a damn about being trapped in our thought experiment: they're people, too, and try to get their human fun from life. Just like us, they meet, make friends, mix and give each other simple pleasures. And just like in our world, they have social obstacles, having grown up in somewhat different cultures and then gotten mixed together. That's why what's natural for some is unthinkable for others.

For example, some people love massage of the head so much that they're willing to spend hours scratching, stroking and massaging each other's heads — if they find someone like them. But here's the catch: for some others touching the scalp is a taboo that can't even be mentioned. Because nobody knows whether it's disgusting or delightful for someone, you can't really offer this to a person: what if they get offended? So two head massage lovers don't dare to offer it to each other because each one of them is afraid that it's unacceptable for the other. Same thing with nose-rubbing, round dances, riding horses together, pat-a-cake and numerous other ways in which our speculative poor things bring enjoyment to each other.

Here is the problem the society is facing: invent a way for fans of various pleasure to recognize each other. It seems trivial: why not introduce conventional signs? For example, a red T-shirt could mean a round dance devotee. But it's not that easy: a round dance lover wouldn't like those for whom round dances are a taboo to know about their devotion. Hey, there are places where they won't let you in if you wear that! Therefore, a signaling system has to be more selective.

Let us call the whole range of ways to please each other acceptable for a person their easiness, as in “he's an easy (uncomplicated) person”, “she's easy to be with”. An easiness is a mathematical set. Let us designate the easiness of a person X as EX. Then the requirement to a signaling system should be stated as follows: for every person Y, conventional signs worn by Y should suffice for X to derive EXEY. Consequently, for each of his devotions X will only find out whether it's shared by Y, but he won't find out about those of Y's passions that X himself dislikes. He'll find out what he can what he shouldn't try with Y, but won't know anything shocking or destructive to their friendship.

A solution to this problem can be a variety of signs with limited knowledge of them. For every questionable pastime A enthusiasts establish a club, society or some other kind of community for A-doers. To become a member, one needs to do A with any current member. For lovers of A it's not a problem but rather a pleasure, but those for whom A is unacceptable won't even think about joining the community. Of course, the lists of community members are kept in secret. Because the world is ideal, everyone knows about every such community, and can and will join all the relevant ones. In a closed meeting, members of the A-doers society decide on a sign by which fans of A will recognize each other. It can be anything: an item of clothing, an accessory, a feature of speech or gait, a code word or gesture. Different communities pick essentially different signs, so that it's impossible to tell by the look of how many communities a person is a member. This way, everybody only knows the signs of belonging to those communities one is oneself a member of, and when X and Y meet, they instantly see what their common easiness, the intersection of EX and EY, is, and within that intersection they feel at ease with each other.

The problem and the solution have been found in brainstorming together with Wheezle, for which I'm thankful to her. This way, we have determined by experiment that joint brainstorming is included in our common easiness. And if you, my dear readers, also love head massage — welcome to the club!

По-русски: Общество любителей фантазировать с умным видом

What About the TV?

,

Problem statement: What should be done to the TV so that reasonable, smart people watch it, those who now mostly say “I've thrown that box away a long time ago”? Restriction: the idea has to be implementable with today's TV, not with a hypothetical future entertainment station connected to the Internet.

At iCamp 2008, Irina Serbina on behalf of the TeleMost group of companies has run a contest for the best solution to this problem (original problem statement). I teamed up with Katya who represented a humanitarian project “Sun Children” at iCamp. Without really running for the prize (which would require limiting ourselves to only realistic ideas), we started brainstorming.

As we thought, it wasn't about the quality of the material. It's always possible to find out what the audience likes to see, and show even niche broadcasts. Incidentally, most ideas submitted to the contest were about one or another way of finding out what the viewers like and letting them influence the programming. However, the problem is that nowadays a significant part of the population is not willing to allocate much time to TV and adjust their schedule to match the TV broadcasts. It's not just because of modern time management, but also simply due to the information space being saturated so much that someone not watching a TV programme isn't missing the greatest entertainment. A modern viewer of the type we're talking about is willing to allocate maybe 15 minutes a day to TV, and that's when they want it, not when some particular broadcast is scheduled. If we learn to use this kind of time slot, we can have their attention for 15 minutes a day, otherwise they won't watch anything at all. Of course, having a viewer like that involved so much that they participate in programming through some kind of voting is out of question.

Nevertheless, some people with such attitude towards TV still watch particular channels such as National Geographic or Animal Planet. What's special about these is that they always broadcast essentially the same. If one likes watching animals, they can turn on Animal Planet and have their deal of creatures when they like it, in the time slot they have. This means that TV channels should be like this. Not that they should be about nature; some would allocate 15 minutes a day to business news, some to car races. There should be channels about car races, cats, science news and stock reports. Hundreds of niche channels should exist, one per every topic that's currently represented by one or two items in the TV schedule. It's not a problem if every such channel only broadcasts half an hour of material over an over and only change it once a day or even several days: such viewers don't watch TV for long periods anyway. With today's development in cable and satellite broadcasting, hundreds of channels are a reality, and frequencies are no more precious. A modern household cable decoder uses three digits for channel numbers.

The strategy of having a multitude of highly specialized channels will allow to show highly relevant, targeted ads without causing repulsion, while short length of a typical broadcast (5 to 15 minutes) will make it unnecessary to insert commercials within a programme. Small businesses will have the opportunity to run one or two channels with only a little highly specialized material in their areas of expertise and have some ad revenue next to large TV companies owning some 50–100 channels.

The approach to TV viewing will change. Instead of TV schedules, we'll have channel guides (updated once every several weeks due to frequent channel launches and retirements), because it's the channel's format that determines what they broadcast, and whenever you watch it, it's going to be what you expect. A viewing session will begin by choosing a channel, either a favorite or a new one to try out, and will usually include several channel switches. A viewer will make their own TV schedule: a little sports news, a little sketch comedy, a little ice dancing — similar to the way we make our own blog reading repertoire using LiveJournal friends feed or various aggregators. Possibly, improved TV sets appear, as well software for computers with TV tuners, that build a kind of aggregation feed automatically, based on an “Add this channel to my repertoire” feature. Maybe also counters of some sort emerge for measuring the popularity of channels.

Instead of trying to guess what the viewer would like to see, hundreds of channels will give them everything conceivable and let them choose. The Internet consists of numerous websites, and everyone chooses for themselves if they like to read Wikipedia or 4chan. Attempts to give the user all they need on one ideal portal, on the other hand, have failed.

The described strategy doesn't exclude traditional TV channels with complex schedules alongside highly specialized ones. If you're willing to watch a TV programme for 40 minutes, know when it begins and try to finish your chores before that time, the traditional channels are for you. But if you watch nothing but National Geographic or Animal Planet, or don't have a TV at all, but do however watch clips on YouTube on the topic you like, when you feel like it, then you might also like choosing among specialized TV channels independent of the time of day.

The Russian version of this entry (see link below) features a poll. I have included English translations in the poll and encourage all readers to participate. You'll need to register a free LiveJournal account to vote.

UPDATE: A story about the contest on the TeleMost website.

По-русски: Что сделать с телевизором?

A Brief Classification of Realities

,

Under one of the possible interpretations of existence, every fiction is somebody's reality. Each time a thought crosses your mind that it would be good if that nice girl looked your way, you create a reality where exactly that happens. That reality has both past and future, and it's inhabited by people with real consciousness who have no idea that their existence is caused by someone from another world.

But if a reality spawned by someone's imagination is as existentially complete as the “real” one, how can you tell in what kind of universe you live? For those reading my blog in alternative worlds, here are some tips; though they won't give a definite answer, in many cases they help rule out improbable options. So what isn't your reality?

  • If your speech doesn't rhyme, you're not a hero of a poem.
  • If you have no horse, you're not in a western.
  • If you say something funny and don't hear any laughter, it's not a sitcom.
  • If there is crime, poverty, corruption in your country, you're not in pre-election promises.
  • If you have genitals, you're not in a children's book.
  • If you can see anybody who isn't sexually attractive, you're not in someone's erotic fantasy.
  • If you have at least one pimple, you're not in a commercial.
  • If your mouth takes intermediate positions between completely open and completely closed when you speak, you're not an anime character.
  • If neither you nor your relatives are famous, you're most likely not in a newspaper hoax.
  • If you work at least sometimes, you're hardly a character in a Latin American TV series.
  • If your or your friends' names don't begin with the first three or four letters of the alphabet, you're not in a cryptography book.
  • If there are people with the same first name around you, it's quite unlikely that you are a character in fiction or cinema at all.
По-русски: Краткий определитель реальностей

Barest Necessity

, , ,

It's well known that while the population of the planet grows, the total IQ stays the same. This applies to Internet users, too. As the number of users grows, the average intelligence plummets, and the software has to adapt. Let's continue the trend into the future and imagine what the browser will be like in, say, 2030. Increase this if you're optimistic, decrease if you're pessimistic.

(Close) (Back) Flickr: art (Reload) // Flickr loves you // (Google | lolcatz (103 000)) (Flickr) (LiveJournal | bradfitz) (Gmail | 14) (Opera Software) (eBay) (facebook) (YouTube)

After numerous improvements aimed at achieving user-friendliness, the browser has become as simple as it can be. It has no menus (neither main nor context), no toolbars with many buttons, no sidebars, no status bar, no dialog windows with settings. All of this was too complex for most users anyway, and scared the poor average Joe away from computers. The future browser will hardly be do a tenth of what today's browsers can do, but it will finally be usable by everyone. Speaking about visual appearance, shadows and rounded corners will still be in fashion. Thanks to the lack of any text in the interface, the browser doesn't need translation.

A browser ships with the operating system, an operating system ships with the computer. A regular user has no reason to change any of these, so the only choice among competing products that he makes is when buying a computer. This choice determines both the operating system and the browser. The browser doesn't even have a name because it's not a separately marketed product. The browser window lacks a title bar because nobody cares about the name of the program. The only button pertaining to the window itself is the red close button, and even that one looks superfluous. The window always has standard size, and web pages are usually designed for that size. Saving of pages and images as well as opening of local files is accomplished by dragging between the browser and the file manager, and printing is done by dragging to the printer.

At the top of the window is a universal field that combines an address bar, a security indicator, a window title bar and a search field. The URL is technical information uninteresting to the user; they only care on what website and what page they are. The website name is automatically verified through its certificate. The only security indication is the color of this bar: green means OK, red means problem. The user can't be expected to know about SSL or domain names, and judging whether the web page is safe enough has to be the browser's job. When it's unsafe, the main working area turns red as well because it's not easy to draw the user's attention. When the bar is clicked, it becomes white and empty, and the user can type in it. The text is always looked up in the search engine (the one with which the browser vendor has made an agreement). If an eccentric user types a URL (where would he get one in the first place?), it will work, too.

To the left of the universal field is the Back button. Its size makes it easy to find. To the right there's a button that changes its function. Usually it's Reload, but during loading it turns into a Stop button (red “No entry” sign), and while typing in the bar it's Go (green right arrow). There's no progress indicator. Instead, while the page is loading, the incomplete document isn't rendered, and the main area displays a “loading” animation instead. It's better to not render incomplete documents because their strange behavior confuses users. Fortunately, thanks to future technologies, loading will rarely take long. There are no scrollbars, either; to scroll, one grabs any part of the page that isn't a link and drags. To find text within the current page, it's enough to start typing.

The bottom part of the window contains eight slots replacing both tabs and bookmarks. Technically they're closer to tabs: each of the eight slots is like a separate browser window with its own navigation history. Clicking a slot activates it, dragging reorders, and dragging a link to an inactive slot opens the link in that slot. The active slot is marked with a contour as well as with the arrow-like shape of the main area. There are always eight slots, you can't add or remove one. A regular user doesn't need more than eight, and the controls for adding, removing and scrolling them would add unnecessary complexity. On the first start, the slots are filled with recommended popular websites, and on subsequent starts they keep their content as well as navigation history. This way, they also replace bookmarks: you can simply keep a frequently visited website in one of the slots.

For the future user, pictures are so much better than text, that's why the slots display website logos. For older websites, heuristics will be used to detect where the logo is on the page, while modern sites will be able to take advantage of the new API. The API will allow the page to tell the browser what exactly should be shown in the slot, and even update that dynamically. In the figure, Google shows the search text and the number of hits, LiveJournal shows the name of the user whose journal is open, and Gmail shows the number of unread messages; the latter keeps updating even in an inactive slot.

The split percent users who aren't satisfied with this functionality will be part of a community going further and further away from the mass market. They will have their own browsers and operating systems. Some of those who develop web services for the mass market will be parts of that community, but most webmasters will use rapid visual development tools close in spirit to the “folk's” browser.

The Russian version of this entry (see link below) features a poll. I have included English translations in the poll and encourage all readers to participate. You'll need to register a free LiveJournal account to vote.

По-русски: Минимум необходимого

Hammering Screws with Wrenches

,

The development of information technologies sometimes looks like the eternal fight between Good and Reason. Whatever great technical solutions people invent, others always come up with creative ways to abuse them. I tried to compile a list of ten things surrounding today's regular computer user that are often misused, often to the harm of the user. The criterion was that the misuse should be so widespread that the very usefulness of the particular technology is questioned, and software authors develop technical means to restrict or disable its use. As it's a hit parade, I'll start from the end.

10. <meta name="keywords">. This HTML element was intended to list the keywords for the web page to help search engines find pages relevant to given keywords. Of course, some webmasters were so eager to advertise their sites, “helped” so much that a search for a popular keyword would bring you anything but what you were looking for. Since 1998, search engines started ignoring <meta name="keywords">. The last search engine still honoring the keywords finally gave up on them in 2002.

9. Quoting in e-mail. Quoting fragments of an e-mail when replying to it helps the reader match particular statements in the original message with replies to them. Because an e-mail application doesn't know which parts of the message the user is going to reply, it has no other choice but to begin with quoting the entire message and let the user remove unwanted parts. Those users who don't adhere to selective quoting as means of providing context, as well as those who don't know how to use it, leave the entire quotation intact. As a result, correspondence between two such users is an ever-growing chain containing all the messages they've previously sent each other. Some modern e-mail applications implement automatic hiding of quotations.

8. Windows desktop. The desktop was conceived as a place where the user can temporarily store documents and other files being worked on, shortcuts to often-used applications and other frequently used items. And that's what happens, but every other application somehow thinks it will (or should) be used often, and therefore it deserves a shortcut on the user's desktop. This kind of rubbish gets mixed with the really useful items, turning the desktop into a mess. One version of Windows introduced a new feature: Desktop cleanup wizard that tries to guess what on the desktop the user needs and what is actually rubbish.

7. Notification area of Windows taskbar. This area, often incorrectly referred to as system tray, is a good place for running programs to display their realtime status because it's always visible. Today's typical Windows user has about ten icons there and doesn't know what most of them are for. Those small applets do anything (their author wants): preload “their” application for quick launch, notify about updates, show ads — except for actually showing any kind of realtime status. In Windows XP, Microsoft implemented a solution as brilliant as treating appendicitis with painkillers: they hide the icons the user doesn't want to see instead of providing an easy way to identify and remove the offending rubbishware.

6. Automatic startup on Windows logon. Some programs, such as a keyboard layout switcher, really make sense to start automatically, but the possibility for a program to put itself into the automatic startup list is really appreciated by authors of adware, spyware and other evil programs. To make it worse, there are several such lists, and a typical user doesn't even know about most of them. Plenty of programs exist for cleaning those up. Surprising is the inaction of Microsoft who, despite their increased attention to security in Windows Vista, still allow programs to get comfortable in a startup list without the user knowing.

5. Word processing software. These applications were invented to make preparation of documents with prevailing text and no special requirements for typography easier than it is with desktop publishing programs. For many modern users, “word processor” has become synonymous with “text editor”, and the complex, heavy formats of word processors are now widely used to store, and, even worse, transfer any text at all. An extreme case is an empty e-mail message with a Microsoft Word file attached. Many mailing list servers automatically delete such messages or strip these attachments to avoid annoying the subscribers and wasting bandwidth. Here one can also mention using spreadsheets to keep and transfer simple lists without any calculations.

4. HTML e-mail. Emphasizing important parts of a message, marking up headers and creating hyperlinks are really useful features. I'd love to have them if only they didn't come bundled with the usability disaster of HTML in e-mail. Authors of e-mail software who implement HTML message composition seem to think that the point of HTML is that the user can specify the color, font and background for his e-mail. Instead of logical markup describing the structure of a message we got means of decoration so much loved by teenagers and advertisers but so much annoying for everyone else. To make it worse, images loaded by HTML messages from remove servers are often used by spammers to track who actually opens their e-mails. Though the idea was that the plaintext alternative would only be used by old e-mail clients that don't support HTML, all those clients which do still have an option to use the plaintext version instead of HTML.

3. Browser detection. All web browsers introduce themselves to servers, so that those can detect what browser the user has and serve an appropriately “optimized” version. I don't know where webmasters got that idea, but many of them decided that, since they “support” a particular set of browsers, everybody else should simply be denied access: apparently, no web page at all is better than a web page that possibly doesn't work. There is a number of ways to detect the browser, some of which are based on particular distinctive features to check for. All modern browsers can spoof themselves for more popular ones to avoid being denied service. Even the current market leader isn't an exception: during the first episode of the browser wars, they had to make Internet Explorer identify as “Mozilla 4.0 (compatible; MSIE …)”, and that's what it still does after ten years.

2. Pop-up web pages. Opening a web page in a pop-up browser window can be useful when viewing enlarged images in a photo gallery, online help on using a web service or a shopping cart. Yet the most popular use of pop-up windows is to display in-your-face advertisement. Most modern browsers either come with a built-in pop-up blocker or have an add-on for that purpose. These pop-up blockers have to be smart enough to guess which pop-ups are legitimate and which are advertising rubbish.

1. E-mail. E-mail, one of the most important today's communication means, is plagued by the most severe technology abuse problem. The volume of spam is estimated to be 85–90% of all e-mail transferred in the world. The total losses from spam, including lost productivity, wasted technical resources and measures for dealing with spam is an order of hundreds of billions of dollars per year, while the costs for spammers are laughable. Technical means for dealing with spam are diverse, but none of them is able to solve the problem completely. Spam makes the practice of publishing your e-mail address as a means of communication questionable. In fear of robots harvesting e-mail addresses from public web pages, many users avoid publishing their addresses on open message boards or mangle them, for example by replacing @ with “at”.

По-русски: Забивание шурупов гаечными ключами

iSocket

, ,

Some people ask me why I dislike Apple when they make good things, nice and comfortable, which “just work”.

In order for things to work (and especially “just work”) with other things, there are standards. All electrical appliances have plugs of the same shape, and that's why they can be plugged into any socket of the same standard. You don't need a Siemens socket to plug a Siemens hoover. Anyone can make a socket into which a Siemens hoover can be plugged. Any hoover can be plugged into the same socket. The owner of the apartment chooses the electric power supplier or even produces their own power. A Siemens hoover will still work in a new apartment after moving because the sockets there are the same. Even Eskimos who live in igloo and herd penguins have sockets into which a Siemens hoover can be plugged.

An Apple hoover can only be plugged into an Apple socket. There is no publicly available schematic for Apple sockets. Chinese manufacturers have disassembled a sample and started making sockets into which Apple hoovers can be plugged, but using such sockets voids the warranty on your hoover. Not every hoover can be plugged into an Apple socket. Electric power in Apple sockets is supplied by Apple's partners and is more expensive than on the free market. Apple sockets cannot be found in every apartment, but I must admit that Apple builds beautiful apartments. Apple sockets are never found in igloo because Apple has no interest in that market. Nobody knows what the plugs of the next generation Apple hoovers will look like, and whether they can be plugged into Chinese sockets.

EU: please investigate // Nei til nye stikkontakter
© Martin Bekkelund, 2008.

This is a picture from the photo-report about the demonstration in Oslo against accepting the OOXML format pushed by Microsoft as an ISO standard. A banner can be seen in the picture: «Nei til nye stikkontakter» («No to new sockets»). On the right, with a megaphone in his hands, is Håkon Wium Lie, CTO of Opera Software and the inventor of the CSS technology. To him I'm grateful for the idea of the plug-and-socket analogy which I somewhat developed here.

By the way, here is an article in the Norwegian newspaper VG where the bottom picture captures yours truly taking part in the demonstration.

UPDATE: No, it's not a Siemens advertisement. I just needed some placeholder.

UPDATE: For the sake of justice I must admit I've got no complaint against Apple's browser department. Thanks to these guys for their decent and fair competition, for active participation in the web standardization process and for active cooperation with fellow browser makers on security issues.

По-русски: iРозетка

Business Household Tips

,

The web is full of tips for job candidates on how to write a decent resumé, how to behave in an interview and so on. On the other hand, there's a clear lack of advice for employers looking for good candidates. Here I'm making up for this lack basing on my recent experience from dealing with HR departments of various companies.

  • Healthy competition never harms business. It's only better if two of your HR managers make a go at the same candidate independently of each other.
  • Big companies often hire a staffing agency, and the biggest ones might want to hire several to help each other.
  • A conveyor is the best form of labor management. The better you manage to divide the hiring process into elementary operations and assign them to different people, the more candidates you'll be able to put through the production line in a unit of time.
  • There's no point in storing of the information you can always get from the candidate. Ask them for their full name, address and telephone number every time you need these.
  • Everybody wants to work for you, though not everyone realizes it yet. If you look for prospective candidates and approach them, always ask them to send you a copy of the CV you've found on their personal website, and inquire about why they want to work for your company.
  • Never miss a chance to approach an employee of your competitor. In the end, it's them, not you, who are bound with those non-compete clauses.
  • If you're in USA and arranging a phone interview with a European, write something like 03/04 12pm PST. Everyone knows that the day comes after the month, and that PST stands for Pacific Standard Time.
  • Engineers' work time is too valuable to have them conduct phone interviews. It's enough if an engineer prepares a list of questions with correct answers for the HR employees.
  • Always include a “tricky question” in your phone interviews. Collections of such questions you can easily find on the web.
  • If your teams have fixed interview schedules, assign candidates to teams basing on which interview comes next.
  • If possible, invite a European candidate to your American office, and the other way round.
  • Write an ultimate, ideal letter to a candidate and use it in all cases. Provide for all possibilities ranging from accepting a student for summer practice to enticing a superstar from a competitor. Start with “Dear Sir (Madam)”.
  • Ultimately, replace all your human HR managers with robots. Machines never eat, sleep or make mistakes, and some are even able to reproduce without going on maternity leave.

По-русски: Хозяйке предприятия на заметку

A Rant on Friendliness

,

Once there lived a software application that didn't aspire to the mass market and was quite happy with half a percent of permanent users. Those were also rather happy with the application; most of them had been using it since very old versions and developed their own approaches, habits and comfortable customizations. Many of them liked that the application was different from its competitors, and that some of its workflows are unique and unparalleled. But even if the competitors implemented all the same workflows and features, such a user would hardly make a switch because fine customization of an alternative application to one's long-fostered habits to achieve the same level of comfort is a lot of work and not always fully possible.

Then, at some point, the vendor of the application is no more satisfied with the loyal but small user base and wonders: our product is better than the competition in almost all respects, and yet we have less than a percent users! Why? The vendor starts researching and analyzing, and it turns out that most users of the competing products think that this application is too hard to use and configure, and in general designed for a technical person rather than a regular user.

Oops, says the vendor. We've never had it in mind to design for some kind of technical people! How come our application scares the users? We've been only working on functionality so far, it's time to work on our user interface. Our application must be user-friendly! Friendly to the regular user, that is, to the one who up to now has been using the competing products, being scared by ours. And because those who managed to attract the users obviously have user-friendly interface, we should learn from our competitors.

An unusually long time passes between the releases, and finally a permanent user who has been loyal to the application since, say, version 2.0 for MS-DOS, and who is pretty sure that he's the damn regular user, installs a the new version, say, X (that's 10.0 to the new trend). Here is what he finds:

  • Menus, toolbars and keyboard shortcuts are organized in the same way as the competitors have it, including their traditional but illogical peculiarities such as putting “Preferences” in the “Edit” menu.
  • Features unused by 80% users have been moved away to “Advanced”, “Special settings” and “Extra tools”. Especially so for fine-tuning options. The problem is that for every such option, the 20% who use it are different, and in fact, most users need at least one of the relatively unpopular features.
  • Features unused by 99% users have been dropped.
  • Toolbar buttons surviving the purge have grown in size and got text labels, hoping to be noticed.
  • The application started thinking for the user and offering various suggestions, tips and auto-configuration. In severe cases it makes the application seriously slow. It's especially relevant when the user knows perfectly what he means but can't finish typing because the pop-up suggestions get in the way or the application is busy computing them.
  • Wizards with one or two items on each step have replaced dialog windows with all those items at once.
  • There are new features, too, but they are quite strange, don't fit the general spirit and break the design principles of the application. They clearly look like the Professional User Interface Design has been finally applied.
  • New features have sonorous names that tell nothing about what they do, such as EasySnap for aligning objects on a grid or QuickLink for uploading files into a mobile phone. Telling the users honestly what it is would scare them away, so everything should rather be quick and easy, no stress.
  • New features have functional limitations without technical justification. For example, only up to ten user-defined folders: the research shows that the notorious 80% will never need more, while ten fits in the allocated space on the screen without scrolling.
  • Error messages have become as informative as “Some error has occurred”. Of course, 80% of the users have never understood the technical details that the error messages used to contain, but when such a user follows the advise to “consult the system administrator” and calls a friend from the remaining 20%, that guy can only advise: “Try changing some option”.
  • Features for integration with other products or web services aren't implemented as generic mechanisms that could be specialized for any favorite product of yours, but are rather made specifically for the most popular product in its category, which is used, according to statistics, by… well, you know. For example, instead of the ability to use a webmail service for sending messages you get the ability to use GMail for that.
  • The application offers periodically to upgrade itself and sometimes even downloads new releases automatically and installs them, bypassing the system-wide upgrade mechanism (in those operating systems that have one). At least now there's one application for Linux easy enough to upgrade — usually everything is so hard there that it's strange that people even survive.

Of course, this is a degenerated, absurd case. All of this hardly ever happens at once, and the very process of making the interface user-friendly is often distributed over several releases of the application.

I don't mean any single application. I remember this happening with different applications and to different degrees. I'm not going to provoke flame wars by naming any examples. I don't know whether this has ever helped vendors win some “regular users” from the competitors, but those who had long been loyal to the application definitely got reasons to try an alternative when the favorite application isn't what it used to be anymore. Every time, having found myself as one of such users, I felt offended by the vendor claiming the revamped interface to be user-friendly. If that's friendly to the user, than who am I?

По-русски: Ворчание о дружественности

<meta name="keywords" content="future, technology, abuse">

,

What can you do when a vaguely familiar melody has taken over your head and threatens to not leave you alone until you recall where you heard it? You can try your friends and colleagues — it works sometimes. Doesn't help me, though: few of my current colleagues have heard, for example, the “Yeralash” TV show theme which I happened to remember today. But wouldn't it be cool if, say, Google indexed all the music published on the web and implemented searching among it! The user sings a fragment of a tune into the microphone, and the search engine finds melodies containing similar parts.

Theoretically, it's quite possible, though I doubt it would be commercially justified today. However, human is an ingenious creature, though this ingenuity doesn't always work for the mankind. There isn't a single technological achievement which man wouldn't find a way to abuse! Developers of the e-mail protocols didn't foresee spam, developers of HTTP didn't think of phishing (fraud using fake pages looking like banking websites). Some time ago, using meta keywords to find relevant web pages looked like a reasonable idea. With our present experience in the modern web, it's not that hard to imagine how the new type of search would be abused.

The simplest and mildest abuse would be recording and publishing advertisement songs to popular melodies. Such ads can easily be targeted, for example, Britney Spears' music could be used to target teenagers. A more aggressive approach: a commercial medley matching several different queries. An extreme case would be search spam, nonsensical sound files without a general musical structure, containing sequences of notes similar to those found in hundreds of popular songs; the only purpose of search spam is to redirect the user to the advertised website, often a fraudulent one, regardless of what they were searching for.

Of course, it's possible to devise technical measures against abuse, new ways to abuse against those technical measures, and so on. Given the modern pace of IT development, this scenario looks likely and usual. Typical sci-fi literature often misses out this important aspect of future technologies. It's hard to imagine holographic TV without annoying commercials, a “global data bank” (Internet, that is) without “search engine optimization” (it's a modern politically correct term for purposeful distortion of search results in favor of your web resources), and a future e-mail without spam. But I'm also sure that future will bring us conceptually new methods of abuse, impossible with the current technologies. We'll see.

По-русски: <meta name="keywords" content="технологии, будущее, злоупотребление">

Are you interested in working at the den of the enemy?

Here is what I found in my inbox today. That's right, I've got e-mails from HR departments of Yahoo! a Microsoft within less than half a day.

Darlene Tietgens | Software Developer Position at Yahoo! - Santa Clara, CA | Today 00:10:36 | 13 KB // Claudia Closmann (Search Wizards) | Career Opportunities with Microsoft's MCDC in Canada | Today 11:17:14 | 127 KB | Image

The one from Yahoo! was very short: they were just asking if I'm theoretically interested in working at their office in California, and for some reason asked me to send them my CV in Word format. Heh, good start: requiring me to use an expensive proprietary product which isn't even made for my OS, already during negotiation. Microsoft sent me a looong letter with a badly formatted plaintext version describing in a hardcore PR language how great it is to work in their Canada office, with a link to a video clip about it that only works on Windows or Mac. The message was essentially the same: whether I'm in principle interested in working for the villains.

Paper pin-down standIt's time for me to get myself a piece of stationery like this for pinning down offers from companies I hate. I'm currently missing letters from Apple and Adobe for a complete collection.

Nevertheless, my attitude towards the giants who impede the industry doesn't preclude me from flying for interviews to the aforementioned countries for their expense and getting my tourist fun out of it. If it's not too hard to get the visas, that's what I'm going to do.

Some of my colleagues think that I should use offers from other companies to get a better salary at my current job, but here's the catch: if you're going to use a job offer in salary negotiations, you've got to be ready to pack up and leave. But the truth is, I'd never work for Yahoo! or, even worse, Microsoft. And even some other company, at least at this time, would have a hard time convincing me to leave the city I'm in love with.

I will only leave Opera Software when I realize that there is a job that I'd rather be doing than this one. And a boilerplate e-mail from some HR department will hardly be a reason for that.

По-русски: Интересует ли Вас работа в логове врага?

Cultural Exchange Between Doomed Civilizations

You can mend a broken cup, straighten a car body and even rebuild a demolished building, but you cannot change the past. Cannot remove an awkward moment so that nobody remembers it, cannot make it as if a mistake you've made has never happened, cannot take back what you said carelessly. But it's the impossible that is the most desired! Along with eternal life, telepathy and teleportation, the topic of time travel is a fertile field for sci-fi writers for more than a century. The modern science doesn't rule out the possibility of one-way travel to the future, but is it that interesting? The most fruitful are those models of time travel that allow going to the past (or returning from the future) and thus spawn causality paradoxes. Some authors fondly ignore the arising contradictions, others build mystical and humorous effects upon them, and yet others construct complex models of the world to resolve the paradoxes.

One such model that allows for travel into the past has recently come to my mind. I haven't found any implementations of it in literature and am so far pretending to authorship. However, it's likely that someone had this idea before me; if it reminds you of some literary work, please comment.

On some planet there happened to arise life. In absence of competition, primitive organisms multiplied, adapted to various environment conditions, evolved into better developed species and finally gave rise to an intelligent being, for unambiguity let's say to human. Little by little, intelligent organisms built a civilization; empires grew, matured and collapsed; ages passed of stone, iron, gunpowder, electricity and atom. Sadly, the technological progress hadn't changed the man's essence, and the science was a slave of warfare in the stone age as well as in the time of atom. After a hundred generations of people who held the nuclear buttons, the hundred and first gave in to the primitive cruel chieftain sitting inside and unleashed the ultimate fatal war that destroys everything living on the planet, from human to amoeba.

The planet became unsuitable for life for billions of years, but numerous times the half-lives of the radioactive nuclei had passed, and the conditions on the surface became favorable for conception of life. Once again from a primitive organism to a humanoid, once again from a savage to a nuclear physicist, once again a fatal button, a world war and death of everything living. This happened several times, with inconceivable gaps of many billions of years between. Every evidence of a former civilization vanished in the abyss of time, and each time the mankind was unaware that there had been intelligent life on the planet before.

Of course, not only nuclear weapons could human minds produce. In its prosperity, each civilization gave many different fruits: developed medicine, computers, great works of art. Among many scientists, there always were those who invented something similar to the achievements of the former civilization because great minds think alike. Each time, by trial and error humans found electricity, radio, aircraft, microprocessor and… time machine. This machine worked according to the Novikov self-consistency principle: it was physically impossible to use it for such a travel that would generate a causality paradox. Because a travel into the past would allow an individual to affect oneself or one's ancestors and thus contradict the present, the machine couldn't perform such a travel. You couldn't go back a year, a hundred years, or a hundred centuries because of the physical limitations of the Universe, not on the designer's whim.

However, those who experimented with the time machine could easily find that it was quite possible to go into the very remote past, billions of years ago. This way, every civilization discovered the others that lived before. In a similar manner, it was possible to travel into the age of a future civilization and come back (but not before the time of departure) without generating a paradox. The possiblity of travel between the ages was determined by the fact that each civilization was doomed to collapse, and by changing something in a previous age, the traveller wouldn't change anything in one's own. Time travel gradually became usual, just like normal travel, and governments even had to pass laws to limit immigration from the past and the future. Cultural exchange between the former and later ages only further increased the similarity of historical processes and secured the same inevitable end.

The stability of this model is based on the postulate of inevitable convergence of macroscopic history to a predetermined outcome. If you like, the gloomy plot can be given a romantic development: in some age, a man is born whom the time machine cannot send into the past, and the reader realizes that this man is “the One”. He is predestined to bring ideas that will finally avert the imminent death. This is why the time machine cannot send him into a former age: otherwise the previous civilization would have survived until the present and generate a paradox. After numerous reincarnations, the new mankind finally finds a spark of hope for a better future.

По-русски: Культурный обмен между обречёнными цивилизациями

First in English

With this blog post, I'm officially starting to eat our own dogfood by using My Opera. Generally, I like it, though I'd prefer LiveJournal's HTML subset over self-invented markup. The only thing that bothers me is that my blog is going to have the word Opera in the URL, and I don't like to endorse a product with my personal blog, even though I'm making it.

I've had a blog in Russian for a long time, and it shall remain as my primary journal for Russian-speaking readers. This blog at My Opera will mostly contain English translations of selected entries from my main blog, and probably also some local stuff which isn't ineresting to my friends in Russia.

I'll start with translating some of the older posts, from 2004 on. Those are the ones I consider worth reading, but the older an entry, the more the chances are that I don't hold to these opinions that much anymore. Please also take care when interpreting words like “now” and “recently” in these oldies. The original entry and its translation will always link to each other.

UPDATE: I've cleared the backlog of older entries to translate now. Newer entries will follow above this one.

Theory of Immensity

, ,

Primitive people who couldn't count beyond two or three, called any greater number “many”. Even though modern first-grade pupils operate numbers up to a hundred, and an adult understands what a billion is, human's ability for direct perception of quantities hasn't improved in a qualitative sense. We have ten fingers on our hands, fifty matches in a box, a hundred centimeters in a meter (both units are comparable to the sizes of body parts and therefore are available for direct perception). Starting with about a thousand, it becomes problematic to compare a number to something familiar. Your screen probably has several millions of pixels, each of which an acute-visioned person can discern. This seems like the biggest order for a number that can be directly matched against the environment. Because even secondary school education allows one to operate on numbers of greater orders, our perception lags behind the abilities of abstract thinking. Values that are orders of magnitude greater than the perception threshold feel immense.

Even though 1 000 000 000 < 1 000 000 001, the increase of one doesn't “make a difference”, and both numbers feel equally immense. However, both of them are more immense than a million. Basing on these intuitive assessments, one can say that the immensity of a number is a measure of psychological perception of its magnitude. In a similar manner to the other sensations (brightness, volume, smell or taste intensity), immensity is measured on a non-linear scale where every next equal interval corresponds to a bigger difference in input. The scale should also have a saturation threshold after which no increase of input can increase the psychological evaluation.

It would be naïve to assume that the sensation of immensity, just like vision or hearing, follows the logarithmic Weber–Fechner law. However, 10103 is hardly as much more immense than 10100 as a million is more immense than a thousand. To make as significant a leap from 10100 as the leap between a thousand and a million, one would need a value like 10200. After that, the leaps become even more drastic: to give a “worthy increase” to 1010100, it takes something like 101010100. It seems that, with even increase of immensity, the numbers have to grow faster than any arithmetic function comprehensible to the subject.

I suppose that the feeling of immensity is related to description of a method to obtain a given value from numbers below the perception threshold. For example, a billion is a thousand of thousands of thousands, 264 is 2 doubled 64 times. The more qualitatively different steps it takes to reach the goal, the more immense is the number. For example, squaring a a number is a step, and squaring a number an immense number of times is two steps (“square a number” and “repeat the last step many times”). In this regard, the Graham's number is particularly interesting: it is so big that it requires a special notation to transcribe. To reach from non-immense numbers to the Graham's number g64, it takes five qualitative transitions. The immensity of this number seems to approach the saturation threshold, and even though one could continue along the lines of gg64, it's practically impossible to increase the sense of immensity compared to the Graham's number. However, the range of perceived immensities probably depends on the subject's mathematical grounding. A fourth grade pupil's saturation threshold is hardly above two or three steps, while Ronald Graham can probably appreciate numbers even more immense than g64.

See also:
The original entry in Russian features a poll: How immense are these numbers? It is possible to vote in the poll after logging in to LiveJournal; registration of LiveJournal accounts is free.

Please assess how immense these numbers are. It's your psychological sensation that is important, not the encyclopedic knowledge of the magnitudes. The left end of the immensity scale corresponds to “modest” numbers like a million, while the right end is for numbers so inconceivably big that you cannot imagine numbers that feel significantly bigger.

The number of atoms in the Universe (1…6)

The number of possible chess games without repeating positions (1…6)

The number of cells in all living organisms on Earth (1…6)

The number of people ever born (1…6)

The number of possible texts the length of “War and Peace” (1…6)

The number of seconds having elapsed since the Big Bang (1…6)

Please don't vote if you haven't read all of the above.

По-русски: Теория громадности

Programmers are from Mars, Users are from Venus

, ,

From all the features of my PDA, I only use two; all the others have turned out to be useless or unusable. Firstly, I read books with Haali Reader; secondly, I use the to-do list, but only to keep the shopping list for the supermarket.

The look of this to-do list is trivial: there is a list with a square to the left of each line; the square can contain a check mark. This simple application also has a menu where I should point out two items:

  • Active tasks
  • Completed tasks
Obviously, tasks are subdivided into active and complete. Initially, I can see both kinds in the list. If I pick “Active tasks” in the menu, I'll only see the active tasks, and when I open the menu next time, there will be a check mark to the left of the “Active tasks” item. So I can only see active tasks (I've enabled this mode a year ago and have already forgotten what I did to get there), and now I want to see all the tasks. Question: what should I pick in the menu?

Here is how I think: “Right now I can only see active tasks, and the ‘Active tasks’ menu item is checked. I cannot see any completed tasks, and the ‘Completed tasks’ item is unchecked. It seems like the categories of tasks currently shown have check marks in the menu. In addition to the active tasks that I already see, I also want to see the completed tasks, so I need the ‘Completed tasks’ menu item to have a check mark. Usually, when I want a check mark to appear for a menu item, I have to click the item.” Of course, I make a decision like this rather intuitively, but it is actually backed by reasoning like this.

After considering this for a second, I pick “Completed tasks” in the menu, and what I get is… the list of only the completed tasks! After that, the “Completed tasks” menu item has a check mark, but the “Active tasks” item hasn't. At a second attempt, I realize that, in order to see all the tasks, I have to remove the check mark from the menu item that has it, which returns the system to the “normal” state (as opposed to the “special” modes where only active or only completed tasks are shown).

Of course, I'm long used to such behavior of this application, but I've never understood it and have rather memorized the “irregularity”, just like I had to remember that the marks for cold and hot water in my bathroom are switched. Every time I use the tap, I routinely recall, “The wrong way!” and tilt it to the side marked with red to get cold water. Similarly, every time I use the menu in the to-do list application, I recall that it works “the wrong way”.

Earlier, when I encountered such interface solutions working “the wrong way”, I thought them to be bugs or design mistakes. However, mistakes of this kind are quite common and are often similar to each other, fitting in a pattern. Moreover, such solutions are often found in applications and devices that non-technical users usually describe as simple, intuitive, easy and convenient to use. It seems like there are two approaches to interface between a human and a machine, and maybe even two systems of thinking. I might not have chosen the best names for them, and someone might have already described and studied them, but nevertheless I'll try to provide brief descriptions.

Object-oriented approach
This approach is often found in technical experts, especially programmers. The approach is centered around the notion of an object (such as a document or the system as whole). An object can be in one of a multitude of states, and it transitions from one state to another under influence of various factors, including user actions. In order to control the object, it's important to know its current state, that's why this approach great attention is paid to informativeness of the interface, that is, to its ability to inform the user about the current states of objects. The problem the user is facing is perceived as the difference between the current and the desired states of the system, and is solved by applying the inputs necessary to get the system into the desired state. To solve a problem successfully, one has to understand the structure of the system, its possible states and the transitions between them, that's why the object-oriented approach favors documentation that describes concepts, principles and the overall system organization.
Procedure-oriented approach
This approach is prevalent in people who aren't technical experts. The approach is centered around the notion of a task. In order for a problem to be solved, it has to match one of the tasks that the application or device is designed for (ideally), or at least to be possible to break up into a sequence of such tasks. The problem is solved by applying the inputs that get the system to produce the desired result. That's why the procedure-oriented approach favors documentation that provides step-by-step instructions for solving typical problems. Because the critical part is knowing what input is necessary to perform a task, attention is paid to discoverability of these inputs (toolbars, context hints).
It's hard for me to write about the procedure-oriented approach because it's not how I think, and everything that's made that way feels unnatural to me. The conclusions I'm making are based not on my personal experience from using this approach but rather on the analysis of the systems following it.

I'm surprised not by the very existence of two different approaches, but rather by the gap between them that is so wide that people following one of them can't even project the thoughts of those following the other approach onto themselves. The existence of these two approaches answers a lot of questions:

  • Why cannot programmers design a good interface for non-programmers?
  • Why do televisions and videotape recorders have such “stupid” menus that an experienced programmer often cannot configure them without the manual?
  • Why are the “easy to use” image processing applications (that often come along on a CD with a scanner or a digital camera) unusable?
  • Why don't you have to press “Enter” on a doorbell after entering a one-, two-, or three-digit apartment number?
  • Why do home appliances so often have those (annoying to many programmers) automatic transitions from one state to another after a delay?
  • Why cannot many people master programming?
On the other hand, new questions arise:

  • Is the bias towards one of the two approaches inborn or is it rather acquired with upbringing?
  • Can a person following one of the approaches learn to use the other one?
  • Does schooling affect the choice of approach?
  • Does the object-oriented approach determine the choice in favor of a technical occupation, or is it the other way round?
The original entry in Russian features a poll: Object-oriented vs. procedure-oriented approach. It is possible to vote in the poll after logging in to LiveJournal; registration of LiveJournal accounts is free.

Which of the approaches better describes your way of thinking?
  • Object-oriented approach.
  • Procedure-oriented approach.
  • A third approach not described here (please comment).
  • The subdivision into the two approaches is fundamentally flawed (please comment).
Please don't vote if you haven't read all of the above. Also don't vote and accept my apologies if you regard asking the question inappropriate.

UPDATE: I have to agree with kalinka_malinka. This entry is an example of how to run knowingly non-representative surveys.

UPDATE: Another interesting aspect of the problem (in Russian).

По-русски: Все программисты с Марса, все пользователи с Венеры

Serving Those who Serve the People

, , ,

Some work just for money, others achieve immediate satisfaction from doing the job, and for others still it's important that their work is of use to someone. Isn't it nice to know that a person becomes a little more happy, content and healthy from what you do for them? It's easy to feel something like this when you work as a hairdresser: a man comes shaggy-haired and leaves with a trendy haircut, saying thank you to you as he looks in the mirror. It gets harder if you repair hairdressing equipment. A man wouldn't have his haircut without this work as well, but he doesn't experience it directly.

There seem to be different kinds of services: some of them are rendered to a person directly, and some are only indirect. For a more detailed classification of services by this principle let's consider the following set of rules.

  1. Services rendered to a person directly are first order services.
  2. Services rendered to subjects rendering nth order services are services of order n+1.
  3. Production of goods is comparable to rendering of services. For example, baking bread is rendering a first order services.
  4. Performing work as an employee is considered rendering a service to the employer if the nature of the service is substantially different from what the employer (the enterprise) renders to its consumers. For example, an employed hairdresser renders a first order service, but a packer at a confectionery renders a second order service to the enterprise because this service (packing) is different from the service rendered by the enterprise to its consumers (supply of finished confectionery articles).
  5. Reselling of goods or services without introducing a qualitative change in their nature doesn't increase the order of service.
I work for SWsoft, Inc, a company that makes web hosting automation software. Here is how I analyze the order of my service:

  1. When browsing a website, an internet user consumes first order services from the content author. (Of course, there are specialized websites for those who render specific services of various orders, but our web hosting automation software are not specifically tailored for hosting of such websites, so this fact doesn't increase the order of the service.)
  2. The author uses a web hoster's service to host the website. This is a second order service. The end user mentioned above doesn't experience this service directly.
  3. The web hoster routinely uses the automation software made by our company. Even though sometimes content authors use it as well, it's targeted at those who sell web hosting services, and contains specialized tools for this. Therefore, the web hoster consumes a third order service by purchasing our software.
  4. Finally, I personally render a fourth order service to the company by working as a software architect. My output is not finished software, it's substantially different from what the company offers to the consumers, so my services are of the fourth order.
This concludes the chain because there aren't any special goods or services targeted at software architects for web hosting automation products. Even though there are products targeted at software architects in general (such as Rational software), they aren't specific to architects in this particular branch and therefore have a lower order.

The higher the order of services, the narrower the specialization of labor. Higher orders become possible only with overall advancement of the industry characterized by increased branching of trades. I'm not sure if it's for good or bad, but I'm sure that there wasn't anything like fourth order services a couple hundred years ago. High order services make the service circulation chain longer. For example, in a small 19th century town the shoemaker would fix the barber's shoes, and the barber would shave the shoemaker's beard. The chain was two persons long. The distance could be bigger between some other professions, but not a lot. It's much harder now to trace the circulation of services between a web hosting automation software architect and a lawyer in an auditing company.

Back to the original topic: the opportunity for satisfaction from realizing that your work is useful quickly diminishes with the growth of the order of services. Starting with something like the third order, it's nearly impossible, so those who render such services have to look out for other ways of getting satisfaction. For example, to me the work itself is interesting as an abstract task that I'm constantly solving.

The original entry in Russian features a poll: Your work. It is possible to vote in the poll after logging in to LiveJournal; registration of LiveJournal accounts is free.

What kind of work do you do? Examples: fixing televisions, writing articles for a financial magazine, driving a subway train.

What order are the services you render? (1…6)

What is the primary source of the satisfaction the work brings you?
  • Knowing that I'm doing a useful job.
  • The very process of working.
  • Knowledge, experience, or physical form I gain.
  • Communication with colleagues, partners, clients.
  • Money.
  • My work doesn't bring me satisfaction.
Please don't vote if you haven't read all of the above. It's also interesting if you trace your service chain in a comment like I traced mine.

UPDATE: The average service order according to the poll participants is suspiciously close to π.

По-русски: Трудиться на благо тех, кто трудится на благо народа

Factors for Reproduction of Social Viruses

, ,

Note: This has been initially posted as a comment in a discussion about a recent epidemic of a social virus about a little girl needing blood for transfusion. The fake message has been started by a LiveJournal user, and contained a plea to forward it to as many people as possible.

During the recent epidemic, I've got the message saying that someone needs B group blood dozens of times, and the shocking thing about it was that some of the people I got it from were:

  1. Smart people, and I've got no doubt about it. I can warrant that some of the people whom I got the message from are smart, I've been studying together with them and I know them rather well. They are capable of complex mental activity both at work and in private life (so that it's not “common idiocy” when a professional outside of his workplace is helpless and naïve like a child).
  2. People we haven't talked with for quite a while. If those people decided to send the message to me, it means they were sending it to everyone in the contact list, and maybe even outside the contact list.
The most scaring is that the first and the second groups have non-empty intersection.

A little analysis.

None of the forwarders tried to change the text or at least add something to it like “Do you think it's true? What if it is?” to express their degree of trust for this information. Does it mean everyone trusted it for 100%? Of course not. Maybe the hoax got them convinced for 60%, and they decided to forward it. But forwarding or not forwarding is discrete, it's either 0 or 100%. This way, 60% is rounded up to 100%, so we end up with stable reproduction of the worm. If every forwarder expressed their degree of trust, after three or four hops the information would “fade out” and turn into a tale that nobody is going to believe. It's this “rounding” that ensures the reproduction of the worm: the forwarded message looks exactly the same as the original. No gossip transferred the traditional way, through mouth and ears, achieves such steady reproduction as an electronic rumor gets nowadays when text can be copied and forwarded without distortion (experiments show that oral rumors, even when the forwarders are actively trying to reproduce the information exactly, get distorted to full loss of content after ten hops, and after three or four they loose half of the meaningful content).

Why does spam about this subject get reproduced the most steadily? One could build a mathematical model of gossip reproduction with the following parameters:

  1. Persuasion threshold — the degree of belief necessary for the reader to take the information seriously.
  2. Eloquence coefficient — the factor (usually less than one, but may as well be greater) expressing how the persuasiveness of the message changes when it's forwarded once. For electronic messages forwarded by verbatim copying, the factor equals to one.
  3. Distribution factor — the number of recipients that a single participant decides to forward the information to when 100% convinced.
  4. Connectedness characteristic — a property of the acquaintance graph (the average number of common contacts that two people in contact have).
Because the connectedness characteristic is a property of the medium and doesn't depend on the message content, this leaves us with the remaining three values. All of them affect the process of message distribution. When the persuasion threshold is high, the eloquence factor is low, or the distribution factor is low, the process fades out after some predictable number of links. This is what happens to most of the lucky mails: you usually get them from a contact or two, but no real epidemic begins. However, when the aggregate attenuation factor (the ratio of the number of active forwarders on the current iteration to that number on the previous iteration) that depends on the aforementioned parameters is greater or equal to one, the process doesn't fade out but instead continues until all closely-linked part of the acquaintance graph is informed. In practice, that means informing close to all potential forwarders in the Russian part of the Internet.

The persuasion threshold, the eloquence factor and the distribution factor depend on the message content. What made the aggregate attenuation factor exceed one in this case? The persuasion threshold, as it seems, is lowered for messages of this type because people prefer to be safe than sorry: “I'm only 25% convinced that it's true, but if it is, I could save someone's life by forwarding this”. However, the potential forwarders in LiveJournal are gullible enough already, one just has to remember this: “They're going to make ICQ a paid service. To not let it happen, please forward this to all your friends”. So I don't think it was the persuasion threshold that played the crucial role. The eloquence factor of one is also typical for electronic communication (though in some cases the forwarders decide to retell the message in their own words, which usually makes the eloquence factor less than one). This leaves us with the distribution factor. An indirect confirmation to this is that I received the message from some people I rarely talk to. It's for this specific kind of information that the distributors feel it especially important to maximize the number of recipients by all means because they think that someone's life depends on it. (The latter might not be exactly true. For the most, as it seems to me, it's more important to ease their own conscience than to save the little girl's life, and to ease the conscience, one has to perform the ritual of forwarding the message to everyone possible, so that one can say: “I did for the unfortunate wretch everything I could”.)

По-русски: Факторы воспроизводства социальных вирусов

On Interpretation of Results and Quotation out of Context

,

You have most probably read someone's recommendations on interviewing job candidates, or, conversely, on attending interviews as a candidate. Starting from year 2000, when Joel Spolsky published “The Guerrilla Guide to Interviewing”, these recommendations often include the advise to to ask an impossible question. The numerous advisers reprinting this recommendation from each other's articles offer various ways to pose such a question, but Spolsky has several examples in his article, including this: “How many piano tuners are there in New York?” (I think if I hear this in an interview, I'll reply “Just as many as there are cliche users in Novosibirsk”.)

It turns out that the author of this question is Enrico Fermi. Here is the original version of the problem as well as the solution: Fermi's Piano Tuner Problem. The solution is similar to what Spolsky describes, and the answer comes out to be 150. I'll quote the last paragraph from Fermi's solution.
This method does not guarantee correct results; but it does establish a first estimate which might be off by no more than a factor of 2 or 3 — certainly well within a factor of, say, 10. We know, for example, that we should not expect 15 piano tuners, or 1,500 piano tuners. (A factor of 10 error, by the way, is referred to as being ‘to within cosmological accuracy.’ Cosmologists are a somewhat different breed from physicists, evidently!!!)
In my opinion, this last paragraph about interpretation of results is the most important. Without realizing what such a solution is and what it is not, the solution turns into guesswork, and the problem becomes something like a test for quick wit. Joel says that a candidate who starts solving such a problem is a good candidate; I'd rather say that one who immediately starts estimating how many gas stations there are in Moscow and cheerfully answers, say, 2500, is either self-assertive (you can't verify if the result is correct anyway) or reads too much Joel Spolsky.

Quotation out of context is a powerful tool indeed. If only for the well-known Lenin's pronouncement: “The most important of all arts for us is cinema”, the full context of which is: “While the nation is illiterate, the most important of all arts for us are cinema and circus.” Seems like Joel isn't a stranger to it as well.

Thanks to rimpocha for the food for thought.

See also:
UPDATE: Mr. Spolsky has left the advise to ask an impossible question out of the third revision of his article.

По-русски: Об интерпретации результатов и о выдёргивании из контекста

Escapist Sequences

,

When you use ssh to connect to a remote host, it feels like sitting at that machine's keyboard and screen. This illusion is easy to distinguish from reality: in most cases the console window title will contain a clue, and, most important, there are plenty of ways to detach yourself from the remote keyboard and switch to controlling your own, local machine. One of them is to finish the remote session with the logout command. But there are always other ways you can use in case the remote host is “hanging” and you cannot type “logout”. In ssh, for example, it's sufficient to type the ~. sequence (tilde, dot) starting from a new line to force disconnection. This sequence, along with several others, is an escape sequence that is interpreted in a special way. This is important: all characters are usually passed to the remote host as they are, but an escape sequence is handled by the communication medium itself and never reaches the remote server. If one really needs to type this exact sequence on the remote “keyboard”, there is another sequence for this: a double tilde transmits a single tilde character. All of this means that when it comes to tildes, the transparency of ssh breaks, and the illusion of sitting at the remote machine's console becomes incomplete.

An ssh session is, of course, a weak illusion. It's much more natural in case of VNC, Remote Desktop and similar protocols. They let you use the graphical user interface of the remote machine, and in some cases even hear the sounds made by the remote programs. If you switch to the full-screen mode, the illusion becomes almost complete… but the basic principle remains: there are always some escape sequences (at least one to disconnect) that won't reach the remote host but gets handled by the communication medium. It's often some obscure sequence unlikely to be encountered in the normal course of operation, something like Ctrl-Alt-Shift-Esc that you'll hardly hit by accident. That's why those who don't know about the escape sequences have to use the “natural” method of disconnection by closing the session through the remote OS interface. But, of course, there are cases when it's impossible.

This asks for an obvious analogy with virtual reality systems. The simplest case of VR is three-dimensional image on the computer screen, for example, in games. Distinguishing it from reality is trivial: one has to look around. Escape sequences are usually obvious. A VR headgear generates a much better illusion, especially when combined with sensor gloves and other devices reading back the body position. Nevertheless, even such an imitation is easy to recognize, and taking off the headgear is one of the escape sequences. But what if we go further? What if the system imitates three-dimensional image, sound, taste, smell and even the position of the body in space, and does it so realistically that you can't tell it from the reality? What should the escape sequences be like then?

Firstly, the sequences should be obscure enough not to be triggered by accident. Otherwise we would witness people unexpectedly freezing or disappearing when trying to, say, scratch a heel. Secondly, the sequences have to be available in any situation, even when the body motions are seriously limited, or when some body parts are missing — in these situations it's even more likely that someone would want to exit this world. As to where you end up after such a disconnection, this is something we all get to find out even if we never find the secret escape sequences: everyone will eventually exit the natural way, through “logout”.

По-русски: Последовательности для эскапистов

Unlimited Abilities

“Human's physiological and psychological abilities are up to date poorly researched,” the lecturer's monotonous voice pontificated. “To believe in your own strength, to realize the depth of your hidden reserves is the way to discover the concealed abilities that each of us has.” The man who was telling this didn't look anything like a Tibetan monk who long ago had found the key to the secrets of his body and soul. He looked about twenty-five, and most of all resembled a programmer who had been working enthusiastically for the last fourty-eight hours.

Mark was sitting in the third row of a lecture hall and fiddling with a leaflet inviting to the “Unique seminar on the original method of discovering your own potential”. He was scolding himself for coming to this stupid lecture in the first place, and also for feeling so inconvenient to just stand up and leave that he was listening to this plod for one solid hour already. He had failed to follow almost in the very beginning and was by now altogether sure that there was nothing to follow, and that the lecturer whom the leaflet styled “Certified professor” was making no headway from the very start. Mark had dropped in on the unique seminar after work, and now the fatigue, lack of sleep and the lecturer's monotonous voice did their bit. Mark sank into a muddled, absurd dream where he was analyzing his, or maybe someone else's undocumented abilities with a disassembler, but finding nothing but useless features canceling out other useless features.

He woke up because someone touched his shoulder. “Hey, sir! I have to lock the hall.” It was the certified professor. Mark sprang up and guiltily rushed to the door. “It's OK, it's OK”, assured the professor. “What do you think, did you like it?” His vivid voice was now nothing like the colorless recitative of the lecture. Mark stopped halfway to the door. “Well…” he mumbled and immediately cursed himself for doing it. “Honestly, I didn't exactly understand…” He cursed himself in the choicest language for saying this just because he had to say something, and prepared for at least half an hour of boring explanations. But the certified professor was already looking at Mark with understanding and interest, and there was no way back. “I didn't exactly understand what those abilities are that you can discover in yourself if you believe in your strength.” To believe and to discover were the only things Mark remembered from the entire lecture, but the professor seemed to enjoy this question as if he never had heard anything more interesting. “This is the most important thing! If you really believe in yourself, you'll realize that there's nothing impossible for you, and that you can do anything.” “Like what? Will I be able to move objects with my eyes?” “No, why? That's a stereotype. You don't have to move objects with your eyes. In fact, you wan't even need it because someone for whom nothing is impossible gains the firmest self-confidence and doesn't need to move objects with his sight to confirm it — it becomes simply unnecessary!”

“Hey, hey, wait a minute. Are you saying that I have to believe in myself in order to have a reason to be self-confident? What's the point of it?” Mark was really interested now. “The point is simple. For example, are you self-confident?” “Well… yes. Yes, I'm self-confident.” “But why? On what grounds?” the professor kept asking. “Well, I'm a good specialist, I'm valued at work, I've achieved everything I have myself…” Mark never thought about this before, but it was unexpectedly easy to find the answer. “See? You're self-confident because you have this and that. But what if you don't have it tomorrow — will you still be self-confident? But if someone is self-confident because he believed in himself and discovered his unlimited abilities, this won't go anywhere, anywhere at all!” Mark considered this. The professor was talking obvious nonsense, but Mark couldn't spot where the error was. “What about you, did you believe in yourself and discover your concealed abilities?” he asked. “Mind you, I'm still far from mastering my full potential. But I've made significant advancement.”

Mark walked home and couldn't get the blatant rubbish that the certified professor talked out of his head. During the dinner and later in bed, falling asleep, he was still chewing the already tasteless logical cud. Only deep in the night he fell into a dreamless sleep. In the morning he woke up as a firmly self-confident man.

По-русски: Безграничные возможности

Erase & Rewind

Many have dreamt of a device (which I envision looking like a remote for a videotape recorder) that allows you to “rewind” the last several minutes or hours. Push the button, and you cancel your last mistake, careless move, take back what you have blurted out. Like an existential Undo.

The idea isn't new, there have been books and movies about it. But here's what I just thought about: right now nothing contradicts the existence of such devices. The only thing I know is that I personally don't have one. If someone has a device like this and has already used it numerous times, all the others wouldn't have noticed anything. What if it's already a thousand and first branch of my existence spawned because someone on another continent kept pushing the button again and again until the reality came to the shape they wanted?

Who knows, maybe the people said to be unbelievably lucky because everything in their lives happens just perfectly — maybe they have simply found the remote for this life?

По-русски: Erase & Rewind

The 21st Century: Goodbye to Quality?

, ,

According to a story of unknown credibility, on the border of the 19th and 20th centuries investors considered automobile to be economically hopeless. Nevertheless, Henry Ford had managed to obtain a credit of $1400 to build automobile construction under very tight conditions. It seemed that the revenue from car sales wouldn't be able to cover the investment within the term for which Ford could get the credit. Henry Ford might never have become the man who made automobile available for millions of people — if not for the idea, brilliant in its economical efficiency, that came to his mind. The idea was to produce cars deliberately less reliable than it was possible, and to make money by selling spare parts. A quote attributed to Ford: “I make cars to sell parts for them”. The new business model let Ford build a profitable enterprise, return the credit in time, and become the world's first mass producer of cars.

Ford brought much to both industry and society. For example, the modern 40-hours week and the very notion of “weekend” became de-facto standard after having been implemented at Ford Motor Company. However, one of his innovations, namely “to make a worse product than you can when it's economically justified”, gave the world a dubious gain. Of course, if not for Ford, someone else would have come up with this idea, great in its simplicity; or maybe someone already had implemented it before him. Today you can see live examples of this wherever you look, and it's time to think about the reasons and consequences of this phenomenon.

It's important to note the difference between production of goods or services of simply low quality and production with quality deliberately lower than the producer is capable of ensuring. For example, a software producer who releases software with bugs doesn't necessarily fall into this category because it's impossible to get rid of all bugs (moreover, it's possible than the capabilities of this producer are so limited that they can't make less than one bug per ten lines of code, or that the programmer does a bad job because he's underpaid). We are more interested in a producer who releases software without sufficient debugging in order to make money on paid support or upgrades. So what are the reasons that can make it economically justified to make deliberately worse products than it's possible?

  • Releasing unreliable products stimulates demand for add-on goods or services (spare parts, repairs, tech support).
  • Short life of the product stimulates demand for more units in replacement of broken or worn out ones.
  • Low prime cost of a low-quality product allows to bring the consumer prices down and obtain greater revenue by entering the mass market.
  • Low-quality goods are possible to produce faster or in larger quantities, which leads to competitive advantage over those who make quality goods.
  • In the modern market, quality is no more the primary tool of competition, inferior to, for example, efficient advertising.
  • The market has come to a situation where, for the above reasons, all the competitors release low-quality products; under such conditions it doesn't make sense to try to achieve better quality in this branch because the consumer will have to choose among the available offers anyway.
It's hard to say whether it's good or bad that Henry Ford's approach is widely implemented in modern industry. Of course, many consumer products, such as cars, we'd never have seen without it, or they would be elite goods available to just a few. On the other hand, the lowering of quality directly affects the consumer. It's especially prominent due to the last reason in the list: as a chain reaction, it impels the makers to skimp on quality more and more in order to gain competitive advantage by other means (low prices, high volumes, advertising). Competition based on “who makes better” seems to have been left out of the modern economy and survived only in particular branches with very specific markets.

Each one of us is both a producer and a consumer. At work, we take part in production of goods or services, the rest of the time we consume what others produce. As a consumer, everyone is, of course, interested in having quality goods, however, as a producer, one might find it profitable to skimp on quality. Obviously, a single person's attitude towards quality can be contrastingly different when they routinely switch between the two roles. This means that there must be a conflict point somewhere where two approaches meet. In my opinion, there are three possible models for a person's attitude towards quality:

  1. One can accept that most of what one consumes is of low quality, just like what one produces.
  2. One can have double standards and expect high quality goods from the market while making low-quality production.
  3. Finally, one can demand quality of the goods offered and have the same attitude towards one's own output.
It's worth noting that an employee who follows the third model is inevitably in explicit or, more commonly, implicit conflict with the employer who strives to save on quality.

I must say I'm of the third kind. The second model I can't fit in my head at all, and for the first one I'm probably too old-fashioned. Having done some creative work well brings me direct æsthetic satisfaction, and it's for this satisfaction that I'm working in this particular branch and at this particular enterprise. Recently I've turned down an offer of a significantly higher salary elsewhere for a job that I could do but which was completely uninteresting to me. Having taken this decision, I've realized that I don't only work for money; an important part of what I get from my work is the very æsthetic satisfaction that I wouldn't have if I did a worse job than I can in favor of, say, production rate. This means that my and my employer's goals are unfortunately different: I squeeze the maximum æsthetic pleasure from my job by doing it as well as I can, while the employer strives for tighter timeframes, higher volume and everything else but quality. This conflict of interest is currently implicit. If it becomes explicit, I'll have to change my job.

The original entry in Russian features a poll: How do you combine the two attitudes towards quality?. It is possible to vote in the poll after logging in to LiveJournal; registration of LiveJournal accounts is free.

How do you combine the two attitudes towards quality?
  • Model 1.
  • Model 2.
  • Model 3.
  • A totally different model (please comment).
  • I don't face this problem (please comment).
Please don't vote if you haven't read all of the above.

По-русски: XXI век: прощай, качество?

Full Speed Astern!

,

Is there anyone who never played strategy computer games? Even those who aren't fans of the genre know that all strategy games model development. From primitive communism to capitalism, from cabins to skyscrapers, from a village to a megapolis, from a savage tribe to a superstate. This is what all the strategy games I've heard of are based upon. As you advance through them, the infrastructure becomes more complicated, more technologies become available, weapons advance. As a result, all modern strategy games are essentially reimplementations of several immortal prototypes, just with new graphics and sound effects. Among these prototypes are Dune, Civilization, King's Bounty and some others. It's time for something new. So, as usual, exercising my rights as inveterate dilettante and pencil-pusher, I hasten to publish my idea for a strategy game.

In contrast to traditional strategy games, the goal of the new game will be retrogression instead of progression. As we know, progress is not only good for you but also bad for you, and some of its bitter fruits our generation already has to enjoy. Let's make as pessimistic a peek into the future as we can, and we'll have the starting conditions for the new game. The player is entrusted with a country suffering from various negative effects of technical, economical and social advancement. Not a big or small one, just your typical fictitious country with a western-type mentality. The ecology is rubbish, the gene pool keeps degenerating, the national health fades away before your eyes, the society suffers from poverty and unemployment, the birth rate is plummeting down. Without player's intervention, the whole population is doomed to extinction in a century or two, which would be several hours of playing time. The only way to fix the situation is to gradually abandon the achievements of progress: hazardous industry, pernicious technology, unhealthy lifestyle.

Every next mission in the game starts off with a worse situation than before. The first mission has it just slightly harder than what we currently have in Russia. The further, the worse it gets, and closer to the end of the game people live under transparent domes because the air outside is poisoned by hazardous production. They've forgotten how to walk because they get used to individual vehicles since infancy. Nobody can see a thing without glasses with huge lenses. All kinds of information about a person, from the ID to the preferred flavor of synthetic meat, is stored in the centralized database, and one can't even go to the toilet without access to it. Only few courageous couples dare to have kids because the last healthy baby has been born maybe a century ago. Until the age of 6 or 8, every child usually lives in a hospital where they usually undergo primary education — of course, through a computer. Even prohibition of abortion and contraception wouldn't help increase the birth rate because of the popularity of adult entertainment technologies that substitute for the real sex. Prohibition of these technologies as well, and any other prohibitions or sudden changes can easily lead to a sharp increase in suicide rate because, as one might have guessed, a healthy mind is also a rare occasion. As a result, the population would still go down, so there aren't any quick and easy solutions in the game. Ultimately, at the last level, a human is essentially a brain with life support systems connected to the Internet, and it's up to the game developers whether it's going to be at all possible to complete this last mission.

In the beginning of each mission the player is given a goal consisting of several conditions. Each of the conditions has to be met in order to complete the mission. One of the conditions will always be to achieve a certain rate of yearly population growth (though the growth is always negative at start, that is, the population is diminishing). The other conditions are specific to the mission. For example, they can be to bring the infant mortality rate down to a certain threshold, to abandon the radioactive production, to have a thousand people who can walk on foot, or even (at one of the last missions) to have one baby born naturally, without in vitro fertilization or artificial incubation.

A fairly standard set of strategy game tools is at the player's disposal. One can construct and demolish buildings, adjust economical parameters such as taxes, run incentive campaigns that economically stimulate those meeting certain criteria (for example, parents with two kids), change the legislation within certain limits, encourage or discourage some scientific, social or cultural activities, and (this is one of the most powerful tools) use the highly developed mass media to induce one or another way of thinking and acting and affect the popular preferences.

One point is so important that it's worth reiteration: there can be no quick and easy solutions or winning strategies. For example, you can't simply remove the transparent domes because the air outside is poisoned. If you stop the hazardous production that poisons the air, people will starve without the resources they need. This means that an alternative has to be prepared. All transitions have to be smooth, and any radical action does more bad than good. One of the responsibilities of the quality assurance department when testing the game should be looking for winning strategies. Any very simple algorithm that leads to completion of the mission should be considered a grave defect that has to be fixed, most probably by adjusting the weights of various factors and interdependencies in the game model.

Unfortunately, I'm almost sure that this idea will never be implemented. Hardly any game manufacturer will be impressed by it (most probably, they won't even find out about it). But I'd really like to play such a game myself, even though I'm not a fan of strategy games.

По-русски: Полный назад!

Three Levels of Multidimensional Insanity

, ,

When a programmer has nothing better to do, or he just needs an exercise for the brain, he starts having these weird ideas. Like Esoteric programming languages.

All our boring programs are grossly one-dimensional. The memory is linear, the stack is sequential, the program is transcribed in a serialized form. Even things that are naturally two-dimensional, such as the on-screen picture, are reduced to linear for computer processing. The idea of taking programming beyond the one-dimensional space isn't new and has already generated a whole family of esoteric programming languages called fungeoids after the first of the kind, Befunge. The common feature of these languages is transcription of the program as a two-dimensional matrix containing the operation codes. The interpreter moves proceeds from one cell to another in one of the several possible directions. This way, a loop in Befunge can indeed have a loopy look. Some of these languages use memory registers isolated from the program storage space and are addressed by one-dimensional indices; others use the Von Neumann architecture and store data in the same two-dimensional memory as the code, which also creates interesting possibilities for writing self-modifying programs.

The reader might ask why anyone would need any of it, whether someone indeed has nothing better to do, and what kind of mild drugs the author uses, so I'll have to answer. No particular reason. Simply put, it's for fun. Hey, ask some solid scientists specializing in pure mathematics why they have to study objects like… well, not just an algebra, and not even en algebra of algebræ, but an nth order algebra, an algebra of algebræ of algrebræ… n times. I suppose their elaborate answers can be effectively reduced to something like: “Hey, it's fun!” So is an esoteric programming language fun. It's an original joke, and a complicated mathematical abstraction to study, and a puzzle. Taking something to the point of absurdity is fun in itself, so today I've taken it to my hand to carry the idea of multidimensional programming to absurdity. Let's do it in three nonsensical steps. I'll be writing about the two-dimensional case, but it's trivial (?) to generalize for the case of n dimensions.

First level. Here lie the “arrow programming” languages of the fungeoid family. The memory is two-dimensional. In a more interesting variation, the memory is shared between code and data. On this level, each memory cell stores an ordinary number, such as one byte. Let's call the data unit stored in one cell a word, as in traditional computing. Two-dimensional memory uses two-dimensional addresses, such as (i, j). The current instruction pointer (IP) also looks like this. Most fungeoids allow to change the direction in which IP is incremented to one of the four ways, but it's not necessary for Turing completeness: a single direction and a conditional jump to a two-dimensional address is enough. However, the changeable direction of execution flow is the fungeoids' zest which makes programming in them especially unlike the traditional and allows transcribing of loops as rings and linear programs as spirals. Two-dimensional memory organization inspires thoughts of measurement units such as square kilobytes (Kb2), makes you think about what the operating system should do when it gets a request to allocate a wide memory block while only tall and narrow areas are available, and gives rise to an interesting problem of defragmentation of rectangular files in two-dimensional mass storage. The compiler could optimize code not only for speed but also for the area taken, and storage of raster images would be natural as never before. Finally, programming languages can be described by two-dimensional grammars specified in BNF2.

Second level. Unlike the first level represented by numerous fungeoids, I've never encountered anything that would fit my second or third level. In the second level, something strange happens to the very numbers: they are not simple bytes anymore but rather complex values. Addressing a cell of the two-dimensional memory becomes natural. Addition and subtraction are straightforward, multiplication and division are slightly more complicated, and there is a new operation: complex conjugation. One could even go further and say that the cells contain two-dimensional matrices of bits. For example, a word can be comprised of 16 square bits (4×4), which, of course, spawns a new set of arithmetical operations. With regular addition, the overflow bits are carried in one direction — to the left; with two-dimensional addition, bits can be carried both to the left and up. This makes at least two types of addition and subtraction. Shifts and rotations can be done in four instead of two directions, and new operations are possible, such as turns and transposition. When multiplying, shifts are made in both directions. It's not obvious, though, how a two-dimensional word should be interpreted as a regular number for purposes of addressing and counting. Speaking of data exchange in networks, instead of two possible bit orders (little-endian or big-endian) we get eight equally reasonable ways to serialize a word.

Third level. At the third level of absurdity, time becomes two-dimensional. Who cares that it doesn't apply to our Universe? The model is interesting anyway. A moment of time is described with two variables (t, u) rather than one. With regard to a single moment, there isn't just something that happens before or after; there are some moments to the right from this moment in time, some below, and some both to the right and below. The causality spreads in both directions, and what happens in a moment of time is a consequence of both what happened to the left and above in time. Clock frequency is measured in square Hertz, and the state of the machine at clock (t, u) is derived from its states at clocks (t – 1, u) and (t, u – 1). The program stored in the two-dimensional memory runs both horizontally and vertically. In the next clock by t the CPU proceeds to the command to the right of the current, and in the next clock by u it moves to the command below. A bicyclic algorithm can have toroidal topology. In a square second, a communication channel can be used to transfer a number of square bits, therefore the throughput is measured traditionally, in bits per second. The task of optimizing the speed of an algorithm can be defined more accurately: which of the time dimensions is more important to optimize.

Fourth level. If someone comes up with a fourth level to complement the three above, I'd like to discuss it with you before they come to take both of us away.

По-русски: Три уровня многомерного безумия

A Model of a Student Using the Harvard Architecture

Basing on the prior experience of the uneasy relationship with my own memory, I've concluded that it is quite non-uniform. If I was to draw an analogy between human and computer memory, I'd rather compare the brain with the Harvard rather than Von Neumann architecture. To remind the reader, the former has separate memory for program and data, and the CPU accesses it in different ways; the latter uses common memory for both program and data.

According to this analogy, the brain contains fundamentally different structures for memorizing pure information (data) and procedures (program). In some people the former is better developed, and in some people, like me, the latter. I suppose that the latter is actually more common because there is a lot of methods to memorize pure information by substituting a generating procedure for it. For example, to memorize a telephone number like 1252627, many would find it easier to remember a procedure: write down 1 and then three consecutive integers starting with 25. I think that most people, while trying to memorize this number, will find the above procedure (without verbalizing it) and memorize it instead of the original number. Not every number can be represented with a reasonably short procedure like this, that's why some telephone numbers are considered easy to remember, and some are harder because one has to use the less developed memory for pure information. However, some people don't need the mnemonic tricks, and they can memorize all telephone numbers equally easy. These people have the memory for pure information better developed than the procedure memory.

I would call the content of the pure information memory knowledge, and the content of the procedure memory comprehension, even though this doesn't entirely agree with the casual use of these terms. Of course, the analogy with computer memory is incomplete: in my conception, the second type of memory holds not only procedures but also generalizations and relations (it's possible that there is some finer subdivision of memory types). Knowledge, on the other hand, is uniform, and there is no subdivision by type of information. To understand some information means to promote it from knowledge to comprehension by analyzing it, finding patterns, and probably relating to the previously understood. The ability to comprehend highly depends on the nature of information and on the similar comprehension already acquired. When someone says they have good memory for numbers, or melodies, or poetry, it means that they are relatively good at analyzing particular kinds of information for transforming them into comprehension. On the other hand, highly developed ability to accumulate knowledge rather than comprehension is more rare. Extreme cases of such development (such as when a person can recite the entire book after reading it once) are usually called infallible memory.

Human brain is a flexible system, and it's often that one system or mechanism in it gets replaced with another. In particular, replacement of knowledge with comprehension happens almost constantly. This incurs a certain overhead for both storage (analysis, pattern identification) and retrieval of information. For example, to call the telephone number memorized as the procedure described above, one has to execute the procedure first. The reverse replacement is also possible: someone who is unable or unwilling to analyze some information can memorize it as knowledge. In situations where the original information has to be reproduced precisely, knowledge is preferable to comprehension because it doesn't require any transformation. On the other hand, it's impossible to use knowledge in situations that require comprehension (though in some cases one can transform stored knowledge into comprehension, in other words, understand it when it becomes necessary).

The hypothesis about human memory using the Harvard architecture is valuable for pedagogics. The goal of teaching is to have the students comprehend the material, but often knowledge is substituted for comprehension. This happens for a variety of reasons: a better capacity for memorizing of pure information rather than for understanding, lack of ability or training for the analysis necessary for comprehension, lack of understanding of the previously learned material which is often crucial for understanding of the new. A great part of the substitution of knowledge for comprehension should be attributed to the imperfect system of progress assessment based on standard tasks and even on simple reproduction of the material. In the latter case, knowledge can be used instead of comprehension to reproduce the information; in the former case, it's impossible, but a student who is unwilling or unable to attain adequate comprehension of the material can rather attain inadequate comprehension. This kind of comprehension uses the same approach as the adequate comprehension but makes only shallow analysis resulting in identification of superficial patterns. An example is a memorized procedure for solving a type of standard problems in school physics: s divided by v yields t. Obviously, inadequate comprehension is as deficient with regard to the goals of teaching as pure knowledge. It is clear that improving the progress assessment system alone won't yield better results but will just lead to deterioration of the average figures. It is necessary to improve the methods of presenting the material as well as of training and stimulation of the abilities for information analysis. The latter is crucial because the analysis necessary for understanding happens in the student's head, and it can't be replaced by any visual teaching methods. There is always the work that the students have to do on their own, and if they cannot or don't want to do it, the teacher's work is wasted.

По-русски: Модель учащегося с гарвардской архитектурой

Bug Reports of the New Millennium

,

Japan aims to create 3D TV that would allow people to view high-definition images in 3D from any angle, in addition to being able to touch and smell the objects

While you're waiting, just think of all the bug reports the developers of this technology are getting right now from their QA. Such as:

Bug #8654534: Roses in test scene 21 smell onion
Bug #8654535: Cannot feel window glass with fingertips
Bug #8654536: After sneezing, sound disappears
Bug #8654537: Toilet paper perceived as too heavy
Bug #8654538: When trying to drink from the faucet, water does not flow
Bug #8654539: [feature] Smell intensity adjustment needed
Bug #8654540: [security] Test scene 50 has holes in the floor
Bug #8654541: After switching scenes, smells from old scene persist
Bug #8654542: [release notes] Fragments of broken glass cause pain in fingers
Bug #8654543: Cannot tear paper by hand when there is writing on it
Bug #8654544: [feature] Vaporizing liquids must increase perceived humidity
Bug #8654545: Very low performance in scenes with multiple PVC layers
Bug #8654546: Can't feel electrcity by touching battery terminals with tongue
Bug #8654547: Stack overflow error in front of the mirror in test scene 44
Bug #8654548: Adding salt to water does not change its taste
Bug #8654549: Books on shelves in test scene 75 have wrong Cyrillic encoding
Bug #8654550: Debug warnings when clapping hands
Bug #8654551: [security] Non-admin can walk through brick walls
Bug #8654552: Segfault when trying to bite barbed wire
Bug #8654553: Snow in test scene 12 feels hot
Bug #8654554: [release notes] Jumping off a moving car causes a crash
Bug #8654555: Cannot eat more than one sandwich in test scene 64
Bug #8654556: All strings on the guitar in test scene 57 make the same sound
Bug #8654557: [top-bayan] Cannabis plant in test scene 18 is not real

По-русски: Bug Reports of the New Millennium

Let us Consider a Spherical Horse in a Vacuum

,

Note: This entry is based on a joke well known in Russia; here is the English version of it that I could find.

  • A spherical horse has absolutely black body.
  • A spherical horse breathes ideal gas.
  • The neighing of a spherical horse is a simple harmonic and spreads without dispersion.
  • A spherical horse pastures in uniform fields.
  • When a spherical horse prances, its trajectory is parabolic.
  • The hooves of a spherical horse come into elastic collisions with a flat horizontal surface.
  • A spherical horse has a non-zero probability to get out of a potential well it has fallen into.
  • Mounting a spherical horse involves finding the saddle point. The resistance of the horse in this case is negligible.
  • Looking from an infinitely remote stand, a spherical horse appears as a point mass.
  • You can't comb the hair on a spherical horse.
UPDATE: The ideas have been used for an article in the Russian edition of Uncyclopedia.

По-русски: «На сегодняшний день у нас есть только модель победы сферического коня в вакууме»

Why do we Bury our Dead?

, ,

Note: This entry has been originally written about the Russian society. It may or may not be relevant to European or North-American societies which I know next to nothing about.

It has occurred to me that, be it for the better or worse, our modern society has ceased to honor many traditions of the past. Of course, there are many religious rituals practiced by one or another group of the society, but there is hardly another kind of traditions that are still as mandatory for everyone as those related to death: funeral, burial, mourning. These rituals have managed to stay general while all the others became internal to specific social layers or groups. This is why the expression “ritual services” nowadays is unambiguously understood as pertaining to this particular category of rituals.

However, it's not that straightforward. When most members of the society do something similar, it doesn't mean they all have the same reasons to do it. For example, the original idea behind clothes was protection from cold and rain, and that's how it's still used up to date, but it's hard to believe that a girl going to a beach wears bikini to keep herself warm. A possible reason of the special treatment of burial rituals in the modern atheistic society is that death is one of the few transcendent phenomena that people encounter in their everyday life. Death, cessation of conscience, transition between living and lifeless — this is probably the only phenomenon surrounding our lives that can't be explained with the laws of materialistic science. Other such phenomena, such as existence of the Universe, irreversibility of time, are just as well incognizable, but they don't apply to our daily life directly, don't intrude into it and make changes that can't go unnoticed. Death literally “makes” us respect it, and this might be why the modern society, having lost the universal respect for the Sun, Earth, Life, Creator, still retains the universal respect for the death.

After thinking about it for a while, I've come up with a list of four dominant reasons that make people respect the burial traditions. These four reasons could be called kind of stages because each next one originates from the previous, reinterpreting and enhancing it. I'm not judging these reasons here and not claiming that one of them is somehow better than another; I'm also not trying to study the direction of historical development that transforms the previous reason to the next. This is just an attempt of unbiased analysis. Here follow the four dominant motives for honoring the burial rituals.
1. Pragmatical.
This is the most ancient motive, and it's hardly ever found in modern societies (though it might still dominate in some remaining tribes). The transcendent and the ordinary were so tightly intertwined in the life of ancient societies that death could hardly pretend to any special place among the other, not yet cognized phenomena. The burial rituals were regarded as commonplace actions with immanent tight causality. When placing a sword and a shield into a dead warrior's tomb, the ancient hardly felt themselves executing a ritual; it was rather a common action necessary to prepare the dead for future fights in the afterlife. The need for it was as obvious as a living warrior's need for ammunition.

2. Symbolical.
Compared to the previous motive, the perception of ritual actions has changed from direct to indirect via symbols. It seems like the point of transition was the use of magical symbols (such as pentagrams) guarding the dead from demons. It's important that a pentagram, unlike a sword, is not a direct bearer of some force, but it rather signifies such a force. This transition is caused by delimitation between the transcendent and the ordinary: phenomena such as death are no more common components of everyday life, and it's only through symbols that interaction with them is now possible. Most modern rituals dealing with death seem to have originated under domination of this motive. The tombstone, coffin, burial and mourning in cultures based on Christianity or Judaism are symbols signifying the respect of the living for the dead and helping the souls to find peace. It is important that an individual realizes the meaning of the symbols. The causality is still strong because the nominal meaning of the symbols is regarded as their actual role (a pentagram is a real defense weapon).

3. Formal.
The nominal value of the symbols is retained but their causal role is lost. Burial is still perceived as something done for the dead, but there is no clear understanding of how it helps the dead and what would happen if the ritual is neglected. I suspect that this motive is dominant for most of the modern population of Russia. It's worth noting that as an incentive, this motive can be no weaker or even stronger than the previous one: the loss of causal reward is compensated by the obsession to do everything properly.

4. Social.
Like a fourth derivative, this motive is a product of further regression of the third one. Not only the alleged factual role of the symbols, but also their nominal value is lost. An individual no more thinks that the dead really need burying. The grief from the death of a close relative changes its central object, shifting from sympathizing the dead (“poor Yorick!”) to dealing with the loss by the living (“how can I live without Yorick?”); condolence becomes important. The living perform the burial not for the dead but rather for each other, projecting onto each other the retained from the previous stage and now self-sustaining need for proper execution of the ritual. A variation of this motive is when someone conducts the ritual not for another person, but in order to follow the ethical or formal laws of the society; I'd still call it the social motive because it's the incentive originates from the individual's socialization.
Undoubtedly, any classification of imprecisely expressed phenomena is doomed to be imperfect, and it's possible to point out a multitude of transitional types between any two; also, the same individual can behave under influence of different motives at different times in life.

The original entry in Russian features a poll: A small statistic survey not pretending to be representative. It is possible to vote in the poll after logging in to LiveJournal; registration of LiveJournal accounts is free.

Which of the motives best describes your personal reasons for conducting burial rituals?
  • Pragmatical.
  • Symbolical.
  • Formal.
  • Social.
  • I have no reasons to conduct burial rituals.
  • The described classification of motives is fundamentally flawed (please comment).
Please don't vote if you haven't read all of the above. Also don't vote and accept my apologies if you regard asking the question inappropriate.

Ready to be bashed by specialists in cultural studies and sociology as well as other interested parties.

PS: Did you think it's going to be all screwdrivers?

По-русски: Почему мы хороним своих мертвецов

IT Allegory: Afterword

My recent IT Allegory is easy to misintepret in two ways. Or, to put it that way, to conceive two ideas out of it that I didn't intend to convey, and that I don't consider correct in the general case. Specifically:

  1. It is wrong to develop tools that implement fundamental generalizations. One should make small and simple tools to solve the given problem, and no more than that.
  2. It is wrong to make small and simple tools to solve the given problem, and no more than that. One should develop tools that implement fundamental generalizations.
I don't deem either of these a universally correct approach, and it's not to demonstrate the advantages of one approach over the other that I wrote my article for. I wrote it to convey a different idea:

  • It is wrong to adapt a system universal for one class of problems to solve problems of another class. One loses the advantages from the universality and gets the overhead from the overall solution complexity.
This is something that not many would argue about, at least it's much less questionable than the other statement comprising my point of view:

  • For every class of problems, one should undertake a detailed analysis and then develop a system implementing the fundamental generalization for this particular area.
A corollary is that development under strong time pressure harms the product quality while possibly (in the case of a commercial product) contributing to its better marketing success.

По-русски: IT-аллегория: послесловие

IT Allegory

At my job I take part in development of certain kind of tools. I love my job, and most of all I like to invent new, universal tools solving whole new classes of problems.

Recently, my boss has assigned me the task to design a new screwdriver. The task didn't contain any clarifications as to what the screwdriver should be like, and, in fact, it couldn't contain any because, at that time, my boss didn't have any clearer vision of the problem than I had. So I decided to design a screwdriver that would be universal in its class of tools (that is, among handheld battery-operated tools — we wouldn't try to compete with specialized stationery machines).

I started by studying all kinds of screws, bolts, nuts, washers, studs, brads and split pins, learned about the specifics of their use. While studying everything relevant to threaded coupling, I figured out for myself something like a common denominator for all the tasks that my universal screwdriver might face: a screwdriver is used for coupling and decoupling of parts by setting one of them in rotary motion. To encompass the entire range of fixing parts, one or two exchangeable bits were obviously not enough. Instead of following the straightforward way of increasing the number of bits (you can't provide for every eventuality anyway), I designed one universal workhead. It could fit parts of different shapes and sizes: from sunken three-millimeter philips screwheads to five-centimeter square nuts. The electric drive allowed to adjust the speed and torque as well as to set the stopping condition (linear distance passed by the part, number of revolutions or strain to reach). It was also assumed that the user should be able to choose from presets for typical tasks instead of setting the parameters manually.

After I was done with the analysis, I started implementing the design. It's not really interesting to describe this because it basically went smoothly. Some features had to be left out until the next version, but it was easy to add them later without breaking anything. The most interesting is what happened a month later, in the final stages of the development. The first to have a suspicion was the UI designer whose task was to refine the look of the prototype. It seemed to him that the handle of the “screwdriver” had too many buttons. I explained to him why this buttons were necessary, and showed how to use the tool in different modes. Then he asked why didn't I just make a bunch of exchangeable bits like everyone does. I explained that a fixed set of bits would never match the abilities of the universal workhead, and, after a long debate, I've been understood, but after that I had to answer a similar set of questions to the head of technical documentation department, and then to a QA engineer. We had to gather a meeting with the manager, the head analyst of the project and other official persons.

In the meeting, another important “little” thing came to light. It turned out that the potential customer doesn't really need to work with the whole range of screwheads and nicks of the fixing parts. They need to screw and unscrew just two or three kinds of screws, but they also want to hammer in nails. With the same tool. To make things worse, the marketing research indicated that the average customer doesn't realize the difference between a screw and a nail, or gets it wrong. As to buttons on the handle, the specifics of the target group imply that there can't be more than two.

Then was the time when one would do a new round of analysis, find a new “common denominator” and design another prototype. But the problem was that there was basically no time left until the scheduled release date which has been already declared in the marketing campaign. There wasn't enough time for all of that, even if you stop eating, sleeping, and going to bathroom. The only possibility left was to adapt the existing prototype to the problem that has changed. This means extension in directions in which there was no extensibility. This means implementation of admittedly suboptimal and short-sighted solutions. This means ending up with something not extensible in any direction anymore, something hard to debug and support, and, of course, with no traces of the initial beauty of approach.

After considering this gloomy perspective, I gave a sigh and took the prototype along with all the blueprints far away. Instead of crippling the existing mega-screwdriver with an axe, I chose to make another one. Not universal at all. Completely inflexible. Able to drive the exactly three types of screws (listed in the new problem statement) in the traditional way — by means of exchangeable bits — and to hammer in nails. Because this new device was nothing but a cliché and didn't have a single non-trivial part, I did it in three days and three nights, or something like that. Only one non-critical part I was able to reuse from the original design: it was the accumulator which didn't need to change at all. The result was quite acceptable — until you want to expand the capabilities somehow.

Why did I choose this way? It's obvious that the simple tool I could make in three days doesn't have any flexibility, scalability or extensibility. True, but the old prototype adjusted to the new problem wouldn't have it either. It's flexible but not to those angles, it's scalable but not by those parameters, it's extensible but not in those directions. It's natural — because it's impossible to design an Ultimately Universal system. If you need something universal, you have to answer the question first: what do you have to encompass by this universality? An incorrect answer, or one that later turns out to be incorrect, leads to waste of time and effort. An attempt to apply a system which is universal in one area to encompass problems from another leads to loss of all advantages of the universality, but does increase the overall complexity of the solution. If you can't do it the right way, it's better to do it the wrong and simple way than the wrong and complex. What can be done in three days, can be even redone from scratch, if necessary.

The first prototype still rests in my desk drawer. Maybe I'll still have a chance to dust it off someday?

По-русски: IT-аллегория

Not Every Bug is Bad

,

For once I've had a dream that isn't complete nonsense. What happened in it could as well have happened in reality.

Here is what I've seen. Some company X (there wasn't a specific name in the dream) had captured a huge share of the mobile phone market. Nearly every second phone in the country was their model Y. There was only one point that X lost to the competitors: others had platforms for user-downloadable applications (some had Java, others had Symbian) while X didn't have any such platform. X could release a new phone model, but most users were currently happy with Y, and few would buy a new phone just for the downloadable applications. However, X wanted to make money on downloadable applications. They'd considered free firmware upgrades in service centers, but this option wasn't good enough: service centers in a big country work slowly, and users would have to wait for weeks to have their firmware upgraded, so hardly many of them would use the service. (This is actually true. When my phone needed reflashing as a warranty repair, I got it back from service after a month.)

The solution that had finally been implemented was found by programmers, not marketers. One of them, having heard of the problem, made a suggestion as a joke, not actually hoping for it to be taken seriously. This programmer happened to work on the Y firmware source code, modifying it for use in the future model Z. While reading the code, he had found a bug in the code that handled incoming chained SMS messages. A specially crafted chained message could cause a buffer overflow with a theoretical opportunity for the attacker to execute arbitrary code. Nobody knew about the bug, and the chance for it to be triggered accidentally was one in a billion. The programmer's idea was to use the vulnerability to upgrade the firmware remotely.

And that was what they did. Of course, the users weren't notified of the vulnerability. Company X had simply offered all users to do a “remote software update for the mobile phone” for a symbolical fee of $1, promising that the update will add new features to the phone, including the ability to download applications. To perform the update, a user had to send an SMS to a special number (so that someone couldn't order a surprise upgrade for a neighbour). In reply, the server sent the user a chained SMS message exploiting the vulnerability. It consisted of several chunks and contained a bootstrap loader. The loader used GPRS to download the new firmware from the X server (the $1 was actually used to pay the cellular carrier for this GPRS traffic). After a checksum verification, the loader installed the firmware into the flash memory and restarted the phone. (To prevent incomplete reflashing because of weak battery, the loader told the user to connect the charger to the phone.) Besides the support for downloadable applications, the new firmware contained other improvements. One of them was a fix for the vulnerability so that nobody else could ever exploit it again; the other was the ability to download firmware images over GPRS and install them (after checksum verification, of course) — just in case.

По-русски: Не всякий баг вреден

You are in a Maze of Twenty Little Passages

,

There is a text-based adventure game Dunnet packaged with GNU Emacs — you must remember those games where you read descriptions of the rooms where you are, and type commands like put key in door. If you have Emacs, I recommend you this one. This is, I tell you, cyberpunk.

For example, there is a room with a computer. It runs some flavor of UNIX with a crippled but working shell. The /rooms directory contains a subdirectory for each already visited room with files representing objects currently located in those rooms. Your current inventory is in the home directory. What you have to do there is to transfer all your stuff to a remote server over FTP and then use rlogin to get there yourself. After doing this, you find yourself in a room called “Receiving room” (without any computer), and all the objects transferred here are lying on the floor nearby. It's funny that if you forget to enable the binary mode for FTP, you'll find a worthless pile of protoplasm instead.

There are a lot more places like that in the game, though. Highly recommended.

PS: Check this commit in the game's CVS.

По-русски: You are in a Maze of Twenty Little Passages