<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Yurii Rashkovskii</title>
    
    <link rel="alternate" type="text/html" href="http://www.rashkovskii.com/" />
    <id>tag:typepad.com,2003:weblog-1688716</id>
    <updated>2008-10-23T13:17:39-07:00</updated>
    <subtitle>Weird ideas live here</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <geo:lat>50.25</geo:lat><geo:long>30.43</geo:long><link rel="self" href="http://feeds.feedburner.com/rashkovskiicom" type="application/atom+xml" /><feedburner:emailServiceId>470850</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><feedburner:browserFriendly>Yurii Rashkovskii</feedburner:browserFriendly><entry>
        <title>Politics 2.0 and Why You Shouldn't Care Anyway</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/429998570/politics-20-waves-and-why-you-shouldnt-care-anyway.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/10/politics-20-waves-and-why-you-shouldnt-care-anyway.html" thr:count="1" thr:updated="2008-10-25T09:52:31-07:00" />
        <id>tag:typepad.com,2003:post-57466865</id>
        <published>2008-10-23T13:17:39-07:00</published>
        <updated>2008-10-25T09:52:31-07:00</updated>
        <summary>Warning: you should not really read this. I am completely incompetent in things I am talking about below. Political parties are no fun. Leaving aside a lot of aspects (probably, both positive and negative), one of most important factors for...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Rants" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;div&gt;&lt;span style="font-weight: bold;"&gt;&lt;img alt="John_F._Kennedy,_Nikita_Khruchchev_1961" border="0" class="at-xid-6a00e5501f6a8e8834010535afca69970b selected " src="http://yrashk.typepad.com/.a/6a00e5501f6a8e8834010535afca69970b-320pi" style="margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; float: left;" title="John_F._Kennedy,_Nikita_Khruchchev_1961"&gt;&lt;/img&gt;&#xD;
 &lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Warning&lt;/span&gt;: you should &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; really read this. I am completely incompetent in things I am talking about below. &lt;/div&gt;&lt;br&gt;&lt;div&gt;Political parties are no fun. Leaving aside a lot of aspects (probably, both positive and negative), one of  most important factors for me is that any party is likely to have some set of ideological "beliefs". Say, "restricted abortions, free market, no gay marriage" or "renewable energy investments, progressive tax, affordable healthcare". What really puzzles me is the necessity to choose either one. What a nonsense! I'd rather vote for particular beliefs rather than the whole &lt;span style="font-style: italic;"&gt;platforms&lt;/span&gt;!&lt;/div&gt;&lt;br&gt;&lt;div&gt;That does not mean parties should not exist. They probably should, after all they are just a product of the society. Though in order to let voters make more &lt;span style="font-family: Verdana; line-height: normal; "&gt;deliberate decisions, they shouldn't be able to vote "Party A or Party B", but they rather should vote for or against every current belief promoted by either party.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;Something like...&lt;/span&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;ul&gt;&#xD;
&lt;li&gt;&lt;span style="font-family: Verdana; line-height: normal; "&gt;(Yes/No/Have no idea) Restrict abortions&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="font-family: Verdana; line-height: normal; "&gt;(Yes/No/Have no idea) Invest in renewable energy&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="font-family: Verdana; line-height: normal; "&gt;(Yes/No/Have no idea) Free market&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span&gt;&lt;span style="font-family: Verdana; line-height: normal; "&gt;(Yes/No/Have no idea) No gay marriage&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;...  &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
certainly, without traces to either party. And then we can count popularity of each belief and basing on these numbers there is a chance to build a balanced government consisting of both parties. But it is a kind of &lt;span style="font-weight: bold;"&gt;utopia&lt;/span&gt;, I know. Just a technological view on a way more complex social thing. So do not expect it anytime soon.&lt;/div&gt;&lt;br&gt;&lt;div&gt;I observe an enormous number of people who believe that they should care about these particular elections this Fall. This is the second time I actually see such a high level of civil activism (first time it was in Ukraine 2004).&lt;/div&gt;&lt;br&gt;&lt;div&gt;And &lt;span style="font-weight: bold;"&gt;you&lt;/span&gt; may also strongly believe that it is a Right Thing to act this way, and you even maybelieve that it is your genuine &lt;span style="font-family: Verdana; line-height: normal; "&gt;conviction. Whatever. It isn't really important. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;Lets look at the problem this way: one of the most important things for mere mortals is the economy of their country. A number of countries are experiencing a recession (or should we call it panic? depression?) these days. But hey! Isn't economy &lt;span style="font-weight: bold;"&gt;supposed&lt;/span&gt; to be a boom-bust wave? The length of each sector might be quite long (sometimes decades), I guess. But after all, after each bust boom will come, and having either president or party ruling the country will not impact this huge wave significantly — these party-a to party-b waves are just too short and have a low amplitude to be able to. And yes, there are always exceptions about rules, and that means that there is a small chance to have a higher amplitude presidential wave accidentally.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;img alt="Waves" border="0" class="at-xid-6a00e5501f6a8e8834010535b0cc0c970b " src="http://yrashk.typepad.com/.a/6a00e5501f6a8e8834010535b0cc0c970b-500pi" style="margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; " title="Waves"&gt;&lt;/img&gt;&#xD;
 &lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;So should you care? You can't really affect the bigger boom-bust economy wave, and you can't really increase odds of "exception miracle". But you can wait...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;...&lt;span style="font-weight: bold;"&gt;and &lt;/span&gt;care about tangible things: your family and your community — your close-knit circles. Real politics begin at your front door and your efforts could actually change something.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;span style="font-weight: bold;"&gt;Please&lt;/span&gt; re-read the disclaimer at the beginning of this rant.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;P.S. Sorry for no blogging for more than two months. I am guilty without any doubts.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; line-height: normal;"&gt;P.P.S. I am not even closely eligible to participate in these elections, and don't plan to become eligible anytime soon; this rant is just a consequence of two beers &amp;amp; 1,5 hrs talk on this &amp;amp; other topics with someone in a bar's patio.&lt;/span&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=sCpZM"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=sCpZM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=EphCM"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=EphCM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=2MhVm"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=2MhVm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=m9LBM"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=m9LBM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/429998570" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/10/politics-20-waves-and-why-you-shouldnt-care-anyway.html</feedburner:origLink></entry>
    <entry>
        <title>StrokeDB: what's up?</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/356533137/strokedb-whats.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/08/strokedb-whats.html" thr:count="2" thr:updated="2008-08-07T16:17:01-07:00" />
        <id>tag:typepad.com,2003:post-53782642</id>
        <published>2008-08-05T09:25:29-07:00</published>
        <updated>2008-08-07T16:17:02-07:00</updated>
        <summary>I must confess. We've committed a serious sin. We haven't had a single commit in StrokeDB repository for almost two months. Sorry. So... one may wonder whether StrokeDB is still alive. Well, yes it is. Though we have significant changes...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Databases" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p style="float: left; margin: 0px 10px 0px 0px;"&gt;&#xD;
&lt;img src="http://www.rashkovskii.com/images/2008/08/05/20060824confessional.jpg" border="0"&gt;&lt;/img&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I must confess. We've committed a serious sin. We haven't had a single commit in &lt;a href="http://strokedb.com/"&gt;StrokeDB&lt;/a&gt; &lt;a href="http://github.com/yrashk/strokedb/tree/master"&gt;repository&lt;/a&gt; for almost two months. Sorry. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So... one may wonder whether StrokeDB is still alive. Well, yes it is. Though we have significant changes in our plan and approach. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;As for now, we consider existing StrokeDB as a first prototype — it has both cool things and a lot of crappy code. So most probably the existing version will perish. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;However, we are learning lessons of that awesome development cycle and trying to produce something more clean, both conceptually and code-wise. One of the versions we've started working on, is Oleg's &lt;a href="http://github.com/oleganza/strokedb-core/tree/master"&gt;strokedb-core&lt;/a&gt;, an attempt to minimize StrokeDB's essential core functionality and therefore get a way more modular and simpler thing.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;That said, I am still trying to assemble my thoughts about my initial StrokeDB experience and come out with cures for some problems. That might mean yet another "rewrite" branch I can start anytime soon in order to consolidate my &lt;em&gt;updated&lt;/em&gt; vision.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Another change we're working on is getting rid of our custom storages and usage of more proven things, like &lt;a href="http://tokyocabinet.sourceforge.net/"&gt;TokyoCabinet&lt;/a&gt;. As far as you can understand that leads to elimination of skiplist and therefore less code. Which is pretty good anyway.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So, to recap, our plan is to:&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
 &lt;li&gt;Modularize core&lt;/li&gt;&#xD;
 &lt;li&gt;Consolidate updated data organization vision&lt;/li&gt;&#xD;
 &lt;li&gt;More reliable storage&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Unfortunately, the deadline date is open. We have no idea when it will be done.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I have a bit busy summer and I still can't work full-time on StrokeDB (and will not be able for a substantial period, unfortunately), but be assured, I am definitely not going to throw this stuff away. Neither does &lt;a href="http://oleganza.wordpress.com"&gt;Oleg&lt;/a&gt;. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://github.com/users/follow?target=452"&gt;Stay tuned!&lt;/a&gt; :)&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=dAcIsK"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=dAcIsK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=Qk3qTK"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=Qk3qTK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=3Fnamk"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=3Fnamk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=GFkAKK"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=GFkAKK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/356533137" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/08/strokedb-whats.html</feedburner:origLink></entry>
    <entry>
        <title>Is "save" obsolete?</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/334508077/is-save-obsolet.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/07/is-save-obsolet.html" thr:count="9" thr:updated="2008-11-11T00:44:33-08:00" />
        <id>tag:typepad.com,2003:post-52646166</id>
        <published>2008-07-13T13:49:18-07:00</published>
        <updated>2008-11-11T00:44:34-08:00</updated>
        <summary>Leaving my hangover apart, I want to talk about some recent "realization" I had. I am not sure it is necessarily a good idea, but it might be worth some investigation. So here we go. In those ORMs I know...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Databases" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p style="float: left; margin: 0px 10px 0px 0px;"&gt;&#xD;
&lt;img src="http://yrashk.typepad.com/photos/pics/010.jpg"&gt;&lt;/img&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Leaving my hangover apart, I want to talk about some recent "realization" I had. I am not sure it is necessarily a good idea, but it might be worth some investigation. So here we go.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;In those ORMs I know (I do not pretend to know all of them, and I had an extensive experience only with few of them, mostly in Ruby) your way to operate with your objects' persistency is basically a read-edit-save loop (RESL). There is nothing bad about this way, especially given that you have no built-in versioning in typical relational databases and ORMs.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;But as you may know, we at &lt;a href="http://idbns.com/"&gt;idbns&lt;/a&gt; team are experimenting with some weird ideas and prototypes (like &lt;a href="http://strokedb.com/"&gt;StrokeDB&lt;/a&gt;) and one of the things we definitely love about our approach to data management is a built-in versioning.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;At this moment, StrokeDB implements this RESL thing, too. It is a quite common approach, but it isn't any fun. It does work with versioning pretty well — it just increments document version once you save — nothing really tricky.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;But there is one thing. My own viewpoint that I've developed within past few years is that your persistency mechanism should not let you "separate" your objects from your &lt;a href="http://www.rashkovskii.com/2008/05/we-dont-need-a.html"&gt;programming environment&lt;/a&gt;. So why the hell should I remind my programming environment to persist object's change every time I modify it? Wouldn't it be nice to persist data transparently?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;May be. There is nothing new about this idea, but as far as I understand, there is not much public use of it in the industry.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Let's try to see where will it lead us to. Given we have built-in versioning, every change (like slot's value change) will cause versions change quite frequently, and, what is more important, these versions will be pretty much pointless. You will have a great history of every single change, but you wouldn't be able to say "and here we did that" for any more-than-one-slot update. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Unless you describe it explicitly. What if we'll make a record for every "business operation", something like a document that says:&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;this operation was performed at Jul 13, 2008 04:17AM PST&lt;/li&gt;&#xD;
&lt;li&gt;this operation was "week expenses adjustment"&lt;/li&gt;&#xD;
&lt;li&gt;this operation was performed on document 61fe324e-3e6e-49e8-9427-6ebab7c31ff9&lt;/li&gt;&#xD;
&lt;li&gt;this operation starts at version 164c2a4b-294a-4253-97e7-124cc1e4a1cc and ends at version 9d888a2a-7f69-40ae-83c6-c55262d89d99&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;It seems that having such kind of an explicit records will also allow us to run some kind of smart and safe compaction on a database.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I am not sure about the whole idea, but it still sounds interesting for me. What do &lt;b&gt;you&lt;/b&gt; think?&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=7M0I6J"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=7M0I6J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=Poq9UJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=Poq9UJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=TaRwcj"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=TaRwcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=oAV9uJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=oAV9uJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/334508077" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/07/is-save-obsolet.html</feedburner:origLink></entry>
    <entry>
        <title>I love Vancouver</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/332483354/i-love-vancouve.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/07/i-love-vancouve.html" thr:count="1" thr:updated="2008-07-11T14:18:42-07:00" />
        <id>tag:typepad.com,2003:post-52535820</id>
        <published>2008-07-11T01:07:34-07:00</published>
        <updated>2008-07-13T14:12:05-07:00</updated>
        <summary>That's probably just a matter of being new here, but I am really impressed — it is really a nice and well-balanced city where I do really feel comfortable. Let's see what I will be thinking about it in a...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Travel" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p&gt;That's probably just a matter of being new here, but I am really impressed — it is really a nice and well-balanced city where I do &lt;b&gt;really&lt;/b&gt; feel comfortable. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Let's see what I will be thinking about it in a month ;)&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Seagull decided to support my radio:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=55430" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt; &lt;param name="flashvars" value="intl_lang=en-us&amp;amp;photo_secret=3cd5762043&amp;amp;photo_id=2652271022&amp;amp;show_info_box=true"&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=55430"&gt;&lt;/param&gt; &lt;param name="bgcolor" value="#000000"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=55430" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;amp;photo_secret=3cd5762043&amp;amp;photo_id=2652271022&amp;amp;flickr_show_info_box=true" height="300" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=u3bsHJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=u3bsHJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=9SBizJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=9SBizJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=ADe14j"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=ADe14j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=OPS10J"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=OPS10J" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/332483354" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/07/i-love-vancouve.html</feedburner:origLink></entry>
    <entry>
        <title>Major blog cleanup</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/332483355/major-blog-clea.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/07/major-blog-clea.html" thr:count="1" thr:updated="2008-08-17T11:14:55-07:00" />
        <id>tag:typepad.com,2003:post-52532340</id>
        <published>2008-07-10T22:01:19-07:00</published>
        <updated>2008-08-17T11:14:55-07:00</updated>
        <summary>Hey, I am kind of back from nowhere. This blog is undergoing major cleanup — I will try to re-publish select articles to save some bits of history from 2006 to 2008.</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Weblogs" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p&gt;Hey, I am kind of back from nowhere. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This blog is undergoing major cleanup — I will try to re-publish select articles to save some bits of history from 2006 to 2008.&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=uGQRXJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=uGQRXJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=godGLJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=godGLJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=VS5cnj"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=VS5cnj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=EkxypJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=EkxypJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/332483355" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/07/major-blog-clea.html</feedburner:origLink></entry>
    <entry>
        <title>Oh, by the way, I am in BC</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/332483356/oh-by-the-way-i.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/07/oh-by-the-way-i.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-52532566</id>
        <published>2008-07-07T22:14:00-07:00</published>
        <updated>2008-07-13T14:12:45-07:00</updated>
        <summary>By the way, my time is PST these days and I live in Vancouver’s downtown until September — so if anybody wants to meet — drop me a comment or email.</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Travel" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p&gt;By the way, my time is PST these days and I live in Vancouver’s downtown until September — so if anybody wants to meet — drop me a comment or email.&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=frbCrJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=frbCrJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=KiVqRJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=KiVqRJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=9n839j"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=9n839j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=piaVvJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=piaVvJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/332483356" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/07/oh-by-the-way-i.html</feedburner:origLink></entry>
    <entry>
        <title>We Don't Need a "Database"</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/334497911/we-dont-need-a.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/05/we-dont-need-a.html" thr:count="8" thr:updated="2008-08-23T09:00:14-07:00" />
        <id>tag:typepad.com,2003:post-52647264</id>
        <published>2008-05-16T13:25:00-07:00</published>
        <updated>2008-08-23T09:00:15-07:00</updated>
        <summary>I’ve been trying to formulate what StrokeDB is recently. And here is my summary: StrokeDB is not a database; it is a programming environment on top of Ruby (until we’ll have it ported to other languages). And here are my...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Databases" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Programming" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p&gt;I’ve been trying to formulate what StrokeDB is recently. And here is my summary: StrokeDB is not a database; it is a programming environment on top of Ruby (until we’ll have it ported to other languages). And here are my thoughts about “database” concept.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Do we really need “databases”? Well, I mean, we surely need some toolset to be able to store and retrieve data, but who said we need it in a form of pure datasets to be stored and retrieved? Who said that there should be a database server to interact with? Who said we might need special domain languages designed to manipulate arbitrary data?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;What we really need is a persistence-aware programming environment, aren’t we? We just need to be able to store and retrieve data no matter how its persistence handled internally. There is nothing new about it, actually — MUMPS and GemStone/S (or even PL/SQL) were around for decades. What we really might need is to be able to create your-application-data-domain specific languages without any hassles — since we need to manipulate application’s data, not just any data (like you basically do with SQL).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;It is quite popular in Rails world to say that we need a stupid database, just a kind of storage and let Ruby do the rest. Basically, they have a point. They use RDBMS as a data storage layer and their database is actually smart, because what is really important for data handling is actually implemented in Ruby. It is still usually limited by RDBMS design constraints, though.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;My point is that your data should be as close to your main programming environment as it is possible. Your structures should be as native as it is possible — and they should be handled within the same environment. That’s reminds things like PL/SQL. Basically, PL/SQL is not THAT bad, but the thing with it is that usually you was using not ONLY PL/SQL, but, say, some Java code to interoperate with Oracle database.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Your application itself IS a smart database.&#xD;
So, I’d say we’re in the beginning of the long way “back to the future” — persistence-aware programming environments, not just databases.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Viva smart databases!&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;P.S. I am going to blog about data organization concepts within such environments soon — that’s an interesting topic to talk about and it is surely more concrete than this one :)&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;P.P.S. This article got 17 comments initially, so to not to lose them after my &lt;a href="http://www.rashkovskii.com/2008/07/major-blog-clea.html"&gt;major blog cleanup&lt;/a&gt;, you can enjoy comments at &lt;a href="http://209.85.141.104/search?q=cache:nTEIu8A8vFMJ:rashkovskii.com/articles/2008/5/16/we-don-t-need-a-database&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1"&gt;google's cached version&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=JfSOxJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=JfSOxJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=rIx1VJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=rIx1VJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=YbL3Lj"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=YbL3Lj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=YcHbZJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=YcHbZJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/334497911" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/05/we-dont-need-a.html</feedburner:origLink></entry>
    <entry>
        <title>Top 10 Reasons to Avoid Document Databases FUD</title>
        <link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/rashkovskiicom/~3/332483357/top-10-reasons.html" />
        <link rel="replies" type="text/html" href="http://www.rashkovskii.com/2008/04/top-10-reasons.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-52535334</id>
        <published>2008-04-26T00:44:00-07:00</published>
        <updated>2008-07-13T14:13:54-07:00</updated>
        <summary>This article is written in response to Top 10 Reasons to Avoid the SimpleDB Hype First of all I’d like to note that the below answers are not about SimpleDB but rather to prevent FUD about document-based databases. * Data...</summary>
        <author>
            <name>yrashk</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Databases" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.rashkovskii.com/">&lt;p&gt;This article is written in response to &lt;a href="http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html"&gt;Top 10 Reasons to Avoid the SimpleDB Hype&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;First of all I’d like to note that the below answers are not about SimpleDB but rather to prevent FUD about document-based databases.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Data integrity is not guaranteed.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;This could be the case with SimpleDB, but overall nothing prevents document databases from managing data integrity very well.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Regarding the constraints, there is nothing that prevents defining validations in a document or its related “meta” document (this is pretty much how StrokeDB works — you can define your validations within meta document and they will let your document stay validated)&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;More interesting are the concerns about the conflicts. I’d say that this problem is hardly addressed in a common RDBMS approach. All you usually get is either user’s A or user’s B most recent update — there seems to be no easy way graceful conflict resulution. On the contrary, since document databases approach is rather novel there is certainly enough room to adopt ways to deal with conflicts. For example, with different and configurable algorithms — like merging them slot-by-slot 3-ways, or even some special programmer-defined algorithms. I can hardly imagine how to do this sort of stuff with traditional RDBMS in a relatively easy manner.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Inconsistency will provide a terrible user experience.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;First of all, it should noted that described inconsistencies are also quite possible with distributed RDBMS setups — they too are constrained by a certain lag before the data is going to be propagated through replicas.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The actual problem is not with lag — it is more about leaving documents in a consistent state.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This problem could be easily addressed in any kind of database, either relational or document-based.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Aggregate operations will require more coding.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Again, while this seems to be true for SimpleDB, other document-based databases address this problem pretty well with Views approach (CouchDB, StrokeDB [Views is WIP]) — so you can define any kind of aggregation, even such that are simply not supported by RDBMS.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Complicated reports, and ad hoc queries, will require a lot more coding.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;I’d refer to Views approach once again — it is quite a nice way to produce complicated reports as quickly as well-known RDBMS indexes do.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;“Views” could be viewed as subroutines with a special well-defined API — and we can use these subroutines to index specific “queries” even in runtime. That’s pretty interesting.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Aggregate operations will be much slower if you don’t use an RDBMS.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;This is a dubious statement. First, for the majority of the queries speed is defined by the speed of the index (all that B+ trees stuff). Document-oriented database views are indexed the very same way.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Speaking of those RDBMS “rows” and objects I wouldn’t say they are much different. An Object with key/value pairs slots is definitely a “row” in that sense. So what’s so different about them?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;On the other hand, “real” relational database should actually use aggregating operations (joins) far more frequently than typical document database. Relational database is basically about storing short “facts” with relations between them and using lots of join operations to aggregate synthetic data. That wouldn’t be efficient/easy enough to program though — that is why most of relational database in the “real world” are organized in the form of fairly wide tables.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;And, finally, for the well-done DODBs it is possible to use nice Map-Reduce API to build and incrementally update very complex aggregations.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Data import, export, and backup will be slow and difficult.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;“There are no such tools for key-value data stores, because these products are so new.”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Is lack of maturity a good reason to blame new technologies?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;SimpleDB implementation in particular might have its own flaws in this area — but nothing prevents it from improving things in theory and practice.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;SimpleDB isn’t that fast.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Since this this post I am talking about document databases in general, I’d skip those “internet latency” issues. It’s kinda irrelevant.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Relational databases are scalable, even with massive data sets.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;The main argument here is that “those guys do scale relational database, so they are scalable”. True. They are scalable. But at what cost? “Those guys” were able to do a lot of great stuff utilizing manpower before letting machinery do this back tens years ago. But is it a good excuse to manufacture goods without machinery these days just because it is possible? I doubt it. Throwing man power at a problem is not always the best approach.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;And… you said “relational”? Facebook and others do a lot of denormalization, they don’t ever use JOIN, they’d rather do several consequent requests and build intermediate results on a webserver (when you have 20 times more webservers than DBs it’s obviously good to move some load there). They treat good old MySQL as object storage with very fast B+ tree indexes. Finally, the resulting database is not a relational one. One thousand of MySQLs is just a distributed object storage with simple fast indexes and a bunch of hand-written code in php/ruby/python/whatever around it.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Super-scalability is overrated. Slowing the pace of your product development is even worse.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Super-scalability issue is not really overrated. The problem with the approach of “why not wait and address super-scalability once you’ve created a super product” is that once you will address super-scalability, it will be quite a different product.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The issue with scalability these days is that less scalable applications are quite different from the the ones that are hugely scalable — and that is why writing a scalable application from the scratch is definitely a waste of time and money.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;But what if scaling from SQLite-like backend to 2 datacenters will be quite painless and will not require you to rethink database interactions in your application? With the right database API design it is quite possible. BigTable, Amazon Dynamo, CouchDB, StrokeDB approaches are all about addressing this need.&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;SimpleDB is useful, but only in certain contexts.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Same can be said for relational databases. In the real world, data is not really well structured — it is rather versatile and it’s repsentation depends on point of view. This problem is very well addressed by document databases (and StrokeDB in particular was created in attempts to solve this problem).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;“Amazon SimpleDB, Apache CouchDB, and the Google Datastore API aren’t bad products. But we do them a disservice when we construe them to be replacements for general-purpose databases. Used carefully, they can help your organization. But used indiscriminately, you’ll create a lot more work for your programmers and you’ll make your application perform even worse”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Relational databases are not bad products either. Used carefully, they can help your organization. But used indiscriminately, you’ll create a lot more work for your programmers and you’ll make your application development even more complex.&lt;/p&gt;&#xD;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=okofaJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=okofaJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=KY93KJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=KY93KJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=EBXDjj"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=EBXDjj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/rashkovskiicom?a=vmw4nJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/rashkovskiicom?i=vmw4nJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rashkovskiicom/~4/332483357" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.rashkovskii.com/2008/04/top-10-reasons.html</feedburner:origLink></entry>
 
</feed>
