June 2nd, 2009

On Twitter


Sunday, March 29th, 2009...2:38 pm

A Camel is a Horse Designed by Committee

Jump to Comments

I was about to write a post on this topic for a long time. Each time I postponed it for different reasons and almost forgot about it. But now, once I see this excellent post on TechCrunch, let’s talk about it. Here you go!

Just think what makes our tech industry to move further. There are many reasons, you can say. It’s technical evolution. New inventions, etc. But it’s not only about technology. It’s also about people. Few people push it. Those people who have own and unique vision with ability to foresee our future. Once they see it, it’s a matter of time,resources and efforts to convince others.

Personally, I believe that iPod becomes better and better with each version. It gets better design, its functionallity gets better too. That’s why I buy new versions each time. Apple push them to me. And I buy.

Basically, there are many examples. Car producers do the same. That’s a kind of formula. Of course, sometimes they fail and you switch to another vendor.

We need different leaders pushing different ideas. We will select a right one among them. Definitely we need for competition.

But the bottom line is, that’s how it works. Strong leaders drive us, and we follow. Truly, unless you see new iPod Touch, you have no clue how the next successful version should look like. Unless you are professional in this business, working e.g. on Zune :).

Applying this subject to our software world, to the ideas of web2.0 development and service deployment. E.g. make users participate in forming of new requirements. Be careful with that. It’s indeed a good idea to make development cycles short and roll out changes to your site and hear to user’s feedback quickly.Quickly respond to market needs. But don’t let users drive your strategy, point directions. You may loose your innovation, all that things that made you different. Indeed, it’s a true art to keep focus on your main direction and still keep old users and discover new ones in enterprise world, where almost everything should be customizable, at least in the next release.

Another thing is a design by committee issue. Look, the overwhelming majority of innovations were created by one and independent company/person/group of people. This is a rich soil for innovations. In this case you have a freedom for changing and driving a product in any direction. You move quickly, you are fast. And finally, you are the first.

Of course, there are areas where you do need committee in order to make the whole engine work. But in this case you fall into slow reviewing cycles, conflicts of interests and so on. That’s why it doesn’t work as supposed in most of cases.

So, it would be great just to have an alchemic formula to keep a balance and follow trade-offs, to make users happy and to make them even happier once you roll out dramatically better new version, that you developed according to your own and unique vision… innovation-lab-marquee


Wednesday, March 18th, 2009...11:21 am

The Business Model and its Impact on Product Architecture

Today I would like to talk about the impact that business model actually makes on a product architecture. I mean how the way that company uses to earn money affects its growth and profitability via product architecture.

When you are writing custom piece of software for particular customer, the strategy is simple - do your best to satisfy the customer as much as possible with the minimal development efforts/investments. In order to achieve that you need to design architecture in that way to predict as much number of future changes as possible, make your product easy to change and move sequentially forward in the future. That’s why you split your architecture into layers, you create abstract interfaces, you apply concrete implementations, and finally you make your architecture pluggable and easy to extend. You rely on 3rd party libraries, you try to re-use previous experience and code snippets/libraries. Of course you are facing a lot of other development challenges here, as everyone does in software world today, but the key question is how to save efforts on product development. Do more with the help of less.

This question leads us to that idea that almost every company that has specialty, tries to build a platform instead of developing an ad-hoc solution each time from scratch. They develop platform that is easy to customize for particular customer. If the job is done properly (by perfect beings in perfect world:), number of your customers will not depend on number of development investments. Profitable model.Write once, sale many times.
That reminds me one of easy to scale patterns - write once, read many times(read optimized scenario requires you to optimize data at write time)
In this case the challenge is to split you product architecture into bricks. Easy to replace, easy to rebuild, easy to append. Another challenge is how to build ideal platform, the framework that can be easily customized for any customer…and keep it simple. Both, on UI and code level. That’s true art, to build the system that’s complex in a whole, at the same time consisting of simple disjoint blocks.

So, we examined companies that sell products and platforms. But there are companies that don’t sell products and nevertheless stay alive in software business. They do have own products, but they sell advertising. Google is the best example. This is indirect model. The profitability lies in a number of users using a product. Nobody will use Google AdWords if few clients use Google Search.So, to stay alive in this business you need to keep existing customers and constantly gain ground using new ones. Like a shark, keep moving or you will die. Other competitors will intercept your users.

In order to serve such incredible number of users you need to scale your product easily. You need to do less job with a less number of machines in a cluster. Electricity bills matter here. Performance, fail-over, load balancing, capacity reserve. All these items are answers to one simple question stated by the business model - how to handle large number of users/content transparently and efficiently without expensive hardware infrastructure at the same time saving development efforts.

The main idea is that everything has its origin, like anything in a universe. Everything starts from something and leads to something. There is a reason for everything around us. And each day, on each page of code you can make your influence on the company in whole.

Friday, February 6th, 2009...3:47 am

Interview with Matt Knox - an Adware Author

Almost everyone knows those passionate people driving our industry and technologies forward. But some of them are not that famous. Many of them do not have blogs and don’t attend conferences. But they definitely have something to share.

Matt Knox has very interesting past - he wrote adware. This is one of that interesting tasks when you have to understand OS deeply in order to write piece of code that will transparently turn millions of machines into zombies staying undetected.

So, amusing story to read - Interview with an Adware Author

Saturday, January 3rd, 2009...2:13 pm

Your Setup and Efficiency

Jump to Comments

I’m always keen on discovering and using tools that help to boost efficiency and get more fun. That’s why it’s very important to learn and type as fast as you phisically can, that’s why you need to learn vim emacs and use their hot-keys. Coding and typing routines shouldn’t interfere with your thinking, designing and problem-solving process.

I found another example of efficiency - it’s layout of your work place.


Yes, this pic looks really cool, just like in the movie about hackers. But look closely and read FAQs, and you will find origins, keys and efficient solutions:



1 Comment

  • Really amazing office! In my childhood I dreamed about 2 pc’s and 1 laptop, connected with LAN. 2 years ago after reading Joel Spolsky article I’ve put 2nd display at my office.
    And what’s the next? … Linux desktop with mega intellectual bash completion, voice recognition and stereo glasses instead of displays :)

Friday, December 12th, 2008...8:54 am

Adobe Alchemy - running C++ code in the browser

Adobe keeps playing with alternative approaches in the lab. Just meet their Alchemy project

Brief overview:

Alchemy is primarily intended to be used with C/C++ libraries that have few operating system dependencies. Ideally suited for computation-intensive use cases, such as audio/video transcoding, data manipulation, XML parsing, cryptographic functions or physics simulation, performance can be considerably faster than ActionScript 3.0…

Friday, December 12th, 2008...3:35 am

It Reduces Our Coding Fun

Yeah, sometimes the code just flies out under our fingers, you don’t think about typing, you don’t think about switching between editors, IDE panels and browsers, you do all of this automatically, all you can think is your idea and its implementation. Done, for a couple of hours. In these cases you don’t need deep debugging cycles, you already thought over every detail, like a painter creating beautiful picture,mirroring it from your mind directly to keyboard…

Unfortunately, as it usually goes, our coding life is not so appealing. Sometimes you do nothing but just update your Eclipse, you look for new features and bugfixes, but surprisingly some stupid plug-in consumes your CPU cycles and prevent Eclipse from breathing freely.
Sometimes it’s a set of other non-technical factors that makes your coding muse leave…

But from time to time some annoying bug appears assigned to you, and you realize that you don’t want to fix it at all. By no means I’m telling that you don’t like fixing bugs at all. Bugs are part of our life, accept it. It’s a good thing to do - fix them. But I would like to touch those bugs that are injected because of architecture. Somewhere deep inside you understand that global factors caused these bugs.

Looking around you will find a lot of books on software design. They talk a lot about software quality and how software processes are connected to it. They all tell you not-todo-things. Clear set of things you should avoid to do. Why? Because it’s simple to describe someone’s failure and try to guess origins. There is plenty of examples in the field already. They’ve got a lot todo - put it on paper.
However, I guess that a couple of guys on our planet still know how to write software in a right way, but usually they don’t like writing books :)

Each software type is special, it requires a set of specific patterns and approaches. You need to combine a lot of ingredients in order to get perfect soup. In case of software, you should be ready to make another soup at any worth-while point. Moreover, architecture should be self-explanatory, it shouldn’t take a lot of developer’s efforts to decide where he should put new piece of functionality. It’s a function of a lot of params.
So, almost everyone faces a moment when there are no uncovered challenges left in the projects he is working on. You know technologies, you know your domain area, sometimes only introducing new frameworks makes you smile.

So, the truth is, that your next challenge should be re-writing you project in that way, that it will be easy to fix bugs and it will be difficult to discover difficult-to-fix architectural bugs, there will be a minimal of “chain bugs” - when changes in one places screw up others. Your architecture will protect you. Like technology makes impossible for drunk tram driver to hurt people walking around, due to rails.

And in order to solve this puzzle, you need to question yourself each time you are looking at newly discovered bug - “What’s the origin of this?”

Thursday, November 27th, 2008...12:49 pm

Technical Background of EMC’s Atmos Cloud Storage

Jump to Comments

Surprisingly I found an in-depth background available for undustrial cloude storage project - EMC’s Atmos.

Previously it was OceanStore project and EMC provided funding for the research few years ago.

So, here you are, The OceanStore Project

1 Comment

Tuesday, November 25th, 2008...6:56 am

Pondering Over The Next Big Thing

The Next Big Thing will come soon. It’s not here yet but it’s close.

Let’s consider symptoms:

– it was growing number of Web 1.0 users who read the web. Also there was small group of content authors who published stuff. Actually these numbers constantly keep growing even now. Less developed countries keep joining a club.

Web 2.0 has come. Readers got new skills and started content contribution. This happen due to such services as YouTube, Flickr and others. Basic idea is moving “off-line activties” to online ones: it started with searching for information in Google instead of regular library and shopping on eBay instead of regular stores. It countinued with photo and video sharing, one map usage, shopping, etc. Everything around you is moving and becomes virtual.

This era is a time of CONTENT. It brings content online. Also it brings your content from your desktop -> online, always available and portable one.

Those Web 2.0 providers are cool who managed move some kind of my content on-line and made it useful. Flash video perfecly works for video assets, and it’s quety easy to implement pattern “publish once, read as much as you want”. Basically we don’t edit videos on our desks. Images too.

Google and other competitors try hard to move documents online, but they are not there yet.

Guys from www.scribd.com are on the right track, but they don’t swim against stream and also use “publish once…” model. So, let’s wait for appropriate tool for docs, maybe Adobe with the help of Flash will give it to us. Btw, as time shows Flash(Silverlight?) is a good technology to use to move some stuff from desktop machine - online. Our computers become thin clients as the time goes.

Content can be moved online also from our cells, not only desks. QIK is an example. They let you translate video stream from your cell directly to web site. They keep your archive of translated videos.

Interesting, what determins a nature of these transformations? Basically it’s technology, you can say. It’s a broad topic. I think I’ll write a separate post on it.

The Next Big Thing era .

Yeah, you can start enumerate a number of already existing services proving that I’m wrong and we already have it.

Basically I would, If I would wrote its name in low case. So, let’s talk about It.

One of remarkable pioneers here is Facebook. Why is it so successful? Yeah, it’s not a chemistry and there is no exact formula for that. Initially, it was an equation with man unknowns, the matter of time and place.

But it all began with The Model. Yeah, the idea was defined by students. Recommend for everyone to google it and read. But look how it works:

The first step is to make connections and create a skeleton. Then, you can grow a meat. It’s very interesting point here, but let’s make a short break and talk about sharing services. Btw, how many dozens of sharing <put you label here> services are present in our world? How many of them have you ever used? Hum…not that match.

- But why?

- Basically, because I’m doing my stuff using H software on Y OS, and to share a file with collegue I need to go to our corporate portal, but when I’m at home….

Yeah, we need to understand the cause that makes people share stuff and why they pick one tool or another.

The following leads to it:

* personal activities: here they use their address book or contact list and tools around close enough to *send* information to recepient.

* work activities: business processes. Toolset is usually complex, you don’t like your corporate app as it is old, ugly and slow, yeah, that’s why you prefer using emails.

In both cases you look at your contacts, pick a necessary one, and send info to recipient. That’s it. So, Facebook is your contact list, that doesn’t make sense without your friends sharing vacation photos and other stuff. You can share anything, it’s a matter of external application available.

Truly, they did a great job in gathering user base and now you don’t need to hold a long list of passwords to different sites and frequently use “remind me passw.” link anymore.

But the clear model was first - just get in touch with our class-mates, collegues, etc.

So, the idea is not new - The Next Big Thing will be Web OS. When all your data online, all services online,all your friends online, and you need portable devices and unlimited bandwidth to use it.The revolution is comming, we already can see Amazon, Microsoft and Google holding their weapons not so far.

22 October 2008 | 11:56

Multi-Dimensional Analog Literals in C++

funny one - http://www.xs4all.nl/~weegen/eelis/analogliterals.xhtml

Monday, April 14th, 2008 at 3:05 am.

Об архитектуре и строительстве.

Мы - представители одной из самых молодых профессий. Мы как строители и зодчие, которые каждый день кирпич за кирпичиком возводят новые сооружения. Некоторые строения иногда сносят - они уже свой век отжили-отсулжили.

В отличии от сроительства в программировании “сносить” приходится довольно часто. Здесь “здания” могут стремительно еволюционировать и достраиваться очень даже в непредстказуемых местах (зависит от степени прогибания под заказчика :) Также здесь “здания” могут стремительно рухнуть, не постояв и нескольких месяцев. Причины могут быть разные - то ли из-за фазы луны:), или из-за технического несовершенства, или из-за несовершенства управленцев.

Давайте опустим первое и последние, и поговорим о технических аспектах.

Программный продукт еще можно сравнить с живым существом. Оно растет и развивается, со временем.
И очень важно тратить определенное время-усилия на разработку архитектуры, если вы хотите чтобы продукт смог вырасти из стадии эмбриона до непоколибимого титана. Не важно, даже если вы не пишите проект с нуля, а присоединились к нему на определнной стадии - все равно занимайтесь
Также может случиться, что в вашей компании команда архитекторов сидит высоко в облаках, медитируя на uml диаграммы ну оочень высокого уровня абстракции, и им нет дела до того, что какой-то кусок в вашей подсистеме ну ооочень корявый, и вы 70% своей рабочей жизни тратите на сооружение заплаток.
Архитекторы тоже должны писать код. Но это уже другая история…

Приминение ООП уже никого не пугает/удивляет. Правда, даже в таких ООП-шных языках как Java иногда можно встретить кучу классов с открытыми свойствами - как C-шные структуры, и кучу классов-менеджеров (SomeEntityManager,etc :) с методами - как замена С-шным функциям.
Окей, даже ознакомившись с пачкой шаблонов проектирования, и прочитав Александревску от корки до корки, можно напедалить кучу, в принципе, вменяемого кода, и вместе с этим офигенно усложнить архитектуру.

Хорошо, скажете вы, это все понятно, и что нужно делать?

- Не бойтесь создавать/менять архитектуру в целом:
При стандартном раскладе у вас в проекте - продукт побит на какие-то части(модули), если же продается-развертывается монолитная система, это будут подсистеммы. Хорошо, когда эти модули выполняют совсем различные задачи и их можно по отдельности легко менять (если у вас всего этого еще нет, возмите чистый листочек, ручку, и подумайте как нарезать такие модули из существующей системы). Даже в обычном приложении можно стремиться к shared nothing architecture со строительных блоков которых можно будет собирать что угодно.В идеале, должен будет появиться boot-loader process, который будет регистриоровать модули и дергать за их ниточки, и набор библиотек или программ-модулей.

Хорошо, теперь имея модули:
- продумайте архитектуру внутри модуля и его наружные интерфейсы:
Что эти имеют общего в целом? какие у них общие интерфейсы, life cycles?

- необходимо создать общий интерфейс для модулей.
Посмотрите на составляющие модуля. Конечно, внутри модуля может быть реализованно что угодно,в зависимости от прикладной области. Но постарайтесь определить компоненты одного ранга, важности и сгруппировать их каким-либо образом(паттерны, или карандаш с ручкой вам в помощь).

Вот так, в упрощенном варианте, применив эти 2 шага, вы сможете выделить кучу отдельных строительных блоков.
Вы сможете лучше понять свой продукт и направления его развития. При поступлении нового запроса на разработку функционала вы сможете сказать, почесав за ухом - мы это сделаем в виде отдельного модуля, или компоненты.

Зачем это все нужно?
Да затем что:
- Ваш продукт станет стройнее, вернувшись через пол года к какому-то куску кода, вам не нужно будет перелопачивать 50-60 классов, чтобы понять где и что зарыто, вы будете серфить одну из 4-5 подсистемм, которая будет состоять из 10 классов, что намного проще. Вы ПОБЕДИТЕ в борьбе со
- Цена-усилия на разработку уменьшатся, ведь для исправления/разработки какой-то фичи можно будет доверить не только старожилу, но и новому учаснику в команде,
которому не нужно будет много знаний об архитектуре проекта чтобы приступить к работе.
- Цена-усилия на тестирование уменьшатся, ведь внося изменения в какой-то отдельный модуль, уже будет сложнее все поламать, будет меньше сковзных
зависимостей и ситуаций, когда меняешь в одном месте, а вылазит в другом.

В завершение, приведу последнюю аллегорию - архитектура для продукта, как физическая форма для спортсмена. В плохой форме спортсмен не сможет быстро бегать, быть выносливым к травмам, и уж тем более наращивать силу. Спортсмены достигают хорошей формы посредством тренировок. Вот и мы, хотя бы иногда - должны придирчиво осматривать продукт, оценивая его физическую форму.

Tuesday, April 1st, 2008 at 9:00 am.

Some Details of Flickr DB Architecture

Here is the article that describes how Flickr uses MySQL for its needs.

Thursday, March 13th, 2008 at 3:23 am.

English-Russian Translation using Google Talk

For a long time I’ve been using Lingvo on Windows, despite the fact that it’s not able to translate some words from modern english.

On Linux it was Google Translate. Though, it’s boring sometimes to do the round trip: Open new tab in FF -> go to google transate -> pick necessary translation direction -> translate -> return to your work.

Thanks God, recently I surfed and found Google Talk Translation Bots post.

Now I have two guys sitting in my contact list - en2ru@bot.talk.google.com and ru2en@bot.talk.google.com

So, whenever I want to translate something I can speak to them either in Gmail or GTalk client.

Wednesday, March 12th, 2008 at 4:17 am.

Poster of Http Headers Flow

Discovered a nice poster here

Http Headers Flow

Friday, March 7th, 2008 at 11:28 am.

Аналоги Windows-программ в Ubuntu

Встретил прикольную довольно большую таблицу соответсвтий здесь

February 27th, 2008

Амазон как платформа - интервью с Amazon’s CTO Werner Vogels

Многие слышали о технологиях которые используют Google, Microsoft, Yahoo у себя внутри.
В основном, это благодаря количеству усилий, которые они тратят на популяризацию себя.
Многие другие популярные ресурсы также имеют свои технологии, разработанные in-house, некоторые со временем выпускают их в мир(как например LiveJournal’s Memcached)

Одним из таких интересных ресурсов является Amazon.com. Недавно я встретил интервью с Werner Vogels на acmqueue.com - где описывается их путь от книжной лавки к компании которая является драйвером инноваций(публичные сервисы S3, EC2,etc)

Существует два пути разработки архитектуры продуктов: при использовании первого - создается простой сервис который будет работать на одной-двух машинах.Если такой сервис выстреливает - начинается усиленная работа над масштабированием узких мест.
Второй путь - изначально закладывать требования масштабирования при разработке. Это, конечно требует некоторого опыта, но потом будет легче.

Вернер, конечно, рассказывает о вещах которые ни для кого теперь не являются секретом, но из его интервью можно выделить:

  • При разработке масштабируемых систем важно придерживаться сервис-ориентированной архитектуры, это значительно все упрощает.
  • Также важно чтобы каждая часть продукта была децентрализованной - режем продукт на части, каждую часть закрываем в черный ящик, в черном ящике пробиваем дырки - веб-интерфейсы - методы доступа к этой части. Теперь каждая часть может жить своей личной жизнью и развиваться без проблемм - ну, почти без проблемм :). Таким образом мы получаем loosely coupled services model
  • Очень хорошо сформулировал, что при разработке важно не создавать технологию ради технологии, а создавать технологию чтобы помочь заказчику. Ведь технология без пользователей бесполезна
  • У них большая экспертиза в отслеживании поведения пользователя. При вводе новых фич они отслеживают фидбек через изменения в поведении пользователей - некоторые фичи люди начинают исопльзовать сразу же, другие отвергают сразу же, к некоторым необходимо им привыкнуть - такие случаи отслеживать труднее… В лубом случае - для он-лайн сервиса мониторинг действий пользователя, профайлинг своей системы при этом - очень хорошая идея.

В заключение, приведу список challenges которые привел Вернер - он мне понравился полнотой описания:
larger data sets, faster update rates, more requests, more services, tighter SLAs (service-level agreements), more failures, more latency challenges, more service interdependencies, more developers, more documentation, more programs, more servers, more networks, more data centers.

Полная версия статьи здесь

February 24th, 2008

Inside MySQL

Majority of us knows that databases are read-optimized products and most of them are not optimized for writes.

In this post I would like to describe what’s going on under the hood of mysql that can help us to find origins of some well-known rules.

So, let’s start with MySQL MyIsam table:

- MyIsam tables caches only key data structures in memory and let OS caching mechanism to cope with data. Truly, particularly Linux is good at it at some point(Also MyIsam has read-ahead buffer for data). So, if insert/update query updates key data structure, MyIsam will flush key data on the disk. It slows down a whole process. To avoid this you can tweak mysql’s configuration to delay key writes.

- MyIsam comes with a very simple locking mechanism - it’s its table-level locking. So, when user writes data, another one won’t be able to read any row till the end of transaction. Okay, you can say, if insert time is relatively short, we can wait. So, let us see how MyIsam inserts record into a table: Firstly, it scans a table area and tries to find previously deleted row and re-use its room. If no deleted row was found, it appends data to the end of the table. So, if the space is not as important as execution time, you can speed it up telling database to append data to the end of table immediately and disable scans.

For the bulk data management, it’s good to create a table without indices first and import data. Once the import process is finished you can create indices. If you need to append large amount of data to production machine, you can do hot replacement: prepare such table and send signal to application to use another table instead of old one(the type of signal depends on your application architecture: IPC, record in database with polling on application side,etc)

February 12th, 2008

Web-based Grid Computing

The article at codeproject describes framework that uses client-side Silverpoint CLR to implement web-based volunteer grid computing. Not a cool one, but the idea’s interesting.

Taking into account dramatic grouth of AJAX popularity and its adoption by a community, the paradigm shift towards grid-computing-in-the-browser is quite possible.

February 12th, 2008

Yahoo! launches 4,000 processor supercomputer availble for researchers

It’s a cool platform for distributed computing and research.

Just check out the numbers:

approximately 4,000 processors, three terabytes of memory, 1.5 petabytes of disks, peak performance of more than 27 trillion calculations per second (27 teraflop).


February 12th, 2008

Machine Architecture: Things Your Programming Language Never Told You (by Herb Sutter)

On September 19, 2007 Heb Sutter did a presentation on a subject at MS.

Snippet from description:

High-level languages insulate the programmer from the machine. That’s a wonderful thing — except when it obscures the answers to the fundamental questions of “What does the program do?” and “How much does it cost?”

The C++/C#/Java programmer is less insulated than most, and still we find that programmers are consistently surprised at what simple code actually does and how expensive it can be — not because of any complexity of a language, but because of being unaware of the complexity of the machine on which the program actually runs.

This talk examines the “real meanings” and “true costs” of the code we write…

Video of the presentation at google video:

You can download presentation here

February 12th, 2008

Desktop Cube on Ubuntu Gutsy

Almost everyone posted news on Ubuntu Gutsy. New enhanced desktop, flash support in firefox and etc.
I decided to give it a try, and… spent a lot of time playing with cube, visual effects and so on. Yeah, it’s fancy but eventually I’ll switch it off and get back to work ;). IMHO the most useful thing is native nvidia-glx out-of-the-box support and wireless networking(the same restricted drivers as on 7.04). I didn’t try it on 7.04 since I had handmade kernel and drivers
to try this tasy thing you need to install config utility first:

apt-get install compizconfig-settings-manager

See nice demo on youtube

you can also read this detailed tutorial Rotate the cube
or press
CTRL + ALT + drag LEFT-mouse pointer on the taskbar or desktop surface.

Task switcher
I like the “Ring Switch” plugin a lot. It’s under the “Window Management” category (see picture_10e).
Usage: Super + TAB to activate ring task switcher. I believe that the Super key is also called Window key. The ordinary task switcher is still ALT + TAB.
Task overview
Usage: Move the mouse pointer sharply beyond upper, right corner of the screen.
I usually make a rapid mouse movement towards (and slightly beyond) the upper, right corner of screen.

Flat desktop overview
Move from desktop to desktop by pressing ARROW LEFT / RIGHT.
Change opacity / transparency of a window
Usage: ALT + roll the MOUSE WHEEL on the window’s title bar.
I usually point at the titlebar and roll with the middle mouse button (which is a wheel button).
My keyboard has also a wheel button which works similarly.

Maginify (zoom)
Usage: Super key + roll the
MOUSE WHEEL on a window or desktop.
Again, in my case the mouse wheel is the middle mouse button.
Window preview on the taskbar
If you want to see a small window preview in the taskbar, select the “Window Previews” option under “Extras” category in ccsm. See

Move a window (actually this is an ordinary GNOME thing)
Press ALT + drag LEFT mouse button on the window (eg. middle of the window) to move it.

Some fancy effects with basic elements; fire and water !
Start the ccsm and browse to “Effects” category.
Activate eg. the “Cube Gears”, “Water Effects” and “Paint fire on the screen” effects.

“Cube Gears” is visible inside when you rotate the cube. The cube must be partly transparent (ref. step 10d).

“Water Effects” starts and stops by pressing SHIFT + F9 keys.

February 12th, 2008

Материалы с HighLoad.Ru

24 и 25 сентября в Москве прошла конференция посвященная высоконагрузочным системам.

Часть докладов уже доступна на RuTube. Не буду дублировать все доклады, приведу лишь те, что успел просмотреть и мне понравились:

  1. Anatolix рассказал о трудностях с которыми сталкивались в Яндексе при борьбе с высокими нагрузками.
    Большинство проблем в принципе классические в Information Retrieval, +/- специфика архитектуры Яндекса. Мне было интересно послушать некоторые моменты о развитии ресурса - например, как извращались разработчики, когда потоки еще не были реализованы во FreeBSD :)

  2. Тюнинг операционных систем. Дмитрий Лоханский. Толковый доклад, инетересен тем что технический человек постарался рассказать о сложностях на обычном, доступном языке :). Мне понравились идеи монтирования куска оперативной памяти в /tmp директорию для ускорения создания временных таблиц mysql, а также отключение свопирования процессов. ИМХО если было бы больше времени, можно было включить в доклад описание некоторых нюансов из проблемы C10K

February 12th, 2008

Full-Text Search in MySql and the Minimum Indexed Word Length

MySql comes with extremely useful feature full-text search. The minor thing that bored me was the minimum word length that mysql can index to. It was 4 letters by default on my machine.

To change the value to desired one you need to:

  1. set ft_min_word_len variable up in my.ini file
  2. restart mysql
  3. ensure that the change was applied:

    SHOW VARIABLES LIKE ‘ft_min_word_len’

  4. rebuild table indices:

    ALTER TABLE Abc DROP INDEX `word_ind`, ADD FULLTEXT INDEX `word_ind`(`word`);

Detailed instructions could be found here - http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html

February 12th, 2008

To Realize…


To realize the value of ONE YEAR,
ask a student who failed a grade

To realize the value of ONE MONTH,
ask a mother who gave birth to a premature baby.

To realize the value of ONE WEEK,
ask the editor of a weekly newspaper.

To realize the value of ONE HOUR,
ask the lovers who are waiting to meet

To realize the value of ONE MINUTE,
ask a person who missed the train

To realize the value of ONE SECOND,
ask a person who just avoided an accident

To realize the value of ONE MILLISECOND,
ask the person who won a silver medal in the Olympics

February 12th, 2008

Which podcasts to listen to?


Dot Net Rocks


Dr Neil’s Notes

Fly With Me (Joe D’On - pilot in the US)

Fly With Me X (extra bits)

Betty In The Sky With A Suitcase (flight attendant)

Inside the Net (I like the interviews with web 2 startups - Leo Laporte and Amber Macarthur)

Mark Kermode’s film reviews (from Five Live and Simon Mayo at the BBC)



New Scientist Podcast

On The Run With Tablet PC’s

Polymorphic Podcast

Rory Blyth: The Smartest Man In The World

Security Now (pretty opinionated and often flawed - Steve Gibson from GRC with Leo Laporte)

SQL Down Under (particularly like this one :-)

The ASP.NET Podcast with Wally McClure and Paul Glavich

The Chris Pirillo Show

The Movie Blog (US-based with a Canadian stand-up comedian too)

The Voice Of Support (MS PSS)

The Microsoft Developer Show (Nick Randolph)

Source -