<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8897543618002127176</id><updated>2011-11-27T16:55:16.877-08:00</updated><title type='text'>Pavel's Software Engineering Log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1654365466091836801</id><published>2009-05-31T13:00:00.004-07:00</published><updated>2009-05-31T13:28:39.471-07:00</updated><title type='text'>Some normalization issues.</title><content type='html'>While shaping out code for the pilot data set analysis I've figured out browsing motifs and plots that normalization to the zero mean and unit of energy failed to produce "proper" results in the next two cases:&lt;br /&gt;[1] when only single value in the sub-series&lt;br /&gt;[2] when all values are the same, i.e. deviation = 0&lt;br /&gt;which subsequently lead to some weird patterns.&lt;br /&gt;&lt;br /&gt;Fixed!&lt;br /&gt;&lt;br /&gt;Also still a bit confused by appearance of some "interesting" motifs like here:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SiLn5hCNuSI/AAAAAAAAAhU/hJz48SC15TY/s1600-h/screen-02.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SiLn5hCNuSI/AAAAAAAAAhU/hJz48SC15TY/s400/screen-02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5342087083321047330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The raw values look a bit unaligned to me, last symbol of motif is "c" for both, but this "c" in the red trajectory is less than "a" on blue. But I guess it's all about scale.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1654365466091836801?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1654365466091836801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1654365466091836801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1654365466091836801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1654365466091836801'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/05/some-normalization-issues.html' title='Some normalization issues.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SiLn5hCNuSI/AAAAAAAAAhU/hJz48SC15TY/s72-c/screen-02.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8491499441794935019</id><published>2009-05-30T20:57:00.004-07:00</published><updated>2009-05-30T21:06:32.472-07:00</updated><title type='text'>Pilot data set.</title><content type='html'>I've made plots of pilot data&lt;br /&gt;&lt;table border="0"&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;    &lt;td&gt;raw&lt;br&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SiIAwEMs2iI/AAAAAAAAAhE/TaOmIyMBzBU/s1600-h/Pilot.png"&gt;&lt;img style="cursor: pointer; width: 213px; height: 400px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SiIAwEMs2iI/AAAAAAAAAhE/TaOmIyMBzBU/s400/Pilot.png" alt="" id="BLOGGER_PHOTO_ID_5341832933775563298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;    &lt;td&gt;and Z-normalized&lt;br&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SiIA7NdWtZI/AAAAAAAAAhM/OTgQwD0C1o4/s1600-h/PilotNorm.png"&gt;&lt;img style="cursor: pointer; width: 213px; height: 400px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SiIA7NdWtZI/AAAAAAAAAhM/OTgQwD0C1o4/s400/PilotNorm.png" alt="" id="BLOGGER_PHOTO_ID_5341833125239895442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;The PDF versions are here: &lt;a href="http://seninp.googlepages.com/Pilot.pdf"&gt;The raw&lt;/a&gt; and &lt;a href="http://seninp.googlepages.com/PilotNorm.pdf"&gt;normalized&lt;/a&gt; data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8491499441794935019?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8491499441794935019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8491499441794935019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8491499441794935019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8491499441794935019'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/05/pilot-data-set.html' title='Pilot data set.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SiIAwEMs2iI/AAAAAAAAAhE/TaOmIyMBzBU/s72-c/Pilot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2946518295208540225</id><published>2009-05-28T09:53:00.004-07:00</published><updated>2009-05-28T10:04:54.425-07:00</updated><title type='text'>Working on the Pilot data set.</title><content type='html'>Aiming the dissertation thesis proposal I'm working on the Trajectory code right now. The main change here is that the data comes now from the single project and categorized by users instead of simply navigating "anonymous" streams before. This change in the analysis flow pushed me to change a database schema and it looks now as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/Sh7CirZvnQI/AAAAAAAAAg8/-a6G8fQQygk/s1600-h/new_schema.gif"&gt;&lt;img style="cursor: pointer; width: 236px; height: 400px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/Sh7CirZvnQI/AAAAAAAAAg8/-a6G8fQQygk/s400/new_schema.gif" alt="" id="BLOGGER_PHOTO_ID_5340920109130030338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Also, changes in schema and analysis forced me to rewrite bunch of the iBATIS queries, the coolest query so far is like that:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;SELECT sm.id AS motif_id, sm.substring AS motif, sme.id AS entry_id,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;(SELECT COUNT(*) FROM sax_motif_offset&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;JOIN sax_motif_entry ON sax_motif_offset.sax_motif_entry = sax_motif_entry.id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;JOIN sax_motif ON sax_motif.id = sax_motif_entry.sax_motif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;WHERE sax_motif.id = motif_id) AS entry_frequency&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;FROM sax_motif sm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;JOIN sax_motif_entry sme ON sme.sax_motif=sm.id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;JOIN chart ON chart.id = sme.chart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;WHERE sm.sax_index = #value#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;GROUP BY motif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;HAVING entry_frequency &gt; 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;ORDER BY entry_frequency DESC;&lt;/span&gt;&lt;br /&gt;and retrieves all motifs for the specific index sorted by frequency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2946518295208540225?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2946518295208540225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2946518295208540225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2946518295208540225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2946518295208540225'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/05/working-on-pilot-data-set.html' title='Working on the Pilot data set.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/Sh7CirZvnQI/AAAAAAAAAg8/-a6G8fQQygk/s72-c/new_schema.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7159207321413827853</id><published>2009-05-11T21:55:00.003-07:00</published><updated>2009-05-11T21:58:32.134-07:00</updated><title type='text'>litreview: almost there</title><content type='html'>I've finished incorporating Philip's suggestion and syntax fixes (thank you!) into my litreview and the last thing left is the bibtex formatted bibliography which for some reasons getting misformatted by TEX.&lt;br /&gt;The litreview pre-final draft is here: &lt;a href="http://seninp.googlepages.com/trajectory-litreview-draft.pdf"&gt;litreview draft&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7159207321413827853?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7159207321413827853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7159207321413827853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7159207321413827853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7159207321413827853'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/05/litreview-almost-there.html' title='litreview: almost there'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2419349447841441414</id><published>2009-05-04T15:14:00.002-07:00</published><updated>2009-05-04T15:38:48.373-07:00</updated><title type='text'>Literature review draft finished.</title><content type='html'>I've spent last week working on the literature review. Finished the final draft and submitted it for the review.&lt;br /&gt;While reviewing SAX papers I've got ideas and answers for the algorithmic questions I've hit coding my implementation (concerning the normalization and distribution issues). This week I'm going to embed this special cases into my code and get back on track with the Trajectory software.&lt;br /&gt;Meanwhile I'm transitioning in writing from literature review to thesis proposal. Looks doable (-:.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2419349447841441414?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2419349447841441414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2419349447841441414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2419349447841441414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2419349447841441414'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/05/literature-review-draft-finished.html' title='Literature review draft finished.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-360088354326645618</id><published>2009-04-27T07:51:00.002-07:00</published><updated>2009-04-27T07:54:25.844-07:00</updated><title type='text'>First draft of litreview.</title><content type='html'>Last week spent reading and writing literature review. I think that I've put most of the stuff I wanted into the writing and just need to "refactor" the writing unifying all those math terms and making smooth transitions between chapters. Thinking of writing a short conclusion section too.&lt;br /&gt;&lt;a href="http://seninp.googlepages.com/trajectory-litreview-draft.pdf"&gt;linky&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-360088354326645618?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/360088354326645618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=360088354326645618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/360088354326645618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/360088354326645618'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/04/first-draft-of-litreview.html' title='First draft of litreview.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1136370560024430118</id><published>2009-04-20T14:46:00.005-07:00</published><updated>2009-04-20T15:00:27.877-07:00</updated><title type='text'>Working on the literature review and digging some interesting stuff.</title><content type='html'>I'm keeping up with the last week plan and &lt;a href="http://seninp.googlepages.com/trajectory-litreview-draft.pdf"&gt;here is the Sunday evening draft&lt;/a&gt; of my literature review, it's not proofreaded or wrapped nicely, but bears all ideas I want to put in so far. I'm a little stuck on the &lt;a href="http://openlibrary.org/b/OL3169743M/Time-warps%2C-string-edits%2C-and-macromolecules"&gt;lower bounding of distances&lt;/a&gt;, but will get over in couple days hoping to put together this stuff with walk through the time-series decomposition techniques by the beginning of the next week. Aiming the first full draft by the next Monday.&lt;br /&gt;&lt;br /&gt;As per findings, checkout following plot and my previous thoughts about the Hackydatat distribution. After all looks pretty similar in some sense, but I've never read &lt;a href="http://portal.acm.org/citation.cfm?id=1285965"&gt;this article&lt;/a&gt; before.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/Sezu4Ucm3GI/AAAAAAAAAgc/BxL2Eop5OYE/s1600-h/sax.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/Sezu4Ucm3GI/AAAAAAAAAgc/BxL2Eop5OYE/s400/sax.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5326895110601235554" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1136370560024430118?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1136370560024430118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1136370560024430118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1136370560024430118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1136370560024430118'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/04/working-on-literature-review-and.html' title='Working on the literature review and digging some interesting stuff.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/Sezu4Ucm3GI/AAAAAAAAAgc/BxL2Eop5OYE/s72-c/sax.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3619989641000906858</id><published>2009-04-13T16:52:00.002-07:00</published><updated>2009-04-13T18:08:35.174-07:00</updated><title type='text'>Started literature review.</title><content type='html'>I've spent about a week working on the work stuff. I was finishing code for the annual review which happened last Thursday and was pretty favorable. So, very little was done on Trajectory browser or any writing, but starting from last Friday I'm working on the literature review. &lt;br /&gt;My CSDL techreports project for this is ../09-08/.. and this is the plan of the topics for review:&lt;br /&gt;&lt;br /&gt;1. Introduction&lt;br /&gt;&lt;br /&gt;2. Time-series similarity measurements&lt;br /&gt;2.1 Euclidean distance&lt;br /&gt;2.2. Normalization of time-series&lt;br /&gt;2.3. Transformation rules (smoothening, scales and shifts)&lt;br /&gt;2.4. Dynamic Time Warping (DTW)&lt;br /&gt;2.5. Longest Common Subsequence (LCS)&lt;br /&gt;&lt;br /&gt;3. Dimentionality reduction (time-series decomposition) and indexing&lt;br /&gt;3.1. Distance bounding (or why it works)&lt;br /&gt;3.2. Discrete Fourier Transform (DFT)&lt;br /&gt;3.3. Discrete Wavelet Transform (DWT)&lt;br /&gt;3.4. Chebyshev Polynomials (CP)&lt;br /&gt;3.5. Singular Value decomposition (SVD)&lt;br /&gt;3.6. Piecewise Aggregate Approximation (PAA)&lt;br /&gt;3.7. Adaptive Piecewise Constant Approximation (APCA)&lt;br /&gt;3.8. Symbolic Aggregate approXimation (SAX)&lt;br /&gt;&lt;br /&gt;Today I'm finishing drafting "Introduction" and "Time-series normalization" and will continue with distances next.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3619989641000906858?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3619989641000906858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3619989641000906858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3619989641000906858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3619989641000906858'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/04/started-literature-review.html' title='Started literature review.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2655919855284741459</id><published>2009-03-30T06:38:00.003-07:00</published><updated>2009-03-30T06:46:22.872-07:00</updated><title type='text'>Current build of the Hackystat Trajectory browser.</title><content type='html'>Current build of the Trajectory browser incorporates a new motif representation for missing values with underscores and allows to select various SAX data models (build, universal and normal on the screenshot):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SdDLbjtZetI/AAAAAAAAAgU/OGx2oPo3Bsc/s1600-h/underscore.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SdDLbjtZetI/AAAAAAAAAgU/OGx2oPo3Bsc/s400/underscore.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318974834227116754" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2655919855284741459?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2655919855284741459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2655919855284741459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2655919855284741459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2655919855284741459'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/current-build-of-hackystat-trajectory.html' title='Current build of the Hackystat Trajectory browser.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SdDLbjtZetI/AAAAAAAAAgU/OGx2oPo3Bsc/s72-c/underscore.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6602940421048175510</id><published>2009-03-29T17:46:00.001-07:00</published><updated>2009-03-29T17:48:13.064-07:00</updated><title type='text'>SQL Schema evolution</title><content type='html'>Working on the different cuts schema for the SAX moved me to add a new table to the TrajectoryDB; here it is:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SdAWwTUc2OI/AAAAAAAAAgM/4GuM9jZ9OUU/s1600-h/schema.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SdAWwTUc2OI/AAAAAAAAAgM/4GuM9jZ9OUU/s400/schema.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5318776179000137954" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6602940421048175510?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6602940421048175510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6602940421048175510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6602940421048175510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6602940421048175510'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/sql-schema-evolution.html' title='SQL Schema evolution'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SdAWwTUc2OI/AAAAAAAAAgM/4GuM9jZ9OUU/s72-c/schema.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-589633557164772995</id><published>2009-03-29T04:12:00.005-07:00</published><updated>2009-03-29T04:17:48.442-07:00</updated><title type='text'>Universal cuts for telemetry</title><content type='html'>Just coded a little function which is taking an array of data and deriving the number of cuts desired. It's purely based on the data, not on the distribution parameters: it simply counts how many data points will be in the each of the bins and makes these numbers equal. This is how cuts are looking for 5 letters alphabet:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/Sc9YYhi0i8I/AAAAAAAAAgE/hkdQiTCd_Y4/s1600-h/universal_cuts.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/Sc9YYhi0i8I/AAAAAAAAAgE/hkdQiTCd_Y4/s400/universal_cuts.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318566863292369858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From 21501 data values about 4200 ended up in each of the bins.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-589633557164772995?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/589633557164772995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=589633557164772995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/589633557164772995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/589633557164772995'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/universal-cuts-for-telemetry.html' title='Universal cuts for telemetry'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/Sc9YYhi0i8I/AAAAAAAAAgE/hkdQiTCd_Y4/s72-c/universal_cuts.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2787308909227701718</id><published>2009-03-28T09:02:00.004-07:00</published><updated>2009-03-28T13:02:26.263-07:00</updated><title type='text'>Picture of the data values distribution in 9 telemetry streams</title><content type='html'>For each of 9 streams I have in my local DB I've plotted three plots for the raw data (left three) and three plots for the normal data (right three).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/Sc5Ki678i4I/AAAAAAAAAf0/KluM8F28s6Y/s1600-h/dist_test2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 292px; height: 400px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/Sc5Ki678i4I/AAAAAAAAAf0/KluM8F28s6Y/s400/dist_test2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318270173767830402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I do think that it is really helpful to overlook these plots in order to design SAX cut intervals specific for the Hackystat-type data.&lt;br /&gt;&lt;br /&gt;And this is the illustration of the problem I'm working on: &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/Sc6B86MukzI/AAAAAAAAAf8/Z8qSpL7dOMw/s1600-h/phenomena_5alp.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/Sc6B86MukzI/AAAAAAAAAf8/Z8qSpL7dOMw/s400/phenomena_5alp.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5318331093385909042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the motif finder picked the values of the 1,2 and 29! as the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2787308909227701718?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2787308909227701718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2787308909227701718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2787308909227701718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2787308909227701718'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/picture-of-data-values-distribution-in.html' title='Picture of the data values distribution in 9 telemetry streams'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/Sc5Ki678i4I/AAAAAAAAAf0/KluM8F28s6Y/s72-c/dist_test2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5644300692318069762</id><published>2009-03-26T19:02:00.002-07:00</published><updated>2009-03-26T19:11:35.533-07:00</updated><title type='text'>Hackystat telemetry data distribution</title><content type='html'>I've pulled all of the data available in my local database and plotted normal QQ plots for 9 types of telemetry to get an idea about underlying distribution: and I have no answer right now... it's not normal though&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/Scw0BrRCQdI/AAAAAAAAAfU/t8UFnny2_o8/s1600-h/dist_test2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/Scw0BrRCQdI/AAAAAAAAAfU/t8UFnny2_o8/s400/dist_test2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5317682463416402386" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5644300692318069762?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5644300692318069762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5644300692318069762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5644300692318069762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5644300692318069762'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/hackystat-telemetry-data-distribution.html' title='Hackystat telemetry data distribution'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/Scw0BrRCQdI/AAAAAAAAAfU/t8UFnny2_o8/s72-c/dist_test2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1624479129858670967</id><published>2009-03-25T15:55:00.002-07:00</published><updated>2009-03-25T16:02:01.858-07:00</updated><title type='text'>Latest improvements in the index browser tool.</title><content type='html'>Latest tool improvements:&lt;br /&gt;&lt;br /&gt;- user can browse all built indexes;&lt;br /&gt;- regular values chart is displayed along with normal chart, will probably change layout showing both together. *** I have used -1.0 value for N/A data, this is why it's so messed up. Need to solve this issue ASAP. ***&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/Scq2oO6LjvI/AAAAAAAAAfM/dzrJDs86iqk/s1600-h/Untitled-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/Scq2oO6LjvI/AAAAAAAAAfM/dzrJDs86iqk/s400/Untitled-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5317263112377437938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next thing on the list is to see the distributions of the data and change SAX cutoff intervals favoring Hackystat-type data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1624479129858670967?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1624479129858670967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1624479129858670967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1624479129858670967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1624479129858670967'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/latest-improvements-in-index-browser.html' title='Latest improvements in the index browser tool.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/Scq2oO6LjvI/AAAAAAAAAfM/dzrJDs86iqk/s72-c/Untitled-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7937092045414002327</id><published>2009-03-23T09:50:00.005-07:00</published><updated>2009-03-23T09:53:33.538-07:00</updated><title type='text'>First working build.</title><content type='html'>Just managed to build and run the Trajectory search tool. Checkout some screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/Sce-U8dn5II/AAAAAAAAAfE/V2E3Hgj8HWA/s1600-h/analysis_metric.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/Sce-U8dn5II/AAAAAAAAAfE/V2E3Hgj8HWA/s400/analysis_metric.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5316427152171197570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/Sce-R9hqEvI/AAAAAAAAAe8/5WFny9D1Z28/s1600-h/filemetrics_bump.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/Sce-R9hqEvI/AAAAAAAAAe8/5WFny9D1Z28/s400/filemetrics_bump.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5316427100916945650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/Sce-O_pu_MI/AAAAAAAAAe0/aYy_ByVC6PA/s1600-h/sensor_unit_test.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/Sce-O_pu_MI/AAAAAAAAAe0/aYy_ByVC6PA/s400/sensor_unit_test.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5316427049948085442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll post more detailed description later, have to run into the "cubicles area".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7937092045414002327?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7937092045414002327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7937092045414002327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7937092045414002327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7937092045414002327'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/first-working-build.html' title='First working build.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/Sce-U8dn5II/AAAAAAAAAfE/V2E3Hgj8HWA/s72-c/analysis_metric.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5258883985220845555</id><published>2009-03-22T21:53:00.006-07:00</published><updated>2009-03-22T22:17:13.095-07:00</updated><title type='text'>iBATIS + MySQL + MIGLayout</title><content type='html'>During last week I've finished improving the TrajectoryDB schema and moved from the tricky JDBC connector business to the iBATIS data mapper. DB things become much easier now and this is a schema I'm currently using:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SccWCffUI6I/AAAAAAAAAek/ERfRRq-Vtr4/s1600-h/schema.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 325px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SccWCffUI6I/AAAAAAAAAek/ERfRRq-Vtr4/s400/schema.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5316242117202551714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My current goal is to find out if there are any interesting motifs among the data I have. Using MySQL querying + R scripting turned out to be a quite time-consuming search, so I've ended up hacking a neat GUI tool to conduct the search. Here is a current GUI snapshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SccYWIcLXwI/AAAAAAAAAes/srRHJgmYWaA/s1600-h/screen.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SccYWIcLXwI/AAAAAAAAAes/srRHJgmYWaA/s400/screen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5316244653636017922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For now I can choose particular motif (left top scroll table, frequency is the number of motif occurrences over all charts) and set from the projects/charts (second from the top scroll table at left, showing project, chart and frequency) it was found. I am planning to get all of the selection to be interactively rendered at the right panel using JFreeChart tomorrow. So, how cool is that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5258883985220845555?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5258883985220845555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5258883985220845555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5258883985220845555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5258883985220845555'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/ibatis-mysql-miglayout.html' title='iBATIS + MySQL + MIGLayout'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SccWCffUI6I/AAAAAAAAAek/ERfRRq-Vtr4/s72-c/schema.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8087312957192749389</id><published>2009-03-16T06:44:00.004-07:00</published><updated>2009-03-16T10:02:38.588-07:00</updated><title type='text'>SAX code and TrajectoryDB schema evolution</title><content type='html'>In order to improve the indexing speed and move towards automatic motif discovery I've updated DB schema making it more motif-centric and customized SAX code data structures allowing automatic motif frequency computation.&lt;br /&gt;&lt;br /&gt;Due to the fair amount of failing data retrievals from sensorbase I've decided to create a local chart index and rewrite the telemetry data retrieval code.&lt;br /&gt;&lt;br /&gt;Current db schema:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/Sb5Yvtqi4zI/AAAAAAAAAec/RG1EL4JamqU/s1600-h/db1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 214px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/Sb5Yvtqi4zI/AAAAAAAAAec/RG1EL4JamqU/s400/db1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5313782187078902578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see the &lt;span style="font-weight:bold;"&gt;sax_motif&lt;/span&gt; table is the top-level summary of found motifs. It should be easy to count and sort by the frequency and see DISTINCT projects where the particular motif occurs. Just need to write a code and populate the data now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8087312957192749389?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8087312957192749389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8087312957192749389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8087312957192749389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8087312957192749389'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/blog-post.html' title='SAX code and TrajectoryDB schema evolution'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/Sb5Yvtqi4zI/AAAAAAAAAec/RG1EL4JamqU/s72-c/db1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5330391488243806896</id><published>2009-03-12T11:58:00.003-07:00</published><updated>2009-03-12T12:01:54.809-07:00</updated><title type='text'>The confirmation of valid search</title><content type='html'>The figure depicts the result of unsupervised motif search among all the data available in the local sensorbase. I've run the search with only parameter of length 7 which would correspond a week and this is what I've got:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SblbcMzsgVI/AAAAAAAAAeU/xUZvP5lxZXs/s1600-h/motif01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 265px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SblbcMzsgVI/AAAAAAAAAeU/xUZvP5lxZXs/s400/motif01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312377775492727122" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5330391488243806896?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5330391488243806896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5330391488243806896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5330391488243806896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5330391488243806896'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/confirmation-of-valid-search.html' title='The confirmation of valid search'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SblbcMzsgVI/AAAAAAAAAeU/xUZvP5lxZXs/s72-c/motif01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1273002452666836913</id><published>2009-03-12T06:32:00.007-07:00</published><updated>2009-03-12T06:54:00.576-07:00</updated><title type='text'>The first motif search results</title><content type='html'>Today I was able to index all of the data I currently have locally and there is a screnshot of highest frequences:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SbkPVTE9SHI/AAAAAAAAAd8/lfOGgeVYi9Q/s1600-h/freq.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 203px; height: 400px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SbkPVTE9SHI/AAAAAAAAAd8/lfOGgeVYi9Q/s400/freq.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312294094032947314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've decided to pull more information about a couple of motif entries and there is a result:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SbkP3Ao7g7I/AAAAAAAAAeE/_5jZ0ger75k/s1600-h/result00.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 377px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SbkP3Ao7g7I/AAAAAAAAAeE/_5jZ0ger75k/s400/result00.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312294673199104946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As could be seen, for example, the motif &lt;span style="font-weight:bold;"&gt;`cgcccgi`&lt;/span&gt; was found in projects &lt;span style="font-weight:bold;"&gt;hackystat&lt;/span&gt; at position 23 and &lt;span style="font-weight:bold;"&gt;Default&lt;/span&gt; at position 2945, and motif &lt;span style="font-weight:bold;"&gt;`ccjjcccc`&lt;/span&gt; found at various position in the &lt;span style="font-weight:bold;"&gt;hackystat-sensor-*&lt;/span&gt; projects along with my &lt;span style="font-weight:bold;"&gt;compilers&lt;/span&gt; project at position 105 and so on...&lt;br /&gt;&lt;br /&gt;But, the data distribution is still far away from normal :(&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SbkT0yATR5I/AAAAAAAAAeM/XE-qLoGx5nA/s1600-h/qqplot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SbkT0yATR5I/AAAAAAAAAeM/XE-qLoGx5nA/s400/qqplot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312299032957372306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1273002452666836913?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1273002452666836913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1273002452666836913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1273002452666836913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1273002452666836913'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/first-motif-search-results.html' title='The first motif search results'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SbkPVTE9SHI/AAAAAAAAAd8/lfOGgeVYi9Q/s72-c/freq.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7771936128538579215</id><published>2009-03-12T05:58:00.002-07:00</published><updated>2009-03-12T06:01:14.710-07:00</updated><title type='text'>Sensorbase Index schema evolution</title><content type='html'>The new changes in the Sensorbase IndexDB are following the implementation of SAX indexing, currently schema, IMO, is unoptimized, but looks like it works. Currently I'm getting charts over the WAN from dasha and we'll see if I'll be able to find any "motifs" today. &lt;br /&gt;&lt;br /&gt;Schema:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SbkHcE5tsdI/AAAAAAAAAd0/pvDdt9M54QI/s1600-h/new_schema.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SbkHcE5tsdI/AAAAAAAAAd0/pvDdt9M54QI/s400/new_schema.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312285414393754066" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7771936128538579215?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7771936128538579215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7771936128538579215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7771936128538579215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7771936128538579215'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/sensorbase-index-schema-evolution.html' title='Sensorbase Index schema evolution'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SbkHcE5tsdI/AAAAAAAAAd0/pvDdt9M54QI/s72-c/new_schema.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1932531980265111264</id><published>2009-03-11T05:40:00.007-07:00</published><updated>2009-03-11T07:04:08.340-07:00</updated><title type='text'>SAX based time series motif search primer</title><content type='html'>This post is an illustration of the SAX-based motif search in timeseries. &lt;br /&gt;Let's assume that we are given the next timeseries:(1,1,3,5,8,7,6,2,3,4,3,1,1,5,4,5,2,3,4,6,9,8,5,2,3,4,2,5,3,2,5,6,8,9,0,3,3), the length is 37 points:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SbeyicMhllI/AAAAAAAAAdk/uqbQhDZz9qk/s1600-h/data_raw.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SbeyicMhllI/AAAAAAAAAdk/uqbQhDZz9qk/s400/data_raw.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5311910590260811346" /&gt;&lt;/a&gt;&lt;br /&gt;Now if we run the SAX algorithm using sliding window of size 7, no PAA and alphabet size 6, this is what the resulting substrings matrix looks like:&lt;br /&gt;&lt;br /&gt;[aabdfee, abdfeea, bdfeeab, dfeeabb, ffeabcb, ffbcdca, fbdedaa, bdedaaf, dedaafe, dcaafdf, daafefb, aafefbd, afdfbcd, eceabcf, cdabcef, cabbdff, abbdffc, bbdffca, bdffcab, dffcabb, ffdbbcb, fdabcad, faceafc, bdebfdb, ceafcaf, daebaef, adbadef, cbacdff, bbddffa, bddffab, ddffabb]&lt;br /&gt;&lt;br /&gt;if we compute all pairwise distances over this strings we will find next matches (distance between strings is zero, and the second column indicates substings indexes): &lt;br /&gt;&lt;br /&gt;ffeabcb - ffdbbcb, [4] - [20]&lt;br /&gt;cabbdff - cbacdff, [15] - [27]&lt;br /&gt;&lt;br /&gt;which corresponds to next two motifs:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SbfB2W312iI/AAAAAAAAAds/1vlICaKGy-0/s1600-h/motifs.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SbfB2W312iI/AAAAAAAAAds/1vlICaKGy-0/s400/motifs.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5311927425103682082" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1932531980265111264?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1932531980265111264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1932531980265111264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1932531980265111264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1932531980265111264'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/sax-based-time-series-motif-search.html' title='SAX based time series motif search primer'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SbeyicMhllI/AAAAAAAAAdk/uqbQhDZz9qk/s72-c/data_raw.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8775975340567348845</id><published>2009-03-09T15:33:00.002-07:00</published><updated>2009-03-09T15:47:26.081-07:00</updated><title type='text'>Indexing the Sensorbase and puzzled with the distribution (for now)</title><content type='html'>I'm following the SAX approach for the database indexing and currently pulled some data to run the distribution analysis and this is the current schema for the database I'm using:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SbWZgJQqLkI/AAAAAAAAAdU/vIeXem9chF0/s1600-h/schema.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SbWZgJQqLkI/AAAAAAAAAdU/vIeXem9chF0/s400/schema.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5311320113074024002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What I am doing right now is running the "sensorbase crawler" which pulls all the projects summaries available for the given user and then pulls all the charts possible for the each project (and member). After that data get normalized, transformed into the SAX representation and stored in the database. &lt;br /&gt;&lt;br /&gt;While I'm working on the configuring charts retrieval (those parameters), I am worrying about the distribution of the data points from Build and Devtime streams: it looks not normal, - rather exponential. I'm planning to pull other streams from the sensorbase and work a little more on the data distribution analysis and if it'll be the same I guess it will require SAX schema correction.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SbWZjRiYEBI/AAAAAAAAAdc/A7iB9KzCdDs/s1600-h/qqplot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SbWZjRiYEBI/AAAAAAAAAdc/A7iB9KzCdDs/s400/qqplot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5311320166835425298" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8775975340567348845?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8775975340567348845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8775975340567348845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8775975340567348845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8775975340567348845'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/03/indexing-sensorbase-and-puzzled-with.html' title='Indexing the Sensorbase and puzzled with the distribution (for now)'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SbWZgJQqLkI/AAAAAAAAAdU/vIeXem9chF0/s72-c/schema.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7461303177725072812</id><published>2009-02-27T11:25:00.006-08:00</published><updated>2009-03-02T14:28:40.398-08:00</updated><title type='text'>PAA and SAX R implementations</title><content type='html'>Just want to post the figure I've got in R while designing test cases for the Java implementation of the PAA and SAX algorithms. The figure shows original trajectories, their normalized versions, PAA reduction from 14 to 10 points and finally the result of SAX transform into string.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/Sag__om-hBI/AAAAAAAAAc0/QJVsRO-n1cA/s1600-h/PAA_SAX.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/Sag__om-hBI/AAAAAAAAAc0/QJVsRO-n1cA/s400/PAA_SAX.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5307562523321336850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/jmotif/source/browse/trunk/RCode/SAX"&gt;Updated! Linky to the R code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Updated test results:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SanD4NQjLvI/AAAAAAAAAc8/Zm0930ho-t4/s1600-h/paa_sax_test.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 238px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SanD4NQjLvI/AAAAAAAAAc8/Zm0930ho-t4/s400/paa_sax_test.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5307989006232006386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/jmotif/"&gt;And the Java-based library I am working on&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The lower bounding distance example:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SaxcXHXFgkI/AAAAAAAAAdM/lhpXLzD1W-M/s1600-h/bounding_distance.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SaxcXHXFgkI/AAAAAAAAAdM/lhpXLzD1W-M/s400/bounding_distance.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5308719612945596994" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7461303177725072812?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7461303177725072812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7461303177725072812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7461303177725072812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7461303177725072812'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/paa-and-sax-r-implementation.html' title='PAA and SAX R implementations'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/Sag__om-hBI/AAAAAAAAAc0/QJVsRO-n1cA/s72-c/PAA_SAX.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-4565384980625123132</id><published>2009-02-23T11:55:00.003-08:00</published><updated>2009-02-23T12:19:34.166-08:00</updated><title type='text'>SAX and iSAX</title><content type='html'>While I was following experiments from the previous week with similar setup trying to see the performance of DTW on the simpler trajectories I was continuing reviewing literature and hit the &lt;a href="http://www.cs.ucr.edu/~eamonn/SAX.htm"&gt;Symbolic Aggregate approXimation&lt;/a&gt; paper and SAX algorithm. What a find! Next were &lt;a href="http://www.cs.ucr.edu/~eamonn/iSAX/iSAX.html"&gt;iSAX&lt;/a&gt; and &lt;a href="http://www.cs.ucr.edu/~mueen/MK/"&gt;MK&lt;/a&gt;. This algorithm for finding motifs (patterns) in time-series looks very good and after studying all this material I've decided to contact authors for Java or R code to try it on the telemetry data, - they replied quick but unfortunately they had no Java/R code in hands, only Matlab/C# BUT they were willing to help with Java code development. Currently I am setting up the project and going to code timeseries motif finding module for the Hackystat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-4565384980625123132?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/4565384980625123132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=4565384980625123132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4565384980625123132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4565384980625123132'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/sax-and-isax.html' title='SAX and iSAX'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6803900951080662245</id><published>2009-02-17T07:19:00.004-08:00</published><updated>2009-02-17T11:51:25.475-08:00</updated><title type='text'>Euclidean and DTW metrics based sequence (subsequence) matching</title><content type='html'>Just did a small experiment with R using Euclidean and DTW metrics. &lt;br /&gt;So, I had two synthetic timeseries in hands - one was a kind of devtime telemetry trend which I was using as the reference and the second one just a "peak pattern" The purpose was to see if this "peak pattern" will match anything on the reference timeseries and if it will, than what exactly. &lt;br /&gt;&lt;br /&gt;So, figure 1 represents both timeseries and their normalized versions&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SZrWr9oVR0I/AAAAAAAAAb8/-eHdT02WpoU/s1600-h/01_series.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SZrWr9oVR0I/AAAAAAAAAb8/-eHdT02WpoU/s400/01_series.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303787561948628802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Figure 2 shows the same normalized timeseries at the top, found matches for "peak pattern" when using Euclidean distance at the middle, and Euclidean distances at the bottom of the figure (red bars correspond to the set of the minimal found distances (7 in total)).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SZrWr3mjMPI/AAAAAAAAAcE/cxxsTnqvqls/s1600-h/02_series_00.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SZrWr3mjMPI/AAAAAAAAAcE/cxxsTnqvqls/s400/02_series_00.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303787560330539250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Figure 3 is very similar to the number 2, but the DTW distance is used.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SZrWsMt9fwI/AAAAAAAAAcU/Fp3z6NxHDOQ/s1600-h/03_series_00.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SZrWsMt9fwI/AAAAAAAAAcU/Fp3z6NxHDOQ/s400/03_series_00.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303787565998767874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Figure 4 mimics #3 but threshold is lowered, so more matches shown.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SZrW2hNvXLI/AAAAAAAAAck/jX2l-9ou-Fg/s1600-h/03_series_01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SZrW2hNvXLI/AAAAAAAAAck/jX2l-9ou-Fg/s400/03_series_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5303787743299460274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The R code is &lt;a href="http://code.google.com/p/hackystat-ui-trajectory/source/browse/#svn/trunk/Rcode/search_test"&gt;here&lt;/a&gt;. Will follow with more details in the next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6803900951080662245?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6803900951080662245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6803900951080662245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6803900951080662245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6803900951080662245'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/euclidean-and-dtw-metrics-based.html' title='Euclidean and DTW metrics based sequence (subsequence) matching'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SZrWr9oVR0I/AAAAAAAAAb8/-eHdT02WpoU/s72-c/01_series.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8844845849530300645</id><published>2009-02-16T07:22:00.005-08:00</published><updated>2009-02-16T13:44:09.457-08:00</updated><title type='text'>Working on the DTW implementation and Tests while planning the subsequence search implementation.</title><content type='html'>Last week I was working on the DTW package for the Trajectory project. I've spent about 12 hours hacking the Trajectory DTW java package itself: now it performs DTW alignment using most of the step patterns (it was quite interesting to learn about IEEE standards for NaN (not a number)) about the same amount of hours I've spend working in R making test templates and verifying Java methods; hope all the R plots I've made will contribute to litreview/thesis. &lt;br /&gt;&lt;br /&gt;I did some research and collected available time-series normalization techniques and typed all in TeX for the literature review and thesis. &lt;br /&gt;&lt;br /&gt;Right now I am working on implementing DTW Constraints in Java and on the example of the time-series similarity search. And... it seems like it does work in R for now, I'll post the results tomorrow, today it is too late to process all the plots and clean-up the code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8844845849530300645?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8844845849530300645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8844845849530300645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8844845849530300645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8844845849530300645'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/working-on-dtw-implementation-and-tests.html' title='Working on the DTW implementation and Tests while planning the subsequence search implementation.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-373296751436870043</id><published>2009-02-09T17:12:00.002-08:00</published><updated>2009-02-09T17:26:36.007-08:00</updated><title type='text'>Progress report</title><content type='html'>Last week I've finished the introductory part of the literature review concerned the time-series definition, history and classical analyses development. FYI: the first time-series plot is dated by the 10th century. &lt;br /&gt;&lt;br /&gt;Currently I am reviewing literature concerning metrics used in the similarity search, specifically: Euclidian and Edit distances and their applications in DTW and LCS algorithms. While it seems sound somehow trivial, the time-series transformation rules defined in the research literature through years such as a moving averages smoothing, local and global scales and shifts are making life a little bit harder. The further development through the piecewise matching of the time-series without saving the temporal ordering moves it to the next level of complexity while the concept seems to be being valid for the software development which consists of episodes. &lt;br /&gt;&lt;br /&gt;I'm drafting the review flow by walking through the time-series similarity measurements approaches while arranging the relevant research within sections chronologically. Think it should work. &lt;br /&gt;Getting ready to move further in the review  to the indexing/clustering of time-series methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-373296751436870043?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/373296751436870043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=373296751436870043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/373296751436870043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/373296751436870043'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/progress-report.html' title='Progress report'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3218944853728979770</id><published>2009-02-03T00:53:00.002-08:00</published><updated>2009-02-03T02:44:31.402-08:00</updated><title type='text'>Writing up a literature review.</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Current progress.&lt;/span&gt;&lt;br /&gt;I've spent a week working on the literature review. I finished the introductory part and skimmed through couple of classical time-series analysis books refreshing my knowledge of the well established methods of the time-series analysis and forecasting such as autoregressive ARMA/ARIMA models and based on these forecasting, lag analysis and spectrum analysis of the time series. &lt;br /&gt;&lt;br /&gt;I think that while all these classical time-series analysis could be potentially used in the trajectory application for finding similarity between time series, it seems to be that this direction would require far more computations to be done (decomposing the time series) and would require a whole bunch of preliminary theoretical work researching specific models suitable for the software development and proving them, which seems to be really unnecessary and moreover impossible. &lt;br /&gt;&lt;br /&gt;Interesting that while reading books and walking through the given practical examples from econometrics, I found that interrupted time series and lag analysis could an useful addition to the Hackystat analyzes family. Specifically it would be valuable to implement some kind of such analysis modules to see whether or not some development or managerial events (like (i) stopping regular development activity and switching to test coverage boosting; or (ii) adding/removing a developer to the team; (iii) switching development approach to TDD etc) really impact the development trends and how.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Plans.&lt;/span&gt;&lt;br /&gt;This week I will be reviewing the time-series similarity measures and all kinds of applications based on this approach. &lt;br /&gt;&lt;br /&gt;It is in my plans to start research on the time-series database indexing after the similarity measurement. &lt;br /&gt;&lt;br /&gt;I hope that once these three parts will be done I will cover pretty much all of the stuff that I need to finish the literature review and sketch my path with dissertation proposal. Can't wait to get to this point.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note on the development&lt;/span&gt;&lt;br /&gt;While writing up the review I've started the design of the time-series analysis sub-module, DTW sub-module and thinking on the database (sensorbase) extension for the indexing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3218944853728979770?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3218944853728979770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3218944853728979770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3218944853728979770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3218944853728979770'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/02/writing-up-literature-review.html' title='Writing up a literature review.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8718054916006223533</id><published>2009-01-27T04:36:00.002-08:00</published><updated>2009-01-27T04:41:45.449-08:00</updated><title type='text'>User-account environment variables under Vista</title><content type='html'>I had some problems running the TexLive binaries under Vista caused by the conflict between the Cygwin TeX installation and TexLive. TeXLive installer adds the path to binaries as the user-specific environment variable which than added to the very end of the PATH variable and consequently TeXLive binaries are never reached. The way to fix this issue is to reshuffle the variables to make TexLive binaries to be loaded by default. &lt;a href="http://support.microsoft.com/kb/931715"&gt;This should help to find your user environment settings&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8718054916006223533?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8718054916006223533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8718054916006223533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8718054916006223533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8718054916006223533'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/01/user-account-environment-variables.html' title='User-account environment variables under Vista'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7799503172596255812</id><published>2009-01-26T12:35:00.005-08:00</published><updated>2009-01-26T13:08:05.933-08:00</updated><title type='text'>Literature review plans</title><content type='html'>Finally I was able (almost) to install the TexLive on my laptop. The installer never finished so I don't really know if everything works (the 00-00 example compiles though). I'm running Windows Vista and it looks like the TexLive installer has permission issues with non-Administrative account + there seems to be a bug with installer when it tries to use system Perl instead of one shipped with installer (which causes some libraries and runtime issues). It took me some time to figure out both issues and I don't really see advantages of TexLive versus MikTEX at this point. The one more disadvantage I see is the lack of the DVI viewer in the TexLive distro, looks like I need to install the viewer, but I'm not sure if I will need it, so we'll see further if I will need one.&lt;br /&gt;&lt;br /&gt;From other things I've set up all the Java stuff, updated libraries and Hackystat, checked out all the latest sources etc. and backed up the whole thing, just in case.&lt;br /&gt;So, system is ready to go.&lt;br /&gt;&lt;br /&gt;Most of the time I spent on putting together the outline for the literature review. I am seeing the purpose of this writing to be a comprehensive walkthrough through the field of the time-series analysis outlining the milestones and major discoveries and connecting them with my research. I found that I've totally missed some major things in the time-series analysis (funny huh?) and filling these gaps with reading and collecting the literature.&lt;br /&gt;&lt;br /&gt;Following is the draft plan, I'm working on the third part and since it is based on the material from the part 2, I am changing its flow too.&lt;br /&gt;&lt;br /&gt;Literature review plan&lt;br /&gt;&lt;ol type="I"&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;h4&gt;Introduction. &lt;em&gt;(definitions, research field boundaries and common applications)&lt;/em&gt; &lt;/h4&gt;&lt;br /&gt;    &lt;ol&gt;&lt;br /&gt;      &lt;li&gt;Introduction to time series.&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;Data sources, time-series representation and common applications&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(the time series “origin”, common representation and mainstream applications)&lt;/em&gt; &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Streaming time-series.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;Time series as streams.&lt;/em&gt; &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Time-series databases and indexing&lt;br/&gt;&lt;br /&gt;            &lt;em&gt;(examples of existing time-series collections (&lt;strong&gt;+ the Hackystat sensorbase&lt;/strong&gt;) and common time-series databases toolkit for time series data storage, search and retrieval) &lt;/em&gt; &lt;/li&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;      &lt;li&gt; Classical time series analyses.&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;General exploration &amp; description &lt;br/&gt;&lt;br /&gt;            &lt;em&gt;(time series descriptive exploration and common tools used: spectral analysis, autocorrelation, trends, periodicity (&lt;strong&gt;+ Hackystat Telemetry, + Hackystat Zorro?, + Hackystat Trajectory&lt;/strong&gt;))&lt;/em&gt; &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Prediction and forecasting&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(stochastic modeling: AR, MA, ARMA, ARIMA and uses (&lt;strong&gt;+ Hackystat Trajectory&lt;/strong&gt;))&lt;/em&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Time series similarity (homogeneity) based analyses.&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;The speech and handwriting recognition.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(pioneering the area of DTW, LCS and HMM)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Sign language, motion and gesture recognition.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(ongoing research)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Trajectory patterns recognition, surveillance applications, shape recognition.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(modern applications)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;    &lt;/ol&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;h4&gt;Time series similarity-based analyses and algorithms&lt;br /&gt;&lt;br /&gt;      &lt;em&gt; (known research tools, implemented applications and up-to date research directions)&lt;/em&gt; &lt;/h4&gt;&lt;br /&gt;    &lt;ol&gt;&lt;br /&gt;      &lt;li&gt;Similarity metrics&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;Euclidean distance.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(application and problem of normalization)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Hamming and Edit distances.&lt;br /&gt;&lt;br /&gt;            &lt;em&gt;(the formal introduction of edit distance, time-series transformations)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Similarity-finding algorithms&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;DTW&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;LCS&lt;/li&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Methods &lt;em&gt;(whole and sub sequence applications) &lt;/em&gt;&lt;br /&gt;        &lt;ol type="a"&gt;&lt;br /&gt;          &lt;li&gt;Clustering&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Indexing&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Classification&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Anomaly detection&lt;/li&gt;&lt;br /&gt;        &lt;/ol&gt;&lt;br /&gt;      &lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Known state of the art applications.&lt;/li&gt;&lt;br /&gt;    &lt;/ol&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;h4&gt;Possible application of the algorithms and methods to the Hacvkystat Telemetry Streams&lt;br /&gt;    &lt;/h4&gt;&lt;br /&gt;    &lt;ol&gt;&lt;br /&gt;      &lt;li&gt;Similarity search in the Sensorbase &lt;br /&gt;&lt;br /&gt;        &lt;em&gt;(the search for similarity using the raw telemetry data stored within the sensorbase)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Telemetry Streams data Indexing&lt;br /&gt;&lt;br /&gt;        &lt;em&gt;(defining the Telemetry patterns, indexing raw telemetry data using definitions and conducting search be means of indices and Edit distance)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Live Telemetry Stream analysis and features &lt;br /&gt;&lt;br /&gt;        &lt;em&gt;(patterns, anomaly detection)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;    &lt;/ol&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7799503172596255812?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7799503172596255812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7799503172596255812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7799503172596255812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7799503172596255812'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/01/literature-review-plans.html' title='Literature review plans'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3268109066417699786</id><published>2009-01-20T02:17:00.004-08:00</published><updated>2009-01-20T02:24:01.739-08:00</updated><title type='text'>First post in the 2009</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The TechReport for 699 course.&lt;/span&gt; The importance of. :)&lt;br /&gt;I've finished the Fall 2008 semester writing a technical report concerning the DTW algorithm, it's existing implementations, uses and extensions and outlined possible application to the software metrics based on my own implementation. While being a little worrying about this before starting I found the report writing as an extremely helpful and interesting activity for the number of reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;first of all it forced me to summarize and distill all of the essence from the work done so far and get it graded. By doing so I've not only reassessed my current position in the research but what I found extremely useful - I was able to identify gaps (weak points) in the research I am doing. The goal now is to make my research complete through evenly covering all of the areas of the interest and connecting it with adjacent fields.&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;secondly I found that in my case writing the "tech report for the 699" is actually more likely writing a draft (or an outline) of the Literature Review and the Thesis Proposal: two pieces of writing which are required for the PhD degree. How cool is that?&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;in addition to these two items, overviewing the research done so far, seeing things in the ToDo list and having outlined LitReview and Proposal makes ones (my) minds clear and brings confidence of the right track chosen.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Current progress.&lt;/span&gt;&lt;br /&gt;This week I am working on the setting up the "working environment" for this semester. Taking in account the amount of the software development and writing ahead, spending some time on selecting technologies, cleaning and organizing the system environment and hardrive, updating tools etc seems to be a reasonable activity.&lt;br /&gt;&lt;br /&gt;As in all previous work I am going to use Java, Eclipse, Hackystat infrastructure and the standard set of Hackystat libraries for the core programming. More likely I'll be using MIG Layout for the UI development of the stand-alone Trajectory tool. The R will be used for making figures and fast-scripting when I need to test something before actually implementing.&lt;br /&gt;&lt;br /&gt;For my latest report and all other previous LaTeX-based documents I was successfully using a combination of the MikTex and TeXnicCeneter, but the recent changes in the CSDL requirements moving me towards the use of the TexLive and currently I'm setting up tools and environment testing this new for me approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3268109066417699786?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3268109066417699786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3268109066417699786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3268109066417699786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3268109066417699786'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2009/01/first-post-in-2009.html' title='First post in the 2009'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-4876345308695770693</id><published>2008-12-08T18:36:00.004-08:00</published><updated>2008-12-08T20:05:11.267-08:00</updated><title type='text'>The 699 report continued.</title><content type='html'>My work last week was focused on the writing 699 report for the Fall'08. The report essentially consists of the next parts:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Introduction&lt;/li&gt;&lt;br /&gt;&lt;li&gt;DTW Algorithm&lt;li&gt;&lt;br /&gt;&lt;li&gt;DTW Customization&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Weighting&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Global path constraints&lt;/li&gt;&lt;br /&gt;&lt;li&gt;DTW Optimization&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Query by the sample&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Software metrics application&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Telemetry database indexing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Future work&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So far I'm done with first two sections and working on the third one. The progress a bit slow mainly because I was working on the last home assignments for my classes: The Analysis of Algorithms and Engineering Compiler. The finals scheduled at Dec 18 and Dec 19, Hope to finish the most of the report work by this time.&lt;br /&gt;&lt;br /&gt;The report is hosted by Google and the permanent link is &lt;a href="http://seninp.googlepages.com/699fall08report.pdf"&gt;PDF&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-4876345308695770693?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/4876345308695770693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=4876345308695770693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4876345308695770693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4876345308695770693'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/12/699-report-continued_08.html' title='The 699 report continued.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2678061992947545592</id><published>2008-12-02T12:05:00.002-08:00</published><updated>2008-12-02T12:15:36.495-08:00</updated><title type='text'>The 699 report</title><content type='html'>Last week I've tried to evaluate my progress and started the 699 Fall 08 report using TeX. Most of the time was spent collecting and reading articles. After all I've organized them through &lt;a href="http://www.citeulike.org/bibtex_options/user/seninp"&gt;CiteULike&lt;/a&gt;. (Wondering if there any way to share my library with any other person?) Right now I am having around three dozens of DTW algorithm related papers describing basics of DTW, it's customization and optimization along with various applications: data mining (time series databases search), time series clustering, online signature matching, computer vision, computer animation, surveillance, protein sequence alignment, chemical engineering, music and signal processing. After reading I'm truly believe that approach would work applied to software metrics.&lt;br /&gt;&lt;br /&gt;Find current report version &lt;a href="http://hackystat-ui-trajectory.googlecode.com/svn/trunk/docs/699fall08/699fall08report.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2678061992947545592?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2678061992947545592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2678061992947545592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2678061992947545592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2678061992947545592'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/12/699-report.html' title='The 699 report'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2953408650693742602</id><published>2008-11-20T05:42:00.003-08:00</published><updated>2008-11-20T05:45:53.609-08:00</updated><title type='text'>DTW Step performance in Trajectory</title><content type='html'>Today I've hacked in the DTW step implementation in the Trajectory. Take a look on the impact of the step choice on the Euclidean distance after alignment and plots rendering.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Symmetric Pattern 0&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SSVptsMn39I/AAAAAAAAAXU/HnSn5G-0Ae0/s1600-h/sp0.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SSVptsMn39I/AAAAAAAAAXU/HnSn5G-0Ae0/s400/sp0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270735172586168274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Asymmetric Pattern 05&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SSVp7YEi0wI/AAAAAAAAAXc/-kolPNKixyc/s1600-h/asp05.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SSVp7YEi0wI/AAAAAAAAAXc/-kolPNKixyc/s400/asp05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270735407701742338" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2953408650693742602?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2953408650693742602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2953408650693742602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2953408650693742602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2953408650693742602'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/11/dtw-step-performance-in-trajectory.html' title='DTW Step performance in Trajectory'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SSVptsMn39I/AAAAAAAAAXU/HnSn5G-0Ae0/s72-c/sp0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-782954100083615481</id><published>2008-11-19T19:45:00.006-08:00</published><updated>2008-11-20T06:42:39.145-08:00</updated><title type='text'>Step functions performance illustrations</title><content type='html'>A simple example demonstrating the performance of different step function following "Dynamic programming algorithm optimization for spoken word recognition"&lt;br /&gt;by: H Sakoe, S Chiba and using matrix from T. Giorgino (2007). "dtw: Dynamic Time Warping algorithms in R 1.12-3"&lt;br /&gt;&lt;br /&gt;The distance matrix.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SSTded2vFgI/AAAAAAAAAXM/JYHHhoOsXzg/s1600-h/matrix.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 285px; height: 132px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SSTded2vFgI/AAAAAAAAAXM/JYHHhoOsXzg/s400/matrix.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270580979410343426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The step functions performance, red - the result of DTW alignment, black - the true path of zeroes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SSTdafwEgVI/AAAAAAAAAXE/Ly1LhqDwWHo/s1600-h/steps.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SSTdafwEgVI/AAAAAAAAAXE/Ly1LhqDwWHo/s400/steps.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270580911199781202" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-782954100083615481?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/782954100083615481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=782954100083615481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/782954100083615481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/782954100083615481'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/11/step-functions-performance.html' title='Step functions performance illustrations'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SSTded2vFgI/AAAAAAAAAXM/JYHHhoOsXzg/s72-c/matrix.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5125052491553359427</id><published>2008-11-18T06:44:00.002-08:00</published><updated>2008-11-18T06:49:11.131-08:00</updated><title type='text'>Trajectory is up and running within the ProjectBrowser</title><content type='html'>I've fixed CSS styles and did some code changes within the GoogleChart package (due to the precision lost while converting from doubles I wasn't able to see normal and DTW plots at all). The trajectory runs on my workstation, will see today how it deals with bigger datasets. My next step would be to implement constraints, step patterns and open end alignment classes plugging them into UI.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SSLVFTrODUI/AAAAAAAAAW8/iZhWHlYVVss/s1600-h/full.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 368px; height: 400px;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SSLVFTrODUI/AAAAAAAAAW8/iZhWHlYVVss/s400/full.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270008801134513474" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5125052491553359427?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5125052491553359427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5125052491553359427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5125052491553359427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5125052491553359427'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/11/trajectory-is-up-and-running-within.html' title='Trajectory is up and running within the ProjectBrowser'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SSLVFTrODUI/AAAAAAAAAW8/iZhWHlYVVss/s72-c/full.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3008605768835478265</id><published>2008-11-10T15:09:00.003-08:00</published><updated>2008-11-10T15:16:26.488-08:00</updated><title type='text'>Who broke the build!?</title><content type='html'>Last week I've cleaned up the Trajectory code and finally merged my branch with the trunk. I've broke the build. I'm sorry. Thank you Philip for prompt response and help fixing it.&lt;br /&gt;&lt;br /&gt;Among other things, since I've forked it long ago, I had some troubles with code layout and Trajectory page is still messed up since the div's name changed within HTML templates. Next week will fix CSS's and HTML's for the trajectory. Good news that it performs as it suppose (at least on my workstation).&lt;br /&gt;&lt;br /&gt;Started organizing my literature review using &lt;a href="http://http://www.citeulike.org/"&gt;CiteULike&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And after all I'm coding scanner and parser parts for the compiler :P...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3008605768835478265?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3008605768835478265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3008605768835478265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3008605768835478265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3008605768835478265'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/11/who-broke-build.html' title='Who broke the build!?'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2940107492299137516</id><published>2008-11-05T05:15:00.002-08:00</published><updated>2008-11-05T05:20:35.563-08:00</updated><title type='text'>Progress report</title><content type='html'>I've finished modifying code architecture for the DTW and improved data normalization for the time series. The original Telemetry and GoogleChart modules code which I borrowed for modification appeared to have three or four validation and format routines which were designed the way which prevented normalized data to be rendered properly. I've changed/commented out validations and formatting but not sure if it was right decision, I feel like I need a little more time to see what was behind this formatting and will post results later.&lt;br /&gt;&lt;br /&gt;The most current plots:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SRGdmVyiLbI/AAAAAAAAAWc/kN9sskmx2Ws/s1600-h/plot1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SRGdmVyiLbI/AAAAAAAAAWc/kN9sskmx2Ws/s400/plot1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5265162721382510002" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2940107492299137516?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2940107492299137516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2940107492299137516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2940107492299137516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2940107492299137516'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/11/progress-report.html' title='Progress report'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SRGdmVyiLbI/AAAAAAAAAWc/kN9sskmx2Ws/s72-c/plot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7108276810202263779</id><published>2008-10-27T03:25:00.006-07:00</published><updated>2008-10-28T06:36:52.704-07:00</updated><title type='text'>Progress report</title><content type='html'>Last week I was working on two tasks: implementing required code changes in the Trajectory component and second is writing some ideas for the technical report.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Hacking progress:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;Time-series normalization:&lt;/span&gt; Initially I was normalizing the time series by simply dividing all values by the maximal one, last week I've changed this method to more appropriate one by following the method suggested by  Dina Q. Goldin and Paris C. Kanellakis in the  &lt;span style="font-style:italic;"&gt;"On similarity queries for time-series data: Constraint specification and implementation"&lt;/span&gt; chapter of &lt;span style="font-style:italic;"&gt;"Principles and Practice of Constraint Programming — CP '95"&lt;/span&gt; book. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;DTW improvement:&lt;/span&gt; I'm trying to move from the original DTW implementation towards the more customizable implementation using step functions suggested by Sakoe-Chiba:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SQcNYHmHrXI/AAAAAAAAAWU/dQGTydc4Xdw/s1600-h/steps.png"&gt;&lt;img style="none; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 230px;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SQcNYHmHrXI/AAAAAAAAAWU/dQGTydc4Xdw/s400/steps.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5262189397612670322" /&gt;&lt;/a&gt;. &lt;br&gt; Unfortunately hack is no moving fast, - I am working on the architecture design to make step and constraints functions pluggable into the &lt;span style="font-style:italic;"&gt;"generic DTW"&lt;/span&gt; code. I think this is the most elegant solution. In the future it'll allow to plug any user-configured function in the code. Really want to benchmark the performance of all the options since for the speech and writing recognition it worked well.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7108276810202263779?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7108276810202263779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7108276810202263779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7108276810202263779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7108276810202263779'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/progress-report.html' title='Progress report'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SQcNYHmHrXI/AAAAAAAAAWU/dQGTydc4Xdw/s72-c/steps.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3119722614549938222</id><published>2008-10-26T09:08:00.003-07:00</published><updated>2008-10-26T10:57:51.889-07:00</updated><title type='text'>Book: Information Retrieval for Music and Motion.</title><content type='html'>Want to share one of my findings: while collecting papers for the literature review, I found a very interesting book related to the research I am doing: "Information Retrieval for Music and Motion", Müller, Meinard, 2007, XVI, 318 p. 136 illus., 39 in color., Hardcover. ISBN: 978-3-540-74047-6.&lt;br /&gt;After reviewing I've ordered it, waiting for the stuff to arrive.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;A general scenario that has attracted a lot of attention for multimedia information retrieval is based on the query-by-example paradigm: retrieve all documents from a database containing parts or aspects similar to a given data fragment. However, multimedia objects, even though they are similar from a structural or semantic viewpoint, often reveal significant spatial or temporal differences. This makes content-based multimedia retrieval a challenging research field with many unsolved problems.&lt;br /&gt;&lt;br /&gt;Meinard Müller details concepts and algorithms for robust and efficient information retrieval by means of two different types of multimedia data: waveform-based music data and human motion data. In Part I, he discusses in depth several approaches in music information retrieval, in particular general strategies as well as efficient algorithms for music synchronization, audio matching, and audio structure analysis. He also shows how the analysis results can be used in an advanced audio player to facilitate additional retrieval and browsing functionality. In Part II, he introduces a general and unified framework for motion analysis, retrieval, and classification, highlighting the design of suitable features, the notion of similarity used to compare data streams, and data organization. The detailed chapters at the beginning of each part give consideration to the interdisciplinary character of this field, covering information science, digital signal processing, audio engineering, musicology, and computer graphics.&lt;br /&gt;&lt;br /&gt;This first monograph specializing in music and motion retrieval appeals to a wide audience, from students at the graduate level and lecturers to scientists working in the above mentioned fields in academia or industry. Lecturers and students will benefit from the didactic style, and each unit is suitable for stand-alone use in specialized graduate courses. Researchers will be interested in the detailed description of original research results and their application in real-world browsing and retrieval scenarios.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3119722614549938222?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3119722614549938222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3119722614549938222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3119722614549938222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3119722614549938222'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/book-information-retrieval-for-music.html' title='Book: Information Retrieval for Music and Motion.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-388121598817837771</id><published>2008-10-20T05:04:00.005-07:00</published><updated>2008-10-20T05:09:39.960-07:00</updated><title type='text'>Working on the Trajectory UI.</title><content type='html'>I've enhanced the Trajectory DTW UI over the last week following my initial hand drawing: &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SPx0ZBmaVYI/AAAAAAAAAV0/pebBrHwp3uY/s1600-h/ui.png"&gt;&lt;img style="none; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SPx0ZBmaVYI/AAAAAAAAAV0/pebBrHwp3uY/s400/ui.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259206438136993154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It seems to be working fine and next week I am planning to implement the actual DTW algorithm enhancements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-388121598817837771?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/388121598817837771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=388121598817837771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/388121598817837771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/388121598817837771'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/working-on-trajectory-ui.html' title='Working on the Trajectory UI.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xSxqRK3ll48/SPx0ZBmaVYI/AAAAAAAAAV0/pebBrHwp3uY/s72-c/ui.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1131243231433754298</id><published>2008-10-13T18:59:00.006-07:00</published><updated>2008-10-13T20:00:00.325-07:00</updated><title type='text'>Technical review outline.</title><content type='html'>During the Summer and Fall of '08 I was doing research focusing on the "telemetry trajectory" idea which resulted in the three software components, which are "in the development stage" and will constitute the three major chapters of my future report: &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Software development activity simulation package.&lt;/span&gt; I've developed the sensorbase-sim extension package based on the &lt;a href="http://jade.tilab.com/"&gt;JADE&lt;/a&gt; framework. It is fairly simple agent-based application which generates software metrics data once provided with simulation parameters for the code, such as overall functional points requirements, points per class, LOC's per point etc... and developers data, such as number of developers and their expertize level.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hackystat-ui-trajectory.googlecode.com/files/sim-screen1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://hackystat-ui-trajectory.googlecode.com/files/sim-screen1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;While I've found a large amount of the approach-justifying literature and methods to continue the simulation package was shalved till better times and I focused on the Trajectory-UI development.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;Second application I was working on was a stand-alone Java &lt;span style="font-weight:bold;"&gt;application for the visualizing trajectories in the 3D space&lt;/span&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hackystat-ui-trajectory.googlecode.com/files/new-UI.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://hackystat-ui-trajectory.googlecode.com/files/new-UI.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;This work was following Philip's original idea about &lt;a href="http://johnson-engineering-log.blogspot.com/2008/03/from-telemetry-to-trajectory.html"&gt;trajectory visualization&lt;/a&gt;.&lt;br /&gt;This application is based on the Java3D package and it's main purpose is the exploration of the trajectory visualization approach. While working on the visualization implementation I was going through the trajectory-visualization related materials review and discovered the vast amount of research done in the area of the complex trajectories matching. Part of the reviewed articles will stuff the report.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;The most active development and research I am conducting right now now is on the &lt;span style="font-weight:bold;"&gt;Trajectory component&lt;/span&gt; of the Hackystat-ProjectBrowser application. Currently I am exploring the &lt;a href="http://en.wikipedia.org/wiki/Dynamic_time_warping"&gt;DTW&lt;/a&gt; algorithm application for the software telemetry data. Considering the amount of the work and research I've done this would be the major component of my report describing in the details the DTW application to the telemetry data.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1131243231433754298?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1131243231433754298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1131243231433754298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1131243231433754298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1131243231433754298'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/technical-review-outline.html' title='Technical review outline.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8507474587655968509</id><published>2008-10-13T18:00:00.006-07:00</published><updated>2008-10-13T18:48:17.087-07:00</updated><title type='text'>UI design</title><content type='html'>Some of the time during last week I've dedicated to the DTW related research and UI design: I was thinking about laying out the workspace for the DTW analysis since after all it suppose to be somehow interactive and iterative. It's very important that UI must be responsive and keep user focused on the analysis aspects. By following the &lt;a href="http://www.codinghorror.com/blog/archives/001091.html"&gt;UI-First Software Development&lt;/a&gt; principle I've spend about 10-20 minutes just drawing the draft of UI laying out information blocks and parameters at the left screen "control panel".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SPPxKjprBfI/AAAAAAAAAU8/DWef0_Otcdc/s1600-h/after.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SPPxKjprBfI/AAAAAAAAAU8/DWef0_Otcdc/s400/after.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256810353742513650" /&gt;&lt;/a&gt;.&lt;br /&gt;The function which is underlying under UI design is pretty simple, and I outlined three major steps on my drawing: &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; User sees the input time-series statistics and two accompanying plots: one for the raw timeseries data with gaps and non-normalized peaks representing the data collected from the sensors and second one, with normalized series and gaps filled accordingly to the telemetry type. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Based on the provided information and visualization user selects specific DTW options and actually fires the timeseries alignment action.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Once trajectories aligned, the third plot showing aligned warped timeseries and alignment statistics updated. After evaluating analysis results user makes a decision to alter parameters and run alignment again or just accepts the alignment results.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Currently I'm altering the Wicket application code, HTMLs and CSS styles to implement the UI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8507474587655968509?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8507474587655968509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8507474587655968509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8507474587655968509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8507474587655968509'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/ui-design.html' title='UI design'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SPPxKjprBfI/AAAAAAAAAU8/DWef0_Otcdc/s72-c/after.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6705026413409995631</id><published>2008-10-06T19:30:00.008-07:00</published><updated>2008-10-06T20:17:43.156-07:00</updated><title type='text'>Some issues with DTW I'm working on.</title><content type='html'>In couple of previous posts (except one about precision) I was discussing two issues in pattern matching which are apparently similar in the speech recognition (utterance matching) and in the software metrics matching analysis. I read the article by &lt;br /&gt;&lt;a href="http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1163164&amp;isnumber=26135"&gt;Rabiner, L.; Rosenberg, A.; Levinson, S., "Considerations in dynamic time warping algorithms for discrete word recognition," Acoustics, Speech and Signal Processing, IEEE Transactions on , vol.26, no.6, pp. 575-582, Dec 1978&lt;/a&gt; and trying to rephrase the reasoning applying it to the software metrics alignment.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Most recently discussed issue: the assumption that the telemetry time series should be the same length. In my opinion this constraint is very strong and we should not consider this in the most cases. Whether or not waterfall or agile processes are considered there are certain activity patterns (phases) already identified. What is not canonized is the length of each of the phases and we should be considering an "open-ended" alignment algorithm to match those process features.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; The second issue discussed before is the allowable changes in the warping function. By adjusting this allowances we basically adjusting the sensitivity of the algorithm to recognize peaks of activities as the independent events. Question is what is the range of optimal allowances?&lt;/li&gt;&lt;br /&gt;&lt;li&gt; The last issue I was thinking of is whether or not there are some hidden preferences in the choice of the "query" or "template" time series. So far I would say that there are no difference, but I would work on the experimental proof that the warping function is symmetric (or not?).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;While researching, I discovered this book, which potentially is the greatest answers source for my questions. &lt;a href="http://books.google.com/books?id=IJoOLVYD8KQC"&gt;Readings in Speech Recognition By Alex Waibel, Kai-Fu Lee&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've seen the following figure in the article and in the book and it seems to be illustrating two first questions I am asking here: first two plots are illustrating the effect of allowances in the warping function, while the third plot (UELM) illustrates the "open-ended alignment" approach.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SOrUFoes48I/AAAAAAAAAS0/hwRPP9v2kBM/s1600-h/algorithms.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SOrUFoes48I/AAAAAAAAAS0/hwRPP9v2kBM/s400/algorithms.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5254245108511728578" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6705026413409995631?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6705026413409995631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6705026413409995631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6705026413409995631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6705026413409995631'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/some-issues-on-dtw.html' title='Some issues with DTW I&apos;m working on.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SOrUFoes48I/AAAAAAAAAS0/hwRPP9v2kBM/s72-c/algorithms.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-9098572388579307576</id><published>2008-10-05T16:08:00.004-07:00</published><updated>2008-10-05T16:20:18.188-07:00</updated><title type='text'>Open-ended alignment.</title><content type='html'>So... &lt;span style="font-style:italic;"&gt;precision errors&lt;/span&gt;... Once I've made through this I hit another bump: in my previous tests I was always comparing time-series of the exact same length, 15 days. Meanwhile the &lt;span style="font-weight:bold;"&gt;Trajectory&lt;/span&gt; interface allows you to select time series of arbitrary length and moreover to introduce indent before data, which more likely makes time-series lengths different. :). For example like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SOlKV1dr-zI/AAAAAAAAASk/AFWUHtwy0M4/s1600-h/openended01.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SOlKV1dr-zI/AAAAAAAAASk/AFWUHtwy0M4/s400/openended01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5253812179293698866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What would happen once I'll hit the &lt;span style="font-weight:bold;"&gt;Do DTW Analysis&lt;/span&gt; button? Right - Exception, due to the difference in length.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SOlLD5EsZEI/AAAAAAAAASs/zq8LNCEfUQ4/s1600-h/openended-exception.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SOlLD5EsZEI/AAAAAAAAASs/zq8LNCEfUQ4/s400/openended-exception.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5253812970536592450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While I can restrict users to do only the same length time-series analysis, it is very strong constraints. It would require huge amount of the eye-matching before actually going into the DTW. ...&lt;br /&gt;&lt;br /&gt;To be continued later today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-9098572388579307576?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/9098572388579307576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=9098572388579307576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9098572388579307576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9098572388579307576'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/open-ended-alignment.html' title='Open-ended alignment.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SOlKV1dr-zI/AAAAAAAAASk/AFWUHtwy0M4/s72-c/openended01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2719186152436489230</id><published>2008-10-05T15:45:00.004-07:00</published><updated>2008-10-05T16:07:29.287-07:00</updated><title type='text'>Precision errors....</title><content type='html'>If you were following my posts you might have noticed that there is significant difference in the appearance of the plots after DTW between the R implementation and my Java implementation. It was a point of my frustration for the couple of weeks. I spent hours trying to extract the underlying numbers and debug what is going on. &lt;span style="font-weight:bold;"&gt;Guess what? Precision errors contribute to that.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SOlIOreUyrI/AAAAAAAAASc/EByO2ezhbb4/s1600-h/01_misaligned_bridge_503.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SOlIOreUyrI/AAAAAAAAASc/EByO2ezhbb4/s400/01_misaligned_bridge_503.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5253809857329679026" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2719186152436489230?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2719186152436489230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2719186152436489230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2719186152436489230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2719186152436489230'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/10/precision-errors.html' title='Precision errors....'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SOlIOreUyrI/AAAAAAAAASc/EByO2ezhbb4/s72-c/01_misaligned_bridge_503.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-7211865263060710679</id><published>2008-09-28T19:20:00.011-07:00</published><updated>2008-09-28T21:40:13.673-07:00</updated><title type='text'>Example: how DTW works 3 peaks and 2 peaks.</title><content type='html'>A simple example of DTW algorithm for two trajectories, one has three peaks, while the second one two peaks. In my opinion two trajectories are distinct enough to consider them non-similar: clearly, trajectory #1 has two minor activity peaks by sides of major activity peak while trajectory #2 has two similar peaks of activity during the time trajectory #1 is idle. The task of this exercise is to explore the DTW toolkit which prevents this trajectories from aligning. In particular, I'd like to try the Sakoe-Chuba Band and Itakura Parallelogram as shown at Figure 4 of &lt;a href="http://cs.fit.edu/~pkc/papers/tdm04.pdf"&gt;Salvador, Stan and Philip Chan. FastDTW: Toward Accurate Dynamic Time Warping in Linear Time and Space, Intelligent Data Analysis, 2007&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SOBO4Yc6yaI/AAAAAAAAARc/8Dg6irY_W_E/s1600-h/constraints.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SOBO4Yc6yaI/AAAAAAAAARc/8Dg6irY_W_E/s400/constraints.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251283896057383330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The original data plotted&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SOBIfV8CRHI/AAAAAAAAARU/L60vXGPUAO8/s1600-h/original.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SOBIfV8CRHI/AAAAAAAAARU/L60vXGPUAO8/s400/original.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251276868816094322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Time series&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SOBIKbzYnBI/AAAAAAAAARE/InBfDFas6K0/s1600-h/ts.data.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SOBIKbzYnBI/AAAAAAAAARE/InBfDFas6K0/s400/ts.data.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251276509613169682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Naive DTW DP in action&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SOBIT_nqT6I/AAAAAAAAARM/-XDAzkBCRB8/s1600-h/dtw.run.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SOBIT_nqT6I/AAAAAAAAARM/-XDAzkBCRB8/s400/dtw.run.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251276673846497186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Before and After DTW&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SOBcEQKFLwI/AAAAAAAAARk/ob2IuYnTuis/s1600-h/warp_combined.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SOBcEQKFLwI/AAAAAAAAARk/ob2IuYnTuis/s400/warp_combined.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251298393640480514" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-7211865263060710679?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/7211865263060710679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=7211865263060710679' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7211865263060710679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/7211865263060710679'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/how-dtw-works-example-3-peaks-and-2.html' title='Example: how DTW works 3 peaks and 2 peaks.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SOBO4Yc6yaI/AAAAAAAAARc/8Dg6irY_W_E/s72-c/constraints.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8246720146983084390</id><published>2008-09-28T15:16:00.006-07:00</published><updated>2008-09-28T21:43:20.609-07:00</updated><title type='text'>My Java DTW implementation finally works within the ProjectBrowser</title><content type='html'>During last week I've fixed my DTW Algorithm implementation in Java. Next two screenshots are showing the reference R implementation at the left side and my Java implementation at the right side. They both happened to be identical before DTW and after DTW.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SOAC10ku_nI/AAAAAAAAAQs/Q89N7PDFE2k/s1600-h/input.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SOAC10ku_nI/AAAAAAAAAQs/Q89N7PDFE2k/s400/input.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251200289183039090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SOAC-dvJiHI/AAAAAAAAAQ0/gEDBwFDCyz8/s1600-h/output_warping_query.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SOAC-dvJiHI/AAAAAAAAAQ0/gEDBwFDCyz8/s400/output_warping_query.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251200437671528562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the immediate effect on the Trajectory tool visualization:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SOAOOtrnY_I/AAAAAAAAAQ8/t8sSod0YgsY/s1600-h/sample1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SOAOOtrnY_I/AAAAAAAAAQ8/t8sSod0YgsY/s400/sample1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251212811457487858" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8246720146983084390?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8246720146983084390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8246720146983084390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8246720146983084390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8246720146983084390'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/fixed-dtw-implementation.html' title='My Java DTW implementation finally works within the ProjectBrowser'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xSxqRK3ll48/SOAC10ku_nI/AAAAAAAAAQs/Q89N7PDFE2k/s72-c/input.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6667460680357221752</id><published>2008-09-22T21:31:00.005-07:00</published><updated>2008-09-28T21:45:33.578-07:00</updated><title type='text'>Placeholder for the Monday, September, 22</title><content type='html'>Basically it's about 10:32PM (MST) and I am late with posting my entry. Just found why my DTW implementation doesn't follows the reference one: I was not averaging points which were merged during the DTW along with NOT interpolating ones which happen at gaps. The bug is understood, but I am not feeling like patching it right now: it requires writing tests and altering some code. Will update this blog entry tomorrow. Meanwhile I &lt;span style="font-weight:bold;"&gt;went through the "spaghetti code" sections and some telemetry artifacts remaining in my code and cleaned it up, however I think that the sequence of events to get three plots as in the previous entry is still far from the perfect. Also I am working on the DTW panels UI and cleaned up the streams statistics from some junk along with introducing a little DTW statistics panel.&lt;/span&gt; See you a little later :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6667460680357221752?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6667460680357221752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6667460680357221752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6667460680357221752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6667460680357221752'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/placeholder-for-monday-september-21.html' title='Placeholder for the Monday, September, 22'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6117063375094973562</id><published>2008-09-15T17:58:00.007-07:00</published><updated>2008-09-15T18:59:43.029-07:00</updated><title type='text'>Naive DTW is up and running.</title><content type='html'>So I've made it through the &lt;a href="http://cwiki.apache.org/WICKET/working-with-wicket-models.html"&gt;Wicket data models&lt;/a&gt; and ended up with a lot of a &lt;a href="http://en.wikipedia.org/wiki/Spaghetti_code"&gt;spaghetti code&lt;/a&gt; for this version while refactoring telemetry/trajectory code and my previous &lt;a href="http://en.wikipedia.org/wiki/Dynamic_time_warping"&gt;DTW&lt;/a&gt; code out of trajectory. Look at the amount of debug information I am printing, (haha!):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xSxqRK3ll48/SM8O3InZ44I/AAAAAAAAAQU/rnkWS5HP8ow/s1600-h/003.debug.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_xSxqRK3ll48/SM8O3InZ44I/AAAAAAAAAQU/rnkWS5HP8ow/s400/003.debug.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246428431278269314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voila:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The trajectory convenience in action, "the base page":&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xSxqRK3ll48/SM8MI8GzMLI/AAAAAAAAAQE/Hesbr4SU8b4/s1600-h/003.base_page.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xSxqRK3ll48/SM8MI8GzMLI/AAAAAAAAAQE/Hesbr4SU8b4/s400/003.base_page.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246425438623051954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you can find a little "Do DTW analysis" button right to the "Get Chart" button and click it this is what you'll see:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SM8Ns8zBSCI/AAAAAAAAAQM/3Day3JVCw_0/s1600-h/003.naive_dtw_page.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SM8Ns8zBSCI/AAAAAAAAAQM/3Day3JVCw_0/s400/003.naive_dtw_page.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246427156795443234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically along with the streams statistics at the left you can see the sequence of three plots: &lt;br /&gt;1) the original trajectory/telemetry chart, &lt;br /&gt;2) the normalized timeseries which have Zeroes instead of NA... (i know it'll work for DevTime chart, but I need to figure out what to do with other streams.)&lt;br /&gt;3) the DTW-treated normalized time series.&lt;br /&gt;&lt;br /&gt;Nice... However I found that it is somehow different from the R implementation I am using as the reference:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SM8RgBiQ64I/AAAAAAAAAQk/Pvkqz3snqLM/s1600-h/003.R_dtw_page.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SM8RgBiQ64I/AAAAAAAAAQk/Pvkqz3snqLM/s400/003.R_dtw_page.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246431332775553922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right now I am debugging what is going wrong with my Dynamic Programming implementation and meanwhile trying to clean-up my code from repeating myself. While debugging, I found an awesome new feature in the Excel 2007: Conditional formatting, just look at this beautiful heat maps:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xSxqRK3ll48/SM8QToNFBbI/AAAAAAAAAQc/yYIOVX1SyPo/s1600-h/003.heat_maps.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_xSxqRK3ll48/SM8QToNFBbI/AAAAAAAAAQc/yYIOVX1SyPo/s400/003.heat_maps.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246430020305749426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bottom line for this week progress is that Naive DTW is implemented and embedded in the ProjectBrowser. You would ask, "So what about "similarity"?", well, I have a code to calculate the Euclidean distances between time series too, and have numbers calculated, just need to find a place where to render those at UI panels.&lt;br /&gt;&lt;br /&gt;Next week plan is: code cleanup and optimization, implementation of the R Charting instead of GoogleCharts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6117063375094973562?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6117063375094973562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6117063375094973562' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6117063375094973562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6117063375094973562'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/naive-dtw-is-up-and-running.html' title='Naive DTW is up and running.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SM8O3InZ44I/AAAAAAAAAQU/rnkWS5HP8ow/s72-c/003.debug.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-4479301490218544331</id><published>2008-09-08T19:30:00.004-07:00</published><updated>2008-09-08T21:38:31.421-07:00</updated><title type='text'>Implementing DTW in trajectory</title><content type='html'>In the my previous post about hackystat-trajectory progress I've said that I'm almost there with implementing the indent for the trajectory charts as at the following screenshot:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SMXg2Fpq3OI/AAAAAAAAAP8/Gc5ObKpi2m0/s1600-h/indent.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SMXg2Fpq3OI/AAAAAAAAAP8/Gc5ObKpi2m0/s400/indent.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5243844560977321186" /&gt;&lt;/a&gt;&lt;br /&gt;Yeah, in fact it took me about 3 hours of typing (I type using two fingers :P) since I've got to alter the code for the whole bunch of TelemetryStream dealing pieces... So, basically my initial estimation of the effort needed turned out to be wrong :(. Anyway, the indent is in the place and now I have the ability to choose particular intervals from the telemetry streams for two projects and &lt;span style="font-weight:bold;"&gt;align them&lt;/span&gt; the way I like.&lt;br /&gt;&lt;br /&gt;The next research question I'm working on right now is &lt;span style="font-weight:bold;"&gt;how to quantify&lt;/span&gt; the difference (similarity) level of two trajectories? My idea of UI and workflow for this task is that once an user is satisfied with time series (telemetry interval) selection and alignment using the Trajectory page, he (or she) can proceed further to the next level of analyzes using the very new UI page which I call &lt;span style="font-weight:bold;"&gt;Trajectory DTW analysis page&lt;/span&gt;, and which allows to visualize the DTW algorithm implementation and quantify trajectories similarities using Euclidean distance:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-4479301490218544331?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/4479301490218544331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=4479301490218544331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4479301490218544331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4479301490218544331'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/implementing-dtw-in-trajectory.html' title='Implementing DTW in trajectory'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xSxqRK3ll48/SMXg2Fpq3OI/AAAAAAAAAP8/Gc5ObKpi2m0/s72-c/indent.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5895780431699159323</id><published>2008-09-02T07:47:00.003-07:00</published><updated>2008-09-02T08:04:57.682-07:00</updated><title type='text'>Some R color palettes</title><content type='html'>Once working on the trajectory plotting procedure I got curious about colors to use in my plots. I did a little research about what are common palettes used in R and there they are:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_xSxqRK3ll48/SL1UuE-D5kI/AAAAAAAAAPE/Fd1ZxhqVcvA/Rpalettes.png" alt="R color palettes" id="BLOGGER_PHOTO_ID_5241438691913885250" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;The R code snippet:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;YlOrBr &lt;- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")&lt;br /&gt;YlOrBr.Lab &lt;- colorRampPalette(YlOrBr, space = "Lab")&lt;br /&gt;YlOrBr.Lab.bias &lt;- colorRampPalette(YlOrBr, space = "Lab", bias=0.5)&lt;br /&gt;&lt;br /&gt;jet.colors &lt;-&lt;br /&gt;  colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",&lt;br /&gt;                     "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))&lt;br /&gt;&lt;br /&gt;rgb.palette &lt;- colorRampPalette(c("blue", "orange", "red"),&lt;br /&gt;                                     space = "rgb")&lt;br /&gt;Lab.palette &lt;- colorRampPalette(c("blue", "orange", "red"),&lt;br /&gt;                                     space = "Lab")&lt;br /&gt;&lt;br /&gt;demo.pal &lt;-&lt;br /&gt;   function(n, border = if (n&lt;32) "light gray" else NA,&lt;br /&gt;             main = paste("color palettes;  n=",n),&lt;br /&gt;             ch.col = c("YlOrBr.Lab.bias(n)", "YlOrBr.Lab(n)",&lt;br /&gt;                        "heat.colors(n)", "terrain.colors(n)",&lt;br /&gt;                        "cm.colors(n)", "topo.colors(n)",&lt;br /&gt;                        "rainbow(n, start=.7, end=.1)", "jet.colors(n)",&lt;br /&gt;                        "rgb.palette(n)", "Lab.palette(n)"))&lt;br /&gt;     {&lt;br /&gt;       nt &lt;- length(ch.col)&lt;br /&gt;       i &lt;- 1:n; j &lt;- n / nt; d &lt;- j/6; dy &lt;- 2.2*d&lt;br /&gt;       plot(i,i+d, type="n", yaxt="n", ylab="", main=main)&lt;br /&gt;       for (k in 1:nt) {&lt;br /&gt;         rect(i-.5, (k-1)*j+ dy, i+.4, k*j,&lt;br /&gt;         col = eval(parse(text=ch.col[k])), border = border)&lt;br /&gt;         text(2*j,  k * j +dy/4, ch.col[k])&lt;br /&gt;       }&lt;br /&gt;     }&lt;br /&gt;n &lt;- if(.Device == "postscript") 64 else 18&lt;br /&gt;# Since for screen, larger n may give color allocation problem&lt;br /&gt;demo.pal(n)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5895780431699159323?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5895780431699159323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5895780431699159323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5895780431699159323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5895780431699159323'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/some-r-color-palettes.html' title='Some R color palettes'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xSxqRK3ll48/SL1UuE-D5kI/AAAAAAAAAPE/Fd1ZxhqVcvA/s72-c/Rpalettes.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5683001707841229621</id><published>2008-09-01T10:21:00.014-07:00</published><updated>2008-09-01T18:18:30.512-07:00</updated><title type='text'>Starting the Fall'08.</title><content type='html'>&lt;b&gt;Officially starting the Fall'08 semester.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This Fall I'm taking three classes: Compilers, Algorithms, and the independent study. As the part of my independent study, I'll be blogging the progress weekly here. &lt;br /&gt;&lt;br /&gt;So, last week I spent coding the Trajectory page for the &lt;a href="http://code.google.com/p/hackystat-ui-wicket/"&gt;ProjectBrowser&lt;/a&gt; component of the &lt;a href="http://code.google.com/p/hackystat/"&gt;Hackystat&lt;/a&gt;. This was my very first experience using &lt;a href="http://wicket.apache.org/"&gt;Apache Wicket&lt;/a&gt; framework as well as &lt;a href="http://www.mortbay.org/jetty/"&gt;Jetty Web Server&lt;/a&gt;, since previously in my web-development I was using &lt;a href="http://code.google.com/webtoolkit"&gt;Google Web Toolkit&lt;/a&gt; and &lt;a href="/http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;. It was a fun experience to learn a new framework which is so different from GWT. Can’t say if it’s better or worse, but for sure it’s different. For now it looks a way easier to start coding using Wicket than GWT. When started I didn't follow the &lt;a href="http://code.google.com/p/hackystat-ui-wicket/wiki/DeveloperGuide"&gt;Hints for development&lt;/a&gt; guide but cloned the telemetry package and started by altering the existing code.&lt;br /&gt;&lt;br /&gt;I've had the custom telemetry simulation package I've coded earlier for stand-alone trajectory so data for two trajectories were populated right away into my local sensorbase:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/seninp/SLwyspFQZ9I/AAAAAAAAANs/2HGYEQILvRY/trajectory1-devtime.png" alt="trajectory1 devtime plot"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Trajectory1&lt;/b&gt; has the lifecycle from the January, 1, 2008 till February, 1, 2008 &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/seninp/SLwystlZsmI/AAAAAAAAAN0/FwZG6n13xio/trajectory2-devtime.png" alt="trajectory2 devtime plot"/&gt;&lt;br /&gt;&lt;br /&gt;while &lt;b&gt;Trajectory2&lt;/b&gt; has the lifecycle from the March, 1, 2008 till April, 1, 2008.&lt;br /&gt;&lt;br /&gt;The lack of an overlap between lifecycles for the trajectory1 and trajectory 2 makes it &lt;b&gt;impossible to plot&lt;/b&gt; both telemetry curves simultaneously using the Telemetry component of ProjectBrowser. &lt;br /&gt;&lt;br /&gt;The Trajectory component "mission" is to overcome this limitation and on the following screenshot you can see the third week of devtime for the trajectory1 and second and third weeks of trajectory2:&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/seninp/SLw1VGrOYYI/AAAAAAAAAN8/_rw4ZHh79sU/trajectories-screen1.png" alt="the third week of devtime for the trajectory1 and second and third weeks of trajectory2"/&gt;&lt;br /&gt;&lt;br /&gt;And the &lt;b&gt;Trajectory UI&lt;/b&gt; screenshot: &lt;br /&gt;&lt;img src="http://lh5.ggpht.com/seninp/SLw1VCiUCOI/AAAAAAAAAOE/Oj-05axCq_A/UI-screenshoot.png?imgmax=1024" alt="The Trajectory UI screenshot."/&gt;&lt;br /&gt;&lt;br /&gt;The non-cropped version:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xSxqRK3ll48/SLw_iEV35GI/AAAAAAAAAOk/lIa1sqisDDM/s1600-h/UI-screenshoot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_xSxqRK3ll48/SLw_iEV35GI/AAAAAAAAAOk/lIa1sqisDDM/s400/UI-screenshoot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5241133920866002018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are some changes I've made in the original Telemetry UI and plotting protocol I'd like to get feedback for:&lt;br /&gt;&lt;br /&gt;1) The color schema for the plots: I've coded the new "color-picker" method which picks colors from the JetColors palette instead of random color selection. I personally found that some of the random colors which are selected by the original Telemetry color-picker are very hard to read.&lt;br /&gt;&lt;br /&gt;2) As you can see, there is no "date ticks" at X axis of the plot... and I don't like it, but didn't explore yet the possibility to print two time-lines along the X axis.&lt;br /&gt;&lt;br /&gt;3) Right now I can extend date interval for the one of the two projects to the right, I don't know if it's good or not, but it's rather feature than bug (IMO). I've got an idea that it would be nice to have the ability to introduce the indent before the one of projects interval beginning too... I'm almost there.&lt;br /&gt;&lt;br /&gt;4) Should I merge my code with the hackystat-ui-wicket trunk?&lt;br /&gt;&lt;br /&gt;So, this is my current progress and right now I'm implementing the &lt;a href="http://en.wikipedia.org/wiki/Dynamic_time_warping"&gt;Dynamic Time Warping&lt;/a&gt; algorithm for trajectories comparison. The current idea is to display the warped curves and warping procedure parameters just below the original trajectory plot.&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5683001707841229621?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5683001707841229621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5683001707841229621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5683001707841229621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5683001707841229621'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/09/starting-fall08.html' title='Starting the Fall&apos;08.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/seninp/SLwyspFQZ9I/AAAAAAAAANs/2HGYEQILvRY/s72-c/trajectory1-devtime.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6635285022949563233</id><published>2008-01-21T05:37:00.000-08:00</published><updated>2008-01-21T16:02:43.965-08:00</updated><title type='text'>Serving files from your GWT app.</title><content type='html'>Also there are other ways to make this trick, I found this implementation easiest.&lt;br /&gt;&lt;br /&gt;So. I have a GWT app nicely running but at some point I faced a new requirement - application need to be able create files at server side and serve this files through client to the user, and requirement is that user browser should open "Save as" dialog after the user clicks on the link.&lt;br /&gt;&lt;br /&gt;Okay,  what I've done first? Since everything coded in GWT, I've immediately created servlet at the server side like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.io.DataInputStream;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletContext;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.ServletOutputStream;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;public class FileServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt; private static final long serialVersionUID = -4356636877078339046L;&lt;br /&gt;&lt;br /&gt; byte[] bbuf = new byte[1024];&lt;br /&gt;&lt;br /&gt; private static final String textFileName = "files/text.txt";&lt;br /&gt;&lt;br /&gt; public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;     throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;   String filename = textFileName;&lt;br /&gt;  &lt;br /&gt;   try {&lt;br /&gt;     ServletOutputStream out = response.getOutputStream();&lt;br /&gt;     ServletContext context = getServletConfig().getServletContext();&lt;br /&gt;&lt;br /&gt;     File file = new File(context.getRealPath("") + "/" + filename);&lt;br /&gt;     String mimetype = context.getMimeType(filename);&lt;br /&gt;&lt;br /&gt;     response.setContentType((mimetype != null) ? mimetype : "application/octet-stream");&lt;br /&gt;     response.setContentLength((int) file.length());&lt;br /&gt;     response.setHeader("Content-Disposition", "attachement; filename=\"" + filename + "\"");&lt;br /&gt;&lt;br /&gt;     DataInputStream in = new DataInputStream(new FileInputStream(file));&lt;br /&gt;&lt;br /&gt;     int length;&lt;br /&gt;     while ((in != null) &amp;amp;&amp;amp; ((length = in.read(bbuf)) != -1)) {&lt;br /&gt;       out.write(bbuf, 0, length);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     in.close();&lt;br /&gt;     out.flush();&lt;br /&gt;     out.close();&lt;br /&gt;   }&lt;br /&gt;   catch (Exception e) {&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;i.e. servlet which reads the file (hardcoded name here) and streams it to the client side of webapp, and mapped it in the web.xml as independent from GWT servlet named FileServer. In my app I had a button which "generates a file" so i've attached code to the the button listener:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, GWT.getModuleBaseURL() + "FileServer");&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;rb.sendRequest("GetFile", new RequestCallback() {&lt;br /&gt;public void onError(Request request, Throwable exception) {&lt;br /&gt;Window.alert("Error getting file");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void onResponseReceived(Request request, Response response) {&lt;br /&gt;System.out.println("response Recieved");&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;} catch (RequestException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;while everything looks nice, nothing worked, by debugging I found that server gets the request and generates file, servlet streams the data, but no "Save As..." dialog appears... hmm... Than I wasted _a lot_ of time trying to fix this stuff until I got a point that &lt;b&gt; my GET request is not the same GET request that hyperlink generates&lt;/b&gt;, so right solution on the client side is to create a hyperlink like follows:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;new HTML("&lt; \a href=\"/file-server-sample/FileServer\"&gt;Get a text file&lt;/ \a&gt;")&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;which queries same servlet and invokes proper dialog.&lt;br /&gt;now it works, everybody happy :). Of course you can add parameters to you hyperlink and see those in servlet to alter file generation behavior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6635285022949563233?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6635285022949563233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6635285022949563233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6635285022949563233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6635285022949563233'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2008/01/serving-files-from-your-gwt-app.html' title='Serving files from your GWT app.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-3538186099132558086</id><published>2007-08-20T08:10:00.000-07:00</published><updated>2007-08-20T08:13:56.871-07:00</updated><title type='text'>Great tool for web development: Firebug.</title><content type='html'>Just want to share the tool I found: &lt;a href="http://www.getfirebug.com/"&gt;Get Firebug here&lt;/a&gt;. I just love it's ability to "Tweak CSS to perfection", "Visualize CSS metrics" along with Javascripts debug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-3538186099132558086?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/3538186099132558086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=3538186099132558086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3538186099132558086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/3538186099132558086'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/08/great-tool-for-web-development-firebug.html' title='Great tool for web development: Firebug.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-1169534096720814076</id><published>2007-08-19T19:07:00.000-07:00</published><updated>2007-08-19T19:19:06.775-07:00</updated><title type='text'>Installing cygwin on Vista.</title><content type='html'>I've got new Dell with Vista installed on and tried to install Cygwin today. It didn't worked... Installer stuck at gnuplot.sh... &lt;br /&gt;&lt;br /&gt;In order to move over this point I've had to use the get Sysinternals' &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/ProcessExplorer.mspx"&gt;Process Explorer &lt;/a&gt; to kill this sh process, than it stuck on tetex-tiny.sh, killed again, than post-texmf.sh killed. After that setup finished, I had to do some magic though:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt; mkpasswd -l [-d] &gt; /etc/passwd&lt;br /&gt;&gt; mkgroup  -l [-d] &gt; /etc/group&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;so, command line worked...&lt;br /&gt;I added C:\cygwin\bin to Windows PATH&lt;br /&gt;and had to do magic again to get X client running...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ash from cmd.exe&lt;br /&gt;than ran rebaseall&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;seems to be working at least so far...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-1169534096720814076?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/1169534096720814076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=1169534096720814076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1169534096720814076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/1169534096720814076'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/08/installing-cygwin-on-vista.html' title='Installing cygwin on Vista.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8305249501136304834</id><published>2007-05-28T01:13:00.000-07:00</published><updated>2007-05-29T10:22:53.847-07:00</updated><title type='text'>Some Recipes to Improve Your Google Web Toolkit Development</title><content type='html'>While struggling with GWT debugging and development I found a pretty good article which has a good reasoning why and how a GWT-based project could be divided into "independent" parts from the development perspective of view: &lt;a href="http://www.javaworld.com/javaworld/jw-04-2007/jw-04-gwt.html"&gt;Some Recipes to Improve Your Google Web Toolkit Development&lt;/a&gt;. Will try to follow these guidelines right after tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8305249501136304834?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8305249501136304834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8305249501136304834' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8305249501136304834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8305249501136304834'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/05/some-recipes-to-improve-your-google-web.html' title='Some Recipes to Improve Your Google Web Toolkit Development'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-9219103032601384025</id><published>2007-05-15T22:01:00.000-07:00</published><updated>2007-05-15T23:44:38.505-07:00</updated><title type='text'>Happy Coding Hour with Philip.</title><content type='html'>I missed all deadlines for making this post, but had a good reason, that I'll explain further:&lt;br /&gt;&lt;br /&gt;So, back to the coding hour: it was just great. We worked on my GWT telemetryviewer, but most of the time we spent discussing and drawing on the board. Philip asks me questions that I wasn't able to answer and which forces me to learn more. I do appreciate this, it reminds me class teaching experience: you seems to know all, but student asks you are very "dumb" (in your opinion) question - ... and you are lost. You just can not answer straight, you are puzzled by a question because it so simple that it really cuts down to the bones of the subject through all the meat. That's it. I've learned the lesson: even if GWT claims that it hides all DOM and client-server interaction from the developer, I must have an idea how all this stuff works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-9219103032601384025?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/9219103032601384025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=9219103032601384025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9219103032601384025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9219103032601384025'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/05/happy-coding-hour-with-philip.html' title='Happy Coding Hour with Philip.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5012716477137490686</id><published>2007-05-09T01:54:00.000-07:00</published><updated>2007-05-09T01:56:18.741-07:00</updated><title type='text'>Happy coding with Hongbing.</title><content type='html'>During coding hour (in fact we spent about 90 min) we were working on the UI design today. We tried to follow &lt;a href="http://code.google.com/p/hackystat-ui-telemetryviewer/wiki/SettingUpEclipse"&gt;my instructions&lt;/a&gt; about installing the environment and failed since GWT seems to keep absolute paths within its config and datafiles. We had to change hardcoded paths manually. &lt;br /&gt;After stuff was installed and we got mockup working we were trying to understand the GWT hosted and compiled modes along with hosting the mockup within the Tomcat. This task turned out to be pretty difficult since I am using JFreeChart jar and servlet along with JCommon. Basically we gave up and proceeded further.&lt;br /&gt;The last timeframe we spent discussing my UI design. Hongbing was developing HackyStat for a long time and helped me to figure out which way of abstractions would fit previous HackyStat architecture (I want reuse some code instead of hacking by myself). Overall this part was a most productive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5012716477137490686?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5012716477137490686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5012716477137490686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5012716477137490686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5012716477137490686'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/05/happy-coding-with-hongbing.html' title='Happy coding with Hongbing.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-605890974942461379</id><published>2007-05-05T01:15:00.000-07:00</published><updated>2007-05-05T01:26:00.817-07:00</updated><title type='text'>Thinking Linux?</title><content type='html'>Okay, I was using SuSe for more than three years now, both Enterprise @HPC and Open @home. I like it, I think Novell rules, and would recommend it for everybody, but boy, there are only 2% females out there in the real life using SuSe??? Something wrong out there, because I have two females and two males in my family using SuSe, i.e. 50/50, WHat's up with others 27458 users taking the &lt;a href="http://files.opensuse.org/opensuse/en/6/6c/Opensuse_survey_102_data_final.pdf"&gt;survey?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-605890974942461379?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/605890974942461379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=605890974942461379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/605890974942461379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/605890974942461379'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/05/thinking-linux.html' title='Thinking Linux?'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-8858260790677228072</id><published>2007-04-24T23:31:00.000-07:00</published><updated>2007-04-25T11:26:09.768-07:00</updated><title type='text'>Virtues of Monoculture, Or Why Microsoft Wins.</title><content type='html'>I found a very good piece of writing that points out many things I was confused about for a long time. This article precisely and sharply points out all my doubts with Open Source. So, I am now even more confused while struggling with Ruby and AJAX, REST and GWT...  But I definitely know, that once you (or I) get to the .Net side &lt;span style="font-style:italic;"&gt;"You’re always going to be running on a Windows platform. You got the pretty gold ring, but Sauron gets to pull your strings and make you dance."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oreillynet.com/onlamp/blog/2007/04/the_virtues_of_monoculture.html"&gt;&lt;br /&gt;Virtues of Monoculture, Or Why Microsoft Wins.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-8858260790677228072?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/8858260790677228072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=8858260790677228072' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8858260790677228072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/8858260790677228072'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/04/virtues-of-monoculture-or-why-microsoft.html' title='Virtues of Monoculture, Or Why Microsoft Wins.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-2882130513703794495</id><published>2007-04-23T19:09:00.000-07:00</published><updated>2007-04-24T23:38:52.398-07:00</updated><title type='text'>CookBook on Rails</title><content type='html'>Ok.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Since Eclipse is downloaded and runs perfectly (see previous post), I went to the Ruby side again.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let me note that before struggling with Eclipse I had some stuff installed (see below), and I am going to use it now.&lt;br /&gt;1. &lt;a href="http://rubyforge.org/frs/?group_id=167"&gt;Ruby 1.8.5&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://rubyforge.org/frs/?group_id=126"&gt;Ruby Gems 0.9.2&lt;/a&gt; (extract, then run "ruby setup.rb")&lt;br /&gt;3. &lt;b&gt;Rails&lt;/b&gt; ("gem install rails --include-dependencies")&lt;br /&gt;4. &lt;a href="http://dev.mysql.com/downloads/mysql/5.0.html"&gt;MySQL 5.0&lt;/a&gt; which was installed as the service at mysql://localhost:3306&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Now we are setting up the Eclipse environment:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;The Ruby setup:&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_xSxqRK3ll48/Ri2O8-VkUXI/AAAAAAAAADc/yG8zo87kwAY/s1600-h/rails_config01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_xSxqRK3ll48/Ri2O8-VkUXI/AAAAAAAAADc/yG8zo87kwAY/s320/rails_config01.png" alt="" id="BLOGGER_PHOTO_ID_5056855134783689074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Rails setup:&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_xSxqRK3ll48/Ri2PAOVkUYI/AAAAAAAAADk/8p1snvY1oGY/s1600-h/rails_config02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_xSxqRK3ll48/Ri2PAOVkUYI/AAAAAAAAADk/8p1snvY1oGY/s320/rails_config02.png" alt="" id="BLOGGER_PHOTO_ID_5056855190618263938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_xSxqRK3ll48/Ri2PVOVkUZI/AAAAAAAAADs/D19hdQsIdbY/s1600-h/rails_config03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_xSxqRK3ll48/Ri2PVOVkUZI/AAAAAAAAADs/D19hdQsIdbY/s320/rails_config03.png" alt="" id="BLOGGER_PHOTO_ID_5056855551395516818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At this point I am able to create a Rails project through ..-&gt;New Project -&gt; Rails Project -&gt; ... It runs and makes some "standard Rails welcome" output in browser.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_xSxqRK3ll48/Ri2RlOVkUaI/AAAAAAAAAD0/vfDvxdC34WY/s1600-h/rails_test.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_xSxqRK3ll48/Ri2RlOVkUaI/AAAAAAAAAD0/vfDvxdC34WY/s320/rails_test.png" alt="" id="BLOGGER_PHOTO_ID_5056858025296679330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Time to configure MySQL.&lt;/b&gt;&lt;br /&gt;To work with MySQL stuff I've decided to use old good Eclipse Data Tools Platform (DTP) which employs connector/J from MySQL.&lt;br /&gt;To setup Rails MySQL connector stuff I run "gem install mysql" and choose first (1) option.&lt;br /&gt;&lt;br /&gt;At this point I have MySQL running as service, and Eclipse DTP and Rails are ready to connect it. In Eclipse I configured MySQL connectivity: ...-&gt;Preferences-&gt;Connectivity-&gt;...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_xSxqRK3ll48/Ri25ceVkUbI/AAAAAAAAAD8/SwGsg4thN38/s1600-h/eclipse_connectivity.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_xSxqRK3ll48/Ri25ceVkUbI/AAAAAAAAAD8/SwGsg4thN38/s320/eclipse_connectivity.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5056901855437935026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;And now we can use SQL Explorer ...&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_xSxqRK3ll48/Ri26neVkUdI/AAAAAAAAAEM/YDImg7871EY/s1600-h/eclipse_sqlexplorer.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_xSxqRK3ll48/Ri26neVkUdI/AAAAAAAAAEM/YDImg7871EY/s320/eclipse_sqlexplorer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5056903143928123858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;... or Data View to fix our databases and run the example from &lt;a href="http://www.onlamp.com/pub/a/onlamp/2006/12/14/revisiting-ruby-on-rails-revisited.html?page=2"&gt;OnLamp.com: Rolling with Ruby on Rails Revisited&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_xSxqRK3ll48/Ri26e-VkUcI/AAAAAAAAAEE/K-XWR0_rCpY/s1600-h/eclipse_data.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_xSxqRK3ll48/Ri26e-VkUcI/AAAAAAAAAEE/K-XWR0_rCpY/s320/eclipse_data.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5056902997899235778" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-2882130513703794495?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/2882130513703794495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=2882130513703794495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2882130513703794495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/2882130513703794495'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/04/cookbook-on-rails.html' title='CookBook on Rails'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_xSxqRK3ll48/Ri2O8-VkUXI/AAAAAAAAADc/yG8zo87kwAY/s72-c/rails_config01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6285823741049659356</id><published>2007-04-21T17:08:00.000-07:00</published><updated>2007-04-23T15:43:25.221-07:00</updated><title type='text'>Continuing the Ruby way... (Windows)</title><content type='html'>So, I've installed Ruby at my Windows machine along with RDT and RadRails Eclipse plugins and my Eclipse went wrong. It doesn't want to load, it cannot update due to some insane dependencies...&lt;br /&gt;&lt;br /&gt;So, I've decided to reinstall Eclipse.&lt;br /&gt;&lt;br /&gt;Since I am using WTP, at first I got it downloaded from IBM, but id didn't want to update, I've tried WTP site and this distros didn't work also. I got empty Eclipse and tried to install all my stuff, but it died on update again.&lt;br /&gt;&lt;br /&gt;And after I found the best Eclipse configurator ever! Take a look at it at &lt;a href="http://www.eclipse.org/callisto/redirect.php?A=Innoopract"&gt;Innoopract&lt;/a&gt;. It does has all needed packages and plugins: I use Java, WTP, CDT, EPIC and RDT with dozens of plugins and tools. I got em all as the one zip, unzipped and working on Ruby skills now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6285823741049659356?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6285823741049659356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6285823741049659356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6285823741049659356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6285823741049659356'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/04/continuing-ruby-way-windows.html' title='Continuing the Ruby way... (Windows)'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-4559350975303903520</id><published>2007-04-13T22:19:00.000-07:00</published><updated>2007-04-13T23:19:42.369-07:00</updated><title type='text'>Went for mod_fcgid instead of mod_fastcgi</title><content type='html'>Getting the module&lt;br /&gt;&lt;pre&gt; &lt;br /&gt;# wget http://prdownloads.sourceforge.net/mod-fcgid/mod_fcgid.2.1.tar.gz?download&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Need to fix Makefile so it point to /usr/share/apache2 and add copy couple of the libraries from /usr/include/apache2-prefork to /usr/include/apache2: mpm.h and mpm_common.h to avoid this error:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# /tmp/mod_fcgid.2.1 # make&lt;br /&gt;/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -I.  -O2 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -g -fPIC -Wall -fno-strict-aliasing -DLDAP_DEPRECATED  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -DAP_DEBUG  -DSSL_EXPERIMENTAL_ENGINE -DMAX_SERVER_LIMIT=200000 -DLDAP_DEPRECATED -DMAXLINE=4096  -I/usr/include/apache2 -I. -I/usr/include/apr-1 -prefer-pic -c arch/unix/fcgid_proc_unix.c &amp;&amp; touch fcgid_proc_unix.slo&lt;br /&gt;In file included from arch/unix/fcgid_proc_unix.c:13:&lt;br /&gt;/usr/include/apache2/mpm_common.h:46:17: error: mpm.h: No such file or directory&lt;br /&gt;In file included from arch/unix/fcgid_proc_unix.c:13:&lt;br /&gt;/usr/include/apache2/mpm_common.h:349: error: expected ')' before '*' token&lt;br /&gt;make: *** [fcgid_proc_unix.slo] Error 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So it make:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# make&lt;br /&gt;# strip .libs/mod_fcgid.so&lt;br /&gt;# make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This has to be added to httpd.conf:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;This is for fastcgi-mode Ruby on Rails ( Thank Andre Nathan giving me this demo configuration )&lt;br /&gt;&lt;br /&gt;LoadModule fcgid_module modules/mod_fcgid.so&lt;br /&gt;SocketPath /tmp/fcgidsock&lt;br /&gt;SharememPath /tmp/fcgidshm&lt;br /&gt;DefaultInitEnv RAILS_ENV production&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /home/sneakymustard/tumble/public&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options ExecCGI FollowSymLinks&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride AuthConfig Indexes Limit&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddHandler fcgid-script .fcgi&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # You need&lt;br /&gt;mod_fcgid version &amp;gt;= 2.1 to support arguments "xxx/dispatch.fcgi" in&lt;br /&gt;FCGIWrapper &lt;br&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCGIWrapper "/usr/bin/ruby&lt;br /&gt;/home/sneakymustard/tumble/public/dispatch.fcgi" .fcgi&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteEngine On&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteRule ^$ index.html [QSA]&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteCond %{REQUEST_FILENAME} !-f&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]&lt;br&gt;&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;along with&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;AddHandler fastcgi-script fcgi&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /srv/www/htdocs/&amp;gt;&lt;br /&gt;  AllowOverride All&lt;br /&gt;  Options FollowSymLinks&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /srv/www/rails/*/public/&amp;gt;&lt;br /&gt;  Allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SocketPath /tmp/fcgidsock&lt;br /&gt;AddHandler fcgid-script fcgi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Edit the &lt;pre&gt;APACHE_MODULES&lt;/pre&gt; line in &lt;pre&gt;/etc/sysconfig/apache2&lt;/pre&gt; by inserting “fcgid” and removing “fastcgi”.&lt;br /&gt;&lt;br /&gt;HOORAY!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_xSxqRK3ll48/RiByagKl9WI/AAAAAAAAAB8/0sS6i8cY4mU/s1600-h/screen2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_xSxqRK3ll48/RiByagKl9WI/AAAAAAAAAB8/0sS6i8cY4mU/s320/screen2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5053164581546227042" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-4559350975303903520?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/4559350975303903520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=4559350975303903520' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4559350975303903520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/4559350975303903520'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/04/wget-httpprdownloads.html' title='Went for mod_fcgid instead of mod_fastcgi'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_xSxqRK3ll48/RiByagKl9WI/AAAAAAAAAB8/0sS6i8cY4mU/s72-c/screen2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-5934500128919261313</id><published>2007-04-13T20:39:00.000-07:00</published><updated>2007-04-13T23:20:29.267-07:00</updated><title type='text'>The Ruby Way :-), Руби на рельсах</title><content type='html'>Thats it. Seeing other people (Robert was the latest victim :-) ) being attracted by Ruby made me thinking that everything is not that bad. So, while running my &lt;a href="http://icloudsmcmc.blogspot.com/2007/04/finishing-figures.html"&gt;computations&lt;/a&gt; I've decided to see what that beast really is. &lt;br /&gt;&lt;br /&gt;1. Using Yast (I have SuSe 10.2) I've installed:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;  * apache2&lt;br /&gt;  * apache2-devel&lt;br /&gt;  * apache2-mod_fastcgi&lt;br /&gt;  * ruby&lt;br /&gt;  * ruby-devel&lt;br /&gt;  * ruby-doc-ri&lt;br /&gt;  * rubygems&lt;br /&gt;  * FastCGI&lt;br /&gt;  * FastCGI-devel&lt;br /&gt;  * zlib&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2. in shell:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;  * # gem install fcgi&lt;br /&gt;  * # gem install mysql&lt;br /&gt;  * # install rails -y&lt;br /&gt;  * # mkdir /srv/www/rails&lt;br /&gt;  * # mkdir /srv/www/fcgi-log&lt;br /&gt;  * # chown wwwrun /srv/www/fcgi-log&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;3. Do a &lt;PRE&gt; # vi /etc/apache2/httpd.conf &lt;/PRE&gt; and add &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;#&lt;br /&gt;# Ruby stuff&lt;br /&gt;#&lt;br /&gt;AddHandler fastcgi-script fcgi&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /srv/www/htdocs/&amp;gt;&lt;br /&gt;  AllowOverride All&lt;br /&gt;  Options FollowSymLinks&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /srv/www/rails/*/public/&amp;gt;&lt;br /&gt;  Allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I've added to &lt;pre&gt;/etc/sysconfig/apache2&lt;/pre&gt; in APACHE_MODULES words “rewrite” and “fastcgi”.&lt;br /&gt;&lt;br /&gt;4. I think that I am finally done by doing following:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# cd /srv/www/rails&lt;br /&gt;# rails test&lt;br /&gt;# chown -R wwwrun:www test/tmp&lt;br /&gt;# chown -R wwwrun:www test/public&lt;br /&gt;# ln -s /srv/www/rails/test/public /srv/www/htdocs/test&lt;br /&gt;# cd test/public&lt;br /&gt;# vi .htaccess&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;and adding &lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;RailsFCGIHandler.Process! '/srv/www/fcgi-log/test_fcgi_crash.log'&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;to the end of .htaccess&lt;br /&gt;&lt;br /&gt;AND FINALLY &lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# rcapache2 start&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;AND I'VE GOT AN ERROR THAT KEEP ME WORKING FOR 2 HOURS ALREADY:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;zhabanet-amd:/srv/www # rcapache2 start&lt;br /&gt;Module "fastcgi" is not installed, ignoring.&lt;br /&gt;Check the APACHE_MODULES setting in /etc/sysconfig/apache2.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I gave up for today...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-5934500128919261313?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/5934500128919261313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=5934500128919261313' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5934500128919261313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/5934500128919261313'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/04/ruby-way.html' title='The Ruby Way :-), Руби на рельсах'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-6465651294816520534</id><published>2007-03-31T01:42:00.000-07:00</published><updated>2007-03-31T01:45:13.973-07:00</updated><title type='text'>Some off-site notes.</title><content type='html'>While working on my other project, &lt;a href="http://icloudsmcmc.blogspot.com/"&gt;iClouds&lt;/a&gt;, found pretty useful thing as  &lt;a href="http://jakarta.apache.org/commons/cli/" target="_blank"&gt;CLI package&lt;/a&gt; of the Jakarta/Apache commons project, it worked out of the box and I'm very happy about taking care of command-line stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-6465651294816520534?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/6465651294816520534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=6465651294816520534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6465651294816520534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/6465651294816520534'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/03/some-off-site-notes.html' title='Some off-site notes.'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8897543618002127176.post-9098853697035304455</id><published>2007-03-29T11:19:00.000-07:00</published><updated>2007-03-29T11:34:58.931-07:00</updated><title type='text'>Remote Procedure Calls in Google Web Toolkit</title><content type='html'>The information posted here was taken from &lt;a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html"&gt;GWT Beta developer manual,&lt;/a&gt; basically they say that their "services" are custom build ones: "&lt;i style="font-style: italic;"&gt;the term service&lt;/i&gt;&lt;span style="font-style: italic;"&gt; in this  context isn't the same as the more general "web service" concept. In  particular, GWT services are not related to the Simple Object Access  Protocol (SOAP).&lt;/span&gt;" The diagram of the RPC plumbing suppose to give us some idea about &lt;span style="font-style: italic;"&gt;services&lt;/span&gt; functionality, but didn't gave much to me personally since I've never touched this technology.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_xSxqRK3ll48/RgwEoUunE7I/AAAAAAAAAAM/cIMP5n_eRCU/s1600-h/AnatomyOfServices.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_xSxqRK3ll48/RgwEoUunE7I/AAAAAAAAAAM/cIMP5n_eRCU/s320/AnatomyOfServices.gif" alt="" id="BLOGGER_PHOTO_ID_5047414373180969906" border="0" /&gt;&lt;/a&gt;I have downloaded GWT stuff locally and trying to get my lovely dependency telemetry within the rich, GWT based application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8897543618002127176-9098853697035304455?l=senin-seblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://senin-seblog.blogspot.com/feeds/9098853697035304455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8897543618002127176&amp;postID=9098853697035304455' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9098853697035304455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8897543618002127176/posts/default/9098853697035304455'/><link rel='alternate' type='text/html' href='http://senin-seblog.blogspot.com/2007/03/remote-procedure-calls-in-google-web.html' title='Remote Procedure Calls in Google Web Toolkit'/><author><name>Pavel Senin</name><uri>http://www.blogger.com/profile/18251820456691227179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_xSxqRK3ll48/SPQTaxv9ppI/AAAAAAAAAVc/OqPe2hBj0KI/S220/IMG_0872.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_xSxqRK3ll48/RgwEoUunE7I/AAAAAAAAAAM/cIMP5n_eRCU/s72-c/AnatomyOfServices.gif' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
