Oleg Smirnov

Oleg Smirnov

Email:
PGP key ID: 0xD5B206E9

Google+
Reader
Picasa
Last.fm
Amazon
Github
Facebook

Buzz

Teaching:


Mountaineering:

Sierra Nevada, CA, USA
Bernese Oberland, Switzerland
Zermatt, Switzerland
Fany, Tajikistan

Working:

  • Technical Lead at Socialabs (Cyberjaya, Malaysia)
  • Sr. Engineer at Ukrainian Mobile Communications
  • Software Engineer at Materialise
  • Software Engineer at Eldos

Writing (excerpts):

Introducing EDS — Erlang Directory Server with a MongoDB backend [1].

LDAP and its predecessor X.500 can be traced back to the 80s. Yet ``the asteroid to kill this dinosaur is still in orbit'' [2]. LDAP is a vital part of any directory: an identity management, a contact management and a single sign-on to name a few.

EDS features:

- robust & distributed database as a back-end
- non-blocking server architecture inspired by an article by Serge Aleynikov [3]
- pretty confident LDAP protocol support (Bind, Unbind, Abandon, Search, Add, Modify, Delete and ModifyDN)
- LDAP filters, search size limit, attributes subset requests
- RB-tree (actually, two of a kind) to maintain an operations' queue
- major Erlang idioms in server design: independent actors and ``let it crash'' philosophy

Road map:

- access control and security including SASL bind
- CompareRequest support
- ExtendedRequest and extensibleMatch in LDAP filter support

References:

1. https://github.com/master/eds/
2. Lex Manual Page
3. http://www.trapexit.org/Building_a_Non-blocking_TCP_server_using_OTP_principles
3 months ago - (6 comments)
A scalable server needs scalable back-end. Meet good ol' ejabberd, now with MongoDB sidekick. Can be configured globally:

{odbc_server, {mongo, "db.montague.lit", "ejabberd", "", ""}}.

Or on a per-host basis:

{host_config, "montague.lit", [ {odbc_server, {mongo, "db.montague.lit", "ejabberd", "", ""}} ]}.
{host_config, "capulet.lit", [ {odbc_server, {mysql, "db.capulet.lit", "ejabberd", "ejabberd", "v3rOnA"}} ]}.

Requires MongoSQL and eMongo driver. Modules ported & tested so far: auth_odbc, mod_last_odbc, mod_offline_odbc, mod_privacy_odbc, mod_private_odbc, mod_roster_odbc, mod_vcard_odbc. mod_pubsub is coming soon.
4 months ago - (2 comments)

Perhaps we need a better tool for ``current mood'' picker. Widespread drop-down lists are simple inadequate. Could you imagine somebody strolling through the options musing "Am I in ecstasy ... or yet euphoric?"

I suggest the widget should look like a color picker. Letting the user to choose his mood in a quick, intuitive and unconscious way. In the ideal world emotions would even blend like colors.

That requires a psychological ground: a sound taxonomy of emotions and color-to-mood mapping. Quite unsure, but Lüscher's ideas seem to be relevant.
4 months ago - (0 comments)

MongoDB speaks SQL (with heavy MySQL accent). Note it requires my fork of emongo patched for multi-update support. Nested queries aren't supported yet but already shortlisted for TODO. The code is MIT licensed.

> mongosql_conn:fetch(Pool, "insert into tbl1 col1, col2 values ('string', 1);", false).
{updated,1}
> mongosql_conn:fetch(Pool, "select count(*) from tbl1;", false).
{selected,["count(*)"],[{1}]}
4 months ago - (1 comment)
Computer Science meets Philosophy. The Myths of Object-Orientation, presented by James Noble at ECOOP’09, is a post-Marxist analysis that examines object orientation from a number of angles.

"We believe in life, in death, in time, in constructors and destructors and garbage collectors, change and decay in all around we see, in mutable state — because these things, this entropy and interconnectedness, is essential in the physical world. <...> Our myths, our aesthetics, our cultures of programming are built bottom up from enabling features of programming languages. Perhaps these features are incidental, or accidental, but it is our myths that make them essential!"
7 months ago - (5 comments)

This package provides an essential feature to LaTeX that has been missing for too long. It adds a coffee stain to your documents. A lot of time can be saved by printing stains directly on the page rather than adding it manually.
7 months ago - (0 comments)