<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUMDQnw4cSp7ImA9WhBaE0w.&quot;"><id>tag:blogger.com,1999:blog-6862508</id><updated>2013-05-23T13:51:13.239+01:00</updated><category term="ruby" /><category term="file formats" /><category term="incanter" /><category term="education" /><category term="data mining" /><category term="clojure" /><category term="erlang" /><category term="fp" /><category term="2011" /><category term="latex" /><category term="jenkins" /><category term="boost" /><category term="maven" /><category term="algorithms" /><category term="mapreduce" /><category term="asio" /><category term="hadoop" /><category term="cs" /><category term="software development" /><category term="home" /><category term="it" /><category term="travel" /><category term="job" /><category term="f#" /><category term="cmake" /><category term="opensource" /><category term="information retrieval" /><category term="git" /><category term="DSL" /><category term="tips" /><category term="haskell" /><category term="internet" /><category term="video" /><category term="spirit" /><category term="windows" /><category term="sicp" /><category term="handheld" /><category term="germany" /><category term="eclipse" /><category term="solaris" /><category term="c++" /><category term="work" /><category term="hardware" /><category term="presentations" /><category term="humor" /><category term="linux" /><category term="scheme" /><category term="oss" /><category term="scala" /><category term="emacs" /><category term="russia" /><category term="cuda" /><category term="personal" /><category term="java" /><category term="msoffice" /><category term="vacation" /><category term="photography" /><category term="security" /><category term="opencl" /><category term="programming" /><category term="lucene" /><category term="2010" /><category term="lisp" /><category term="common-lisp" /><category term="content filtering" /><category term="instant messaging" /><category term="book" /><category term="life" /><category term="squid" /><category term="emulation" /><category term="gpu" /><category term="tika" /><category term="unix" /><category term="muse" /><category term="mac" /><category term="palm" /><category term="cedet" /><category term="microsoft" /><category term="ocaml" /><category term="quality" /><category term="article" /><category term="machine-learning" /><category term="version control" /><category term="opensolaris" /><category term="testing" /><category term="acer" /><category term="vcs" /><category term="mahout" /><category term="google" /><category term="R" /><title>Alex Ott's blog</title><subtitle type="html">Blog dedicated to Software Development, Unixes, Content Filtering, Emacs, Lisp, and other things.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://alexott.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>350</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/alexott" /><feedburner:info uri="alexott" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D08BR3c6eCp7ImA9WhNVGUs.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-6566441140028222178</id><published>2012-12-31T15:57:00.001+01:00</published><updated>2012-12-31T15:57:36.910+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-31T15:57:36.910+01:00</app:edited><title>2012th in overview...</title><content type="html">It was relatively quiet year. It started with 2 weeks vacation in &lt;a href="https://picasaweb.google.com/106643849267592516873/2012DomRep"&gt;Dominican Republic&lt;/a&gt; - it was interesting travel, I and my wife enjoyed it a lot, and want to make it again, may be next year.&lt;br /&gt;
Not so much happened on work, most of tasks were not so challenging as in 2011th, although I tried to do some experimenting staff, trying to apply machine learning &amp;amp; related knowledge to my area of expertise. But no of these experiments went to production (I hope, that they will, but who knows when this will happen). I also participated in Microsoft's plugfest - conference about file format &amp;amp; protocols - it was very useful for me, and as usual, most of useful information was obtained during conversations with developers.&lt;br /&gt;
I continued to self-study - read a lot of books on different topics: machine learning, natural language processing, big data, software development practices, etc. (you can &lt;a href="http://www.goodreads.com/author/show/5350963.Alex_Ott"&gt;follow me on Goodreads&lt;/a&gt; if you're interested). But pile of books with label 'to-read' is still too big.&lt;br /&gt;
I also took several courses from Coursera: Natural Language Processing was very interesting, and right now, I'm doing Heterogenous Parallel Programming - to refresh GPGPU programming skills.&lt;br /&gt;
This year I did 2 presentations about Clojure - one for functional programming user group in Bielefeld, and second was done as part of small Russian-speaking conference ITSea-2012, that was combined with &lt;a href="https://picasaweb.google.com/106643849267592516873/2012MontenegroCroatia"&gt;vacation in Montenegro&lt;/a&gt;.&lt;br /&gt;
Tried to participate in different open source projects, mostly in &lt;a href="http://cedet.sourceforge.net/"&gt;CEDET&lt;/a&gt; &amp;amp; &lt;a href="http://incanter.org/"&gt;Incanter&lt;/a&gt;, and some other. And I hope, that I'll have enough time to continue this work, especially for CEDET.&lt;br /&gt;
Cycling is still my favorite sport, although I started cycling season relatively late this year, due operation on my right hand, so I managed to ride only 2400 km (last trip was 2 days ago :-)&lt;br /&gt;
&lt;br /&gt;
I want to wish Happy New Year to all my readers, and see you next year!&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/o4AYgqvo70M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/6566441140028222178/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=6566441140028222178" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/6566441140028222178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/6566441140028222178?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/o4AYgqvo70M/2012th-in-overview_31.html" title="2012th in overview..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/12/2012th-in-overview_31.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UBRHszfSp7ImA9WhNSFk8.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-3131893691403909674</id><published>2012-10-30T19:19:00.003+01:00</published><updated>2012-10-30T19:20:55.585+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-30T19:20:55.585+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><category scheme="http://www.blogger.com/atom/ns#" term="article" /><category scheme="http://www.blogger.com/atom/ns#" term="cedet" /><title>New version of article about Emacs/CEDET</title><content type="html">I just uploaded to site the new version of my article &lt;a href="http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html"&gt;A Gentle introduction to CEDET&lt;/a&gt;. I also left &lt;a href="http://alexott.net/en/writings/emacs-devenv/EmacsCedetOld.html"&gt;old version of this article&lt;/a&gt;, but as separate page.&lt;br /&gt;
New version describes CEDET with new activation scheme, so it's now applicable to versions from bzr, and to versions bundled with GNU Emacs (after they will release next GNU Emacs version, where CEDET was updated).&lt;br /&gt;
Besides this, I added small description of how to customize CEDET to work with Java, and small section about setting name completion through the auto-complete package.&lt;br /&gt;
&lt;br /&gt;
Instead of my config file, that contains too much not necessary stuff, now it's better to use &lt;a href="https://gist.github.com/3930120"&gt;separate config&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S. btw, fresh snapshots of CEDET can automatically detect Maven projects, and get classpath information directly from them. So now, names completion works also for 3rd party libraries.  For example, this is name completion during work with source code from Apache Tika:&lt;br /&gt;
&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="https://picasaweb.google.com/lh/photo/tFFmyk0aLM8ApIUjHRoBptMTjNZETYmyPJy0liipFm0?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-lAuMwu9biXk/UIaGuAY2MeI/AAAAAAAAJ80/i3NUpqC3x4U/s400/OutlookExtractor.java_002.png" height="268" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/7fIuLg5zQcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/3131893691403909674/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=3131893691403909674" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/3131893691403909674?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/3131893691403909674?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/7fIuLg5zQcs/new-version-of-article-about-emacscedet.html" title="New version of article about Emacs/CEDET" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-lAuMwu9biXk/UIaGuAY2MeI/AAAAAAAAJ80/i3NUpqC3x4U/s72-c/OutlookExtractor.java_002.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/10/new-version-of-article-about-emacscedet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYFSXg4cSp7ImA9WhJQF0w.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-8159562634343418683</id><published>2012-07-24T10:59:00.000+01:00</published><updated>2012-07-31T07:28:38.639+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-31T07:28:38.639+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mahout" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="machine-learning" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Getting started with examples from "Mahout in Action"</title><content type="html">I decided to write this post because I saw several similar questions on how to start to work with examples from "&lt;a href="http://www.amazon.com/gp/product/1935182684/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1935182684&amp;amp;linkCode=as2&amp;amp;tag=aleottshompag-20"&gt;Mahout in Action&lt;/a&gt;" book (I was technical proofreader for it, and familiar with examples ;-).&lt;br /&gt;
&lt;h3&gt;


Preparations &lt;/h3&gt;
Complete source code of examples from book is available at &lt;a href="https://github.com/tdunning/MiA"&gt;separate repository at Github&lt;/a&gt;, together with short instruction on how to use them.&amp;nbsp; Please, note that book was written &amp;amp; tested for Mahout 0.5 - stable release, that existed at time of publishing, and &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;master&lt;/span&gt;&lt;/b&gt; branch in repository contains code for this version.&amp;nbsp; There are also separate branches for code that was modified to work with Mahout versions 0.6 and 0.7 - they are named accordingly.To obtain code, you can use either Git, or use Github's "download source" functionality.&amp;nbsp; Here are links for all existing versions: &lt;a href="https://github.com/tdunning/MiA/zipball/master"&gt;0.5&lt;/a&gt; (master), &lt;a href="https://github.com/tdunning/MiA/zipball/mahout-0.6"&gt;0.6&lt;/a&gt;, &lt;a href="https://github.com/tdunning/MiA/zipball/mahout-0.7"&gt;0.7&lt;/a&gt; - download and unpack archives to some location.&lt;br /&gt;
To work with examples, you need to have &lt;a href="http://maven.apache.org/"&gt;Apache Maven&lt;/a&gt; installed (it's better to install it from repository on Mac OS X or Linux systems). Maven is used to compile source code and to create packages. Maven project could be also imported into your favorite Java IDE - Eclipse, Netbeans, or Idea (I will explain how to use Eclipse, but for other IDEs the process is similar). To use Maven with Eclipse, you need to have &lt;a href="http://www.eclipse.org/m2e/"&gt;m2eclipse plugin&lt;/a&gt; installed - it will provide import and build functionality.&lt;br /&gt;
To run examples from chapter 16, you'll also need to have &lt;a href="http://zookeeper.apache.org/"&gt;Apache Zookeeper&lt;/a&gt; installed - see instructions in README file in repository - they're pretty detailed.&lt;br /&gt;
You also need to download &lt;a href="http://www.apache.org/dyn/closer.cgi/mahout/"&gt;Mahout distribution&lt;/a&gt; to run some examples (usually they involve execution of &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mahout&lt;/span&gt;&lt;/b&gt; script). Download file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mahout-distribution-&amp;lt;version&amp;gt;.tar.gz&lt;/span&gt; and unpack it. You can also download file &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mahout-distribution-&amp;lt;version&amp;gt;-src.tar.gz&lt;/span&gt;, although this isn't necessary (it contains Mahout's source code).&lt;br /&gt;
I just want to mention, that Mahout is works best on Unix-based systems -- all examples were tested on Mac OS X &amp;amp; Linux. This also applied to Hadoop, so if you're using Windows, it could be better to install Linux in virtual machine and use it for all work.&lt;br /&gt;
&lt;h3&gt;

Build examples&lt;/h3&gt;
To be able to run examples, you need to build packages (jar files). From directory where source code for examples is located (you should have file &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pom.xml&lt;/span&gt;&lt;/b&gt; in this directory) execute following command:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mvn package&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
It will compile source code and create packages. Compiled packages are stored in the &lt;code&gt;target&lt;/code&gt; directory.  There are several files created:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mia-&amp;lt;version&amp;gt;.jar&lt;/code&gt; contains only examples, to run them you need to specify all dependencies;&lt;/li&gt;
&lt;li&gt;
&lt;code style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mia-&amp;lt;version&amp;gt;-jar-with-dependencies.jar&lt;/code&gt; contains examples plus all dependencies - this jar could be run without specifying additional classpath elements;&lt;/li&gt;
&lt;li&gt;
&lt;code style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mia-&amp;lt;version&amp;gt;-job.jar&lt;/code&gt; contains examples plus all dependencies, excluding Hadoop -- it
should be used for Hadoop jobs.&lt;/li&gt;
&lt;/ul&gt;
Use corresponding packages when book refers to them.&lt;br /&gt;
&lt;h3&gt;


Import of example's source code into Eclipse&lt;/h3&gt;
Import of code into Eclipse is very easy - go to menu &lt;b&gt;File&lt;/b&gt;, select &lt;b&gt;Import...&lt;/b&gt; item, and then unfold &lt;b&gt;Maven&lt;/b&gt; and select &lt;b&gt;Existing Maven Projects&lt;/b&gt; from list and press &lt;b&gt;Next&lt;/b&gt;.&amp;nbsp; Eclipse will ask you where source code is located - point to directory where you unpacked examples - Eclipse will analyze pom.xml and will display string like: &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/pom.xml com.manning:mia:0.5:jar&lt;/span&gt;&lt;/b&gt;, you can press &lt;b&gt;Finish&lt;/b&gt; after that.&lt;br /&gt;
After import, project will be opened in Eclipse, and you can look into source code, modify examples if you need, and execute them (see below).&lt;br /&gt;
If you need, you can also import source code of Mahout itself into Eclipse, the procedure is similar, but this may work for all releases - in some cases, it will give you error that some plugins aren't covered by m2eclipse - you can select &lt;b&gt;Ignore&lt;/b&gt; item in &lt;b&gt;Quick fix&lt;/b&gt; menu (when you click right mouse button).&lt;br /&gt;
&lt;h3&gt;

How to run examples&lt;/h3&gt;
You can run examples either from command line, or directly from Eclipse.&lt;br /&gt;
&lt;h4&gt;

Run from Eclipse&lt;/h4&gt;
To run example from Eclipse, select needed class from browser on left, click right mouse button on it, select &lt;b&gt;Run as...&lt;/b&gt;, and from sub-menu, select &lt;b&gt;Java Application&lt;/b&gt;.&lt;br /&gt;
Take into account, that some classes need to have additional parameters specified - you can customize this by selecting &lt;b&gt;Run configurations&lt;/b&gt; item from &lt;b&gt;Run as...&lt;/b&gt; sub-menu.&lt;br /&gt;
For example, code from chapter 2, expects that file &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;intro.csv&lt;/b&gt; is located in current directory (top of the project), while it's located together with source code, so execution without explicit configuration will lead to error. To fix this problem you need to specify that working directory for these examples is in non-default place - go to &lt;b&gt;Run configurations&lt;/b&gt;, and select &lt;b&gt;Arguments&lt;/b&gt; tab in dialog window. Then change &lt;b&gt;Working directory&lt;/b&gt; parameter from &lt;b&gt;Default&lt;/b&gt; to &lt;b&gt;Other&lt;/b&gt;, press &lt;b&gt;Workspace...&lt;/b&gt; button, and select &lt;b&gt;src/main/java/mia/recommender/ch02&lt;/b&gt; directory from tree view. After that you can press &lt;b&gt;Run&lt;/b&gt; button, and your example will be executed without error.&lt;br /&gt;
&lt;h4&gt;

Run from command-line&lt;/h4&gt;
You can run examples from command line either by using java directly, or by using Maven's exec plugin.&lt;br /&gt;
To run examples with java, you need to specify package with all dependencies in classpath, and specify class name to execute, like this:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;java -cp target/mia-0.5-jar-with-dependencies.jar mia.recommender.ch02.IREvaluatorIntro&lt;/b&gt;&lt;br /&gt;
But to run like this, you need to have package recompiled if you did some changes. From this perspective, Maven's exec plugin is more handy - it automatically recompile changed code, and executes it without packaging everything once again.&amp;nbsp; To execute you class with need to issue following command (for this example, you need to copy intro.csv file to top-level directory, or it will fail):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mvn exec:java -Dexec.mainClass="mia.recommender.ch02.IREvaluatorIntro"&lt;/b&gt;&lt;br /&gt;
If your class accepts command-line parameters, then you can specify them using exec.args parameter of plugin:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mvn exec:java -Dexec.mainClass="mia.recommender.ch02.IREvaluatorIntro" -Dexec.args="src"&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
So, I hope, that this article helped you to start with Mahout in Action examples. Most of examples should work as described here, but some requires more work, but you can find instructions for them in the &lt;a href="https://github.com/tdunning/MiA/blob/master/README.markdown"&gt;README file&lt;/a&gt; in source code repository.&lt;br /&gt;
If you're still having questions, then I try to answer them ;-)&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/dieLJhU5HVY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/8159562634343418683/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=8159562634343418683" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8159562634343418683?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8159562634343418683?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/dieLJhU5HVY/getting-started-with-examples-from.html" title="Getting started with examples from &quot;Mahout in Action&quot;" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>13</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/07/getting-started-with-examples-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YNQHkyfSp7ImA9WhJTEEw.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-360805071194282253</id><published>2012-06-18T12:33:00.000+01:00</published><updated>2012-06-18T12:33:11.795+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-18T12:33:11.795+01:00</app:edited><title>Experience with new mouse</title><content type="html">I had some problems with my right hand at the start of this year, so I decided to remove a part of load from it. I started to use left-handed mouse and used it for several months (it's not always possible to work completely without mouse, especially in Windows).&lt;br /&gt;
Week ago I got a new mouse as present - &lt;a href="http://www.amazon.com/gp/product/B00427OTEU/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B00427OTEU"&gt;Evoluent VerticalMouse 4&lt;/a&gt; (for left hand), and used it for a week at home, while used old mouse at work. And I can say, that new mouse is much more comfortable for me - hand is comfortably placed on it, there is separate middle button (instead of less comfortable wheel click, although it also works). There are also additional buttons, that could be programmed to do something useful. Mouse works fine on all tested OSes (Mac, Linux).&lt;br /&gt;
It was so comfortable, so I ordered the same mouse for work and already replaced my old mouse with it.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/e55a0tG9hmg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/360805071194282253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=360805071194282253" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/360805071194282253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/360805071194282253?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/e55a0tG9hmg/experience-with-new-mouse.html" title="Experience with new mouse" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/06/experience-with-new-mouse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIGQXw-fip7ImA9WhNTGEw.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-7077606750640819257</id><published>2012-06-17T14:18:00.000+01:00</published><updated>2012-10-21T10:42:00.256+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-21T10:42:00.256+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><category scheme="http://www.blogger.com/atom/ns#" term="cedet" /><title>ECB &amp; fresh Emacs/CEDET...</title><content type="html">I already twitted about this, and also wrote to ECB &amp;amp; CEDET mailing lists, but I also want to reach Planet Emacs readers :-)&lt;br /&gt;
I made small changes in the ECB code that allow to use it together with fresh Emacs &amp;amp; CEDET versions. Modified code is available in &lt;a href="https://github.com/alexott/ecb/"&gt;my github&lt;/a&gt;. I tried this version together with CEDET from trunk, and also with CEDET from Emacs 24.1, and it worked for me.&lt;br /&gt;
If you're using ECB, please try this modified version, and leave feedback (either here, or by sending e-mail to me or to ECB mailing list). If you'll find bugs, feel free to file a bug using github's issue tracker.&lt;br /&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/bpwTLZlUXLk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/7077606750640819257/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=7077606750640819257" title="29 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7077606750640819257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7077606750640819257?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/bpwTLZlUXLk/ecb-fresh-emacscedet.html" title="ECB &amp; fresh Emacs/CEDET..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>29</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/06/ecb-fresh-emacscedet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAFRnw5cCp7ImA9WhVXEUk.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-1786000495646978555</id><published>2012-03-23T12:42:00.002+01:00</published><updated>2012-04-11T12:11:57.228+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-11T12:11:57.228+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="quality" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="jenkins" /><category scheme="http://www.blogger.com/atom/ns#" term="cmake" /><title>Jenkins + CMake/CTest</title><content type="html">Some time ago I setup &lt;a _mce_href="http://jenkins-ci.org/" href="http://jenkins-ci.org/"&gt;Jenkins CI&lt;/a&gt; to compile &amp;amp; test our code. Installation itself was straightforward,  matched to documentation on official site (besides official  documentation, there is pretty good book "&lt;a href="http://www.amazon.com/gp/product/1449305350/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1449305350" target="_blank"&gt;Jenkins: The Definitive Guide&lt;/a&gt;"). The only problem was that it didn't  work with OpenJDK, so I was need to install Sun JDK.&lt;br /&gt;
For C++ components we're using CMake. Out of box,  Jenkins has no support for CMake, but there is plugin in repository,  that you can install separately. This plugin allows to specify different  options for CMake, and will perform compilation and installation of  code. (Although, at the end, I setup configuration that explicitly run  CMake with needed options, and perform compilation via GNU Make with  some additional options). The main problem with CMake (CTest  really) was that tests results are in format, that isn't acceptable by  default test analyzer that is designed to work with JUnit logs. Plugin  repository has xUnit plugin, that should work with other test  frameworks, but it also doesn't support CTest log format. Solution &lt;a href="http://stackoverflow.com/questions/6329215/how-to-get-ctest-results-in-hudson-jenkins" target="_blank"&gt;was found on StackOverflow&lt;/a&gt; - we need to write custom XSL that will  convert CTest results into JUnit format. I found stylesheet at StackOverflow and slightly &lt;a href="https://gist.github.com/2358656"&gt;modified it&lt;/a&gt;. So, build step for testing now looks following way:&lt;br /&gt;
&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;cd Debug&lt;/span&gt;&lt;/div&gt;&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;TRES=0&lt;/span&gt;&lt;/div&gt;&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;ctest -T test --no-compress-output || true&lt;/span&gt;&lt;/div&gt;&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;if [ -f Testing/TAG ] ; then&lt;/span&gt;&lt;/div&gt;&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;  xsltproc /var/lib/jenkins/userContent/xunit/CMake/2.8/ctest2junix.xsl  Testing/`head -n 1 &amp;lt; Testing/TAG`/Test.xml &amp;gt; CTestResults.xml&lt;/span&gt;&lt;/div&gt;&lt;div _mce_style="padding-left: 30px;" style="padding-left: 30px;"&gt;&lt;span _mce_style="font-family: courier new,courier;" style="font-family: courier new,courier;"&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
I  was need to rewrite 3rd line this way, because Jenkins aborted job if  ctest returned non-0 result if one of tests failed, so other commands  weren't executed, and we had no testing results in dashboard.&lt;br /&gt;
So now, all our components are compiled &amp;amp; tested immediately after check-in, and we're able to catch error early.&lt;br /&gt;
&lt;br /&gt;
Update: last line will cause build be marked as broken if any test is failing. You can remove it, and in this case, Jenkins will mark build as unstable if any test is failing - it will take this information from tests results&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/aH-X1wFkTpc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/1786000495646978555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=1786000495646978555" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1786000495646978555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1786000495646978555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/aH-X1wFkTpc/jenkins-cmakectest.html" title="Jenkins + CMake/CTest" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://alexott.blogspot.com/2012/03/jenkins-cmakectest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4FQXs5cSp7ImA9WhRWE08.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-2047105476927242006</id><published>2011-12-30T14:35:00.001+01:00</published><updated>2011-12-31T10:15:10.529+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T10:15:10.529+01:00</app:edited><title>Year's results...</title><content type="html">I think, that today is appropriate time to look back onto what happened in 2011th, and to think, what to do in next year.&amp;nbsp;Many things happened in 2011th...&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I got promotion to principal engineer, so some new activities were added to my usual duties, I started to work more closely with other teams around the world.&lt;/li&gt;
&lt;li&gt;Traveled a bit - was in England on business trip, &amp;nbsp;together with wife were 3rd time on Canary Islands, spent a week traveling in &lt;a href="https://picasaweb.google.com/106643849267592516873/2011England"&gt;England&lt;/a&gt;, &lt;a href="https://picasaweb.google.com/106643849267592516873/2011Keukenhof"&gt;Holland&lt;/a&gt;, plus did some trips in Germany (&lt;a href="https://picasaweb.google.com/106643849267592516873/11112011CarnivalAtCologne"&gt;Cologne&lt;/a&gt;, &lt;a href="https://picasaweb.google.com/106643849267592516873/2011Rhein"&gt;Rhein&lt;/a&gt;, etc.).&lt;/li&gt;
&lt;li&gt;Rode 2000km on my bicycle, and want to make more next year...&lt;/li&gt;
&lt;li&gt;Participated in release of several books in different roles: as technical proofreader for Mannings "&lt;a href="http://www.amazon.com/gp/product/1935182684?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=1935182684&amp;amp;ref_=sr_1_1&amp;amp;qid=1320161432&amp;amp;sr=8-1"&gt;Mahout in Action&lt;/a&gt;" &amp;amp; "&lt;a href="http://www.amazon.com/gp/product/1935182854?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=1935182854&amp;amp;ref_=sr_1_1&amp;amp;s=books&amp;amp;qid=1320161500&amp;amp;sr=1-1"&gt;Tika in Action&lt;/a&gt;", and as translator for &lt;a href="http://ru-lambda.livejournal.com/133077.html?style=mine"&gt;Russian translation&lt;/a&gt; of famous "&lt;a href="http://www.amazon.com/gp/product/0262162091?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=0262162091&amp;amp;ref_=sr_1_1&amp;amp;s=books&amp;amp;qid=1320161855&amp;amp;sr=1-1"&gt;Types and Programming Languages&lt;/a&gt;", plus I helped slightly in translation/proofing of more functional programming-related books that will be released next year (in Russia).&lt;/li&gt;
&lt;li&gt;Open-source activity wasn't so great as before, because of lack of free time, usually did small patches for different projects - muse, haskell-mode, mahout, CEDET, incanter, and several more.&lt;/li&gt;
&lt;li&gt;Tried to continue to write articles, so at begin of year, I wrote article about &lt;a href="http://alexott.net/en/cpp/CppTestingIntro.html"&gt;TDD &amp;amp; Unit testing in C++&lt;/a&gt;, and at the end of year, wrote (together with &lt;a href="http://my-clojure.blogspot.com/"&gt;Dmitry Bushenko&lt;/a&gt;) &lt;a href="https://docs.google.com/open?id=0BzmL7xzGeOtOOWE1ZTc3NzAtZjkyNy00ZDU5LTg2Y2UtZDc4MmNkNTI1ZmJl"&gt;small tutorial&lt;/a&gt;&amp;nbsp;(in Russian) on how to extend Emacs for refactoring of code. We plan to extend this article with more examples, including more tools from CEDET/Semantic, and than translate it to English. &amp;nbsp;Also gave a talk about Emacs for Scala.by user group (via Google+ Hangout)...&lt;/li&gt;
&lt;li&gt;Read &lt;a href="http://www.goodreads.com/user_challenges/21521"&gt;a lot&lt;/a&gt;, mostly technical books...&lt;/li&gt;
&lt;li&gt;And one of the most interesting experiences was participation in Stanford's University experiment - online classes on &lt;a href="https://www.ai-class.com/"&gt;Artificial Intelligence (AI)&lt;/a&gt; and &lt;a href="http://www.ml-class.org/"&gt;Machine Learning (ML)&lt;/a&gt;. It was very interesting to study there, and they teach me many new interesting things + plus I had a chance to read some books that were bought some time ago, but simply stayed on my bookself, for example,&amp;nbsp;&lt;a href="http://www.amazon.com/gp/product/0136042597/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0136042597"&gt;Artificial Intelligence: A Modern Approach&lt;/a&gt;. I got only 89% overall score on AI class (I need to check my homeworks more carefully ;-), but anyway it's very interesting experience. ML class was more "easy" for me, but it also was interesting and allowed me to study many new things. &amp;nbsp;I hadn't received my certificate for ML class yet, but I hope that it will be good - I did all homeworks &amp;amp; programming tasks... (If you hand't participated in that courses, I recommend to look onto actual list of cources at &lt;a href="http://www.ml-class.org/"&gt;ML Class site&lt;/a&gt;, maybe you'll find something interesting for you - they will offer much more courses in January-March!).&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
What's next? I plan to investigate topics that are interesting for me - natural language processing (including study at &lt;a href="http://www.nlp-class.org/"&gt;Stanford's NLP class&lt;/a&gt;), machine learning, etc. Plan to participate more actively in open source projects, especially in Clojure-related. Continue to read new books (I already prepared pile of books for reading on vacation). Will try to make my personal record in cycling (I plan to make 3000km next year :-). And do many other things...&lt;br /&gt;
&lt;br /&gt;
And now, I want to wish Happy New Year to everybody!&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/_iIRjsGI17Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/2047105476927242006/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=2047105476927242006" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2047105476927242006?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2047105476927242006?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/_iIRjsGI17Q/years-results.html" title="Year's results..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>7</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/12/years-results.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IDRng6cSp7ImA9WhRTEks.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-7354522466737676210</id><published>2011-11-02T21:26:00.000+01:00</published><updated>2011-11-02T21:26:17.619+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-02T21:26:17.619+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><title>Planet Clojure's milestone</title><content type="html">Today, &lt;a href="http://planet.clojure.in/"&gt;Planet Clojure&lt;/a&gt; reached another milestone, and now combines feeds from more than 300 blogs (301, precisely).&lt;br /&gt;
&lt;br /&gt;
P.S. I have a question - does anybody interested in Planet Clojure in other languages than English? For example, I maintain &lt;a href="http://feeds.feedburner.com/RussianClojurePlanet"&gt;Russian Planet Clojure&lt;/a&gt; separately, but maybe it will be better to combine all planets in one place, as subdomains of Planet Clojure?&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/EEcw6lqbRto" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/7354522466737676210/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=7354522466737676210" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7354522466737676210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7354522466737676210?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/EEcw6lqbRto/planet-clojures-milestone.html" title="Planet Clojure's milestone" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/11/planet-clojures-milestone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8GRHk5eip7ImA9WhRTEUs.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-2962618181283246032</id><published>2011-11-01T16:53:00.000+01:00</published><updated>2011-11-01T16:53:45.722+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-01T16:53:45.722+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="machine-learning" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Miscellaneous...</title><content type="html">I hadn't blogged since May, and many things happened since that time.&lt;br /&gt;
&lt;br /&gt;
In June, together with my wife we traveled to England and spent a week, visiting different cities. Although we visited not so much, so we're planning to make another trip to Scotland, and maybe other parts of UK.&lt;br /&gt;
&lt;br /&gt;
Cycling was also big time consumer (this year I made about 2,000km on bicycle), but I like this activity, and planning to upgrade my bicycle next year to something speedy - don't know yet what to select - road bike or time trial bike... &lt;br /&gt;
&lt;h3&gt;Book-related&lt;/h3&gt;As usual, I &lt;a href="http://www.goodreads.com/user_challenges/21521"&gt;read a lot&lt;/a&gt;, investigating new (for me) technologies &amp;amp; best practices.&lt;br /&gt;
Together with Manning's team, I participated (as technical proofreader) in publishing of two books: &lt;a href="http://www.amazon.com/gp/product/1935182684?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=1935182684&amp;amp;ref_=sr_1_1&amp;amp;qid=1320161432&amp;amp;sr=8-1"&gt;Mahout in Action&lt;/a&gt;, and &lt;a href="http://www.amazon.com/gp/product/1935182854?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=1935182854&amp;amp;ref_=sr_1_1&amp;amp;s=books&amp;amp;qid=1320161500&amp;amp;sr=1-1"&gt;Tika in Action&lt;/a&gt;. First book was very interesting for me, as I planned to study this technology anyway, and work with Manning allowed me to dig more deeply into all examples, code, etc. This book is different from other machine learning books because it shows how to solve ML tasks with Mahout in practice.&lt;br /&gt;
Week ago another book-related project also was finished - &lt;a href="http://newstar.rinet.ru/%7Egoga/tapl/"&gt;Russian translation&lt;/a&gt; of well-known book on type theory - &lt;a href="http://www.amazon.com/gp/product/0262162091?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=shr&amp;amp;camp=213733&amp;amp;creative=393185&amp;amp;creativeASIN=0262162091&amp;amp;ref_=sr_1_1&amp;amp;s=books&amp;amp;qid=1320161855&amp;amp;sr=1-1"&gt;Types and Programming Languages by Benjamin C. Pierce&lt;/a&gt;. This project lasted for 3 years, but at the end we produced high-quality translation of this book (and it's free in ebook form!). I hope that I'll receive paper book shortly.&lt;br /&gt;
And more projects are in progress ;-)&lt;br /&gt;
&lt;h3&gt;Programming &amp;amp; other IT-related projects&lt;/h3&gt;I also continued to experiment with different technologies to get new experience (not related to work) - Mahout, Lucene, Hadoop, Erlang, Haskell, and many other.&lt;br /&gt;
Some work also was made with Clojure, but not so much, I hope that I'll have more free time at winter.&lt;br /&gt;
Also I participate in AI &amp;amp; ML classes from Stanford, and like them a lot, although not so much free time left. First is more hard, as it requires to do more study on your own, seeking for new information, etc. (I forgot many things since I finished university :-) While second is more self-contained - you're usually don't need to search much in external sources to make your homework. Some time was needed to read Octave manual, but this was not so complicated. Although now I'm also studying how to program with R, to help my wife with thesis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More things happened &amp;amp; happening, than I wrote about, and I'll try to blog more often.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/gL9vrh_DJoQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/2962618181283246032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=2962618181283246032" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2962618181283246032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2962618181283246032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/gL9vrh_DJoQ/miscellaneous.html" title="Miscellaneous..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/11/miscellaneous.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEFQ3szcSp7ImA9WhdSEE0.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-2211089256314048411</id><published>2011-07-18T18:03:00.001+01:00</published><updated>2011-07-18T18:03:32.589+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T18:03:32.589+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><category scheme="http://www.blogger.com/atom/ns#" term="article" /><category scheme="http://www.blogger.com/atom/ns#" term="cedet" /><title>Emacs/Cedet article in Belorussian</title><content type="html">My &lt;a href="http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html"&gt;Emacs/Cedet article&lt;/a&gt; now has &lt;a href="http://webhostingrating.com/libs/EmacsCedet-be"&gt;translation to Belorussian&lt;/a&gt;...&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/VMPO8Dlks00" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/2211089256314048411/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=2211089256314048411" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2211089256314048411?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/2211089256314048411?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/VMPO8Dlks00/emacscedet-article-in-belorussian.html" title="Emacs/Cedet article in Belorussian" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/07/emacscedet-article-in-belorussian.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMHQX48cSp7ImA9WhZVGEw.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-7595647249854565941</id><published>2011-05-31T06:07:00.001+01:00</published><updated>2011-05-31T06:07:10.079+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-31T06:07:10.079+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><title>Test, please ignore...</title><content type="html">test for clojure planet&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/Q0Ipfoa9tkg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/7595647249854565941/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=7595647249854565941" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7595647249854565941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7595647249854565941?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/Q0Ipfoa9tkg/test-please-ignore.html" title="Test, please ignore..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/05/test-please-ignore.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcFSXo8eSp7ImA9WhZWE0Q.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-5603813878829565880</id><published>2011-05-14T18:10:00.000+01:00</published><updated>2011-05-14T18:10:18.471+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T18:10:18.471+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="file formats" /><category scheme="http://www.blogger.com/atom/ns#" term="common-lisp" /><category scheme="http://www.blogger.com/atom/ns#" term="f#" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Small books review</title><content type="html">I hadn't blogged for a long time, and also wanted to blog about books, read during last 2 months, but currently I have no time - several releases straight at work, plus there are several personal projects, so I decided, that I'll write only about very interesting books.&amp;nbsp; You can find reviews of my read books &lt;a href="http://www.goodreads.com/user/show/635213-alex-ott"&gt;on Goodreads&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;Shortly about read books&lt;/h3&gt;During my vacation in March, I finished &lt;a href="http://www.amazon.com/gp/product/0262610744/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0262610744"&gt;The Art of the Metabobject Protocol&lt;/a&gt;, that was in my reading queue for a long time. This book gives understanding how CLOS was designed, how concrete solutions was selected, etc.&lt;br /&gt;
In April I read 2 books from Manning (they asked for review): &lt;a href="http://www.manning.com/mattmann/"&gt;Tika in Action&lt;/a&gt; и &lt;a href="http://www.manning.com/wright/"&gt;ManifoldCF in Action&lt;/a&gt;. First wasn't very interesting for me - I'm working in this branch for a long time, plus I already used tika in my projects, but I think, that book will interesting for peoples who will need to extract meta-data &amp;amp; text from files in different formats.&amp;nbsp; And second book was very interesting - I bought it when it was released as MEAP, but I hadn't time to start read it. This book describes ManifoldCF - extensible framework for work with different content repositories, from which you can fetch information for indexing, or similar processing. This framework is very interesting for me, and I hope, that I'll use it in one of my projects.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/kKL2gAvlVzE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/5603813878829565880/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=5603813878829565880" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/5603813878829565880?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/5603813878829565880?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/kKL2gAvlVzE/small-books-review.html" title="Small books review" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/05/small-books-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMCR3s8fCp7ImA9WhZREEo.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-8216580325335142611</id><published>2011-04-06T09:27:00.000+01:00</published><updated>2011-04-06T09:27:46.574+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T09:27:46.574+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fp" /><category scheme="http://www.blogger.com/atom/ns#" term="job" /><title>Advertising in the "Practice of functional programming" journal</title><content type="html">If you want to hire talented software developers in Russia, or other countries of ex-USSR, then you can publish your ad in the "&lt;a href="http://fprog.ru/"&gt;Practice of functional programming&lt;/a&gt;" journal.&amp;nbsp; Currently journal has about 10 thousand readers across almost all parts of ex-USSR, and I believe, that they are talented people.&lt;br /&gt;
To get more details on pricing, etc. you need to write to following &lt;a href="mailto:ie@fprog.ru"&gt;e-mail address&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/P8FxbJaxkNw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/8216580325335142611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=8216580325335142611" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8216580325335142611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8216580325335142611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/P8FxbJaxkNw/advertising-in-practice-of-functional.html" title="Advertising in the &quot;Practice of functional programming&quot; journal" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/04/advertising-in-practice-of-functional.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EMRng6eip7ImA9Wx9UF0s.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-1788019124174870059</id><published>2011-02-15T10:21:00.000+01:00</published><updated>2011-02-15T10:21:27.612+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-15T10:21:27.612+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><category scheme="http://www.blogger.com/atom/ns#" term="boost" /><title>Unit testing in C++</title><content type="html">I forgot to mention here, that I wrote small &lt;a href="http://alexott.net/en/cpp/CppTestingIntro.html"&gt;article on unit testing in C++&lt;/a&gt; using Boost.Test and Google C++ Mocking Framework. I have plans on extending this article, so comments and suggestions could be very useful&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/456RRL3hGmg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/1788019124174870059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=1788019124174870059" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1788019124174870059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1788019124174870059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/456RRL3hGmg/unit-testing-in-c.html" title="Unit testing in C++" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/02/unit-testing-in-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNQns4fip7ImA9Wx9UFEk.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-1107221424234557649</id><published>2011-02-11T17:03:00.000+01:00</published><updated>2011-02-11T17:03:13.536+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-11T17:03:13.536+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="2011" /><category scheme="http://www.blogger.com/atom/ns#" term="DSL" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><category scheme="http://www.blogger.com/atom/ns#" term="scala" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Readings digest. January 2011</title><content type="html">&lt;p&gt;Maybe you noticed that there was no books review for December &amp;mdash; I had too much to do, so I hadn't finished reading of any book.  But Christmas and New Year brought me more free time, and I finished reading of several books.&lt;/p&gt;&lt;div class="contents"&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="#sec1"&gt;DSLs in Action&lt;/a&gt;&lt;/dt&gt;
&lt;dt&gt;&lt;a href="#sec2"&gt;Camel in Action&lt;/a&gt;&lt;/dt&gt;
&lt;dt&gt;&lt;a href="#sec3"&gt;Test-driven development: By Example&lt;/a&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;&lt;h2&gt;&lt;a name="sec1" id="sec1"&gt;&lt;/a&gt;DSLs in Action&lt;/h2&gt;&lt;p class="first"&gt;Sometime ago I decided, that I need to read something about domain specific languages (DSL) to find new ideas, compare with my own implementation (I developed several DSLs, that I use in my projects), and maybe improve my solutions.  I selected &lt;a href="http://www.amazon.com/gp/product/1935182455?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1935182455"&gt;DSLs in Action&lt;/a&gt;, written by Debasish Ghosh, who is well-known developer in Scala community, although he is also using other languages, for example, Haskell, Groovy, Clojure.  When I was trying to select which book to read, I also thought about &lt;a href="http://www.amazon.com/gp/product/0321712943?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321712943"&gt;Domain-Specific Languages&lt;/a&gt; book, written by Martin Fowler, but Manning offered good discount on books, so I bought their book ;-)&lt;/p&gt;&lt;p&gt;This book is written using very simple and clear language, but it provides very interesting information.  Author uses in examples different languages &amp;mdash; Ruby, Groovy, Scala, Clojure (in this book the only languages that are working on JVM are used, so some things are applicable only to this platform).  This allows to demonstrate different approaches to design and development of DSLs (you can also read &lt;a href="http://debasishg.blogspot.com/2011/02/why-i-made-dsls-in-action-polyglotic.html"&gt;author's post&lt;/a&gt; on why this book is polyglotic).&lt;/p&gt;&lt;p&gt;First part of book is dedicated to DSLs basics &amp;mdash; author begins with description what is DSL, what parts it consists from, which types of DSLs are exist, how they are executed, benefits and drawbacks of using DSLs in your projects.  Separate section describes how to model specific domains, and how this affect DSLs structure.&lt;/p&gt;&lt;p&gt;Second chapter demonstrates simple DSL, built in Java, and analysis of its drawbacks is performed.  In the next section, the similar DSL is created with Groovy, and its benefits are described, comparing with first implementation.  In the rest of this chapter the DSLs implementation patterns are reviewed.&lt;/p&gt;&lt;p&gt;The third chapter is dedicated to description of how to integrated DSLs into your project. It describes java scripting engine, Spring-based integration, and some other.  For each of approaches, benefits and drawbacks are analyzed, including how it could affect DSL's implementation, and related questions.&lt;/p&gt;&lt;p&gt;The second part (chapters 4-8) concentrates on DSLs implementation using different programming languages.  4th chapter describes common patterns in implementation of internal DSLs &amp;mdash; meta-programming, typed abstractions, run-time code generation, etc.  And next 2 chapters (5 and 6) demonstrate this with DSLs implementation in Ruby, Groovy, Clojure, and Scala.&lt;/p&gt;&lt;p&gt;Seventh chapter continues DSLs implementation theme with description of how to implement external DSLs.  The different types of parsers of reviewed, that could be used to parse DSL's code, and small example of ANTLR's usage is provided.  There is also small section on Xtext &amp;mdash; Eclipse's framework, that simplifies development of external DSLs.&lt;/p&gt;&lt;p&gt;In 8th chapter, the use of parsers combinators is demonstrated with application to development of external DSLs.  Chapter begins with small introduction to parsers combinators, and continues with demonstration of how Scala's parsers library could be used to create external DSL.&lt;/p&gt;&lt;p&gt;The last part of the book provides some thoughts on modern tendencies in DSLs development, support tools, etc.&lt;/p&gt;&lt;p&gt;Besides main material, the book has several appendixes that contain short descriptions of programming languages, that were used in book, so you can get familiar with them, if you hadn't used them yet.  Separately, I want to mention &amp;quot;philosophical&amp;quot; appendix A, that dedicated to discussion of role of abstractions in domain modeling, how purity and lack of side effects affect development, and some related problems.  Besides this, you can also look on appendix B, that discusses role of meta-programming in DSL's development.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; if you're using and/or developing DSLs, or you're interested in this topic, then you need to read this book &amp;mdash; it contains a lot of practical information, that could be useful in DSLs development.&lt;/p&gt;&lt;h2&gt;&lt;a name="sec2" id="sec2"&gt;&lt;/a&gt;Camel in Action&lt;/h2&gt;&lt;p class="first"&gt;For one of my &amp;quot;pet&amp;quot; projects I was need to create data processing system that will get and process data from different sources, so, after some googling, I found &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt;, that was looked pretty interesting and mature project, so I bought at Manning the &lt;a href="http://www.amazon.com/gp/product/1935182366?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1935182366"&gt;Camel in Action&lt;/a&gt; books, written by Claus Ibsen and Jonathan Anstey.&lt;/p&gt;&lt;p&gt;The book begins (chapter 1) with introduction into Apache Camel &amp;mdash; which tasks are solved with it, which components it consists from, etc.  The second chapter provides more detailed description of routes, and how you can create them using code in Java or Spring.&lt;/p&gt;&lt;p&gt;The second part of book describes basic Camel's techniques &amp;mdash; how to convert data, handle errors, test code, use additional components (such as JMS, databases, etc.).&lt;/p&gt;&lt;p&gt;And third parts provides description of how to work with transactions inside Camel's workflow, how to process data concurrently.  There are also chapters on deployment of projects, that are using Camel, and how to monitor Camel in production environment.&lt;/p&gt;&lt;p&gt;Separate chapter (11th) describes development process for projects that are using Camel, including development of new adapters and components.  Besides this, there is description of DSL, written in Scala (although, from my point of view, the &lt;a href="https://github.com/krasserm/scalaz-camel"&gt;scalaz-camel&lt;/a&gt; project looks more interesting), and also shown how to use Camel with other languages.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; if you interested in Apache Camel's usage, then you can acquire this book &amp;mdash; it contain pretty good introduction to this system, and could be used as reference to some of the base components.&lt;/p&gt;&lt;p&gt;P.S. The new project was also created to integrate Clojure with Apache Camel.  Project is called &lt;a href="https://github.com/dysinger/hackamore"&gt;Hackamore&lt;/a&gt;, and if you interested in it, then you can join to discussions in specially created &lt;a href="https://groups.google.com/group/hackamore"&gt;mailing list&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;&lt;a name="sec3" id="sec3"&gt;&lt;/a&gt;Test-driven development: By Example&lt;/h2&gt;&lt;p class="first"&gt;Several days ago I made a presentation (for our internal developers seminar) on test driven development (TDD) and unit testing, and during preparation, I decided to read something from peoples, who were founders of this movement.  The Extreme Programming series I read many years ago, right after release of corresponding books, so I decided to read the &lt;a href="http://www.amazon.com/gp/product/0321146530?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321146530"&gt;Test Driven Development: By Example&lt;/a&gt; book by Kent Beck.&lt;/p&gt;&lt;p&gt;Book isn't big (about 200 pages), but I think, that it still too big for this topic &amp;mdash; author took small problem (exchange conversion), and describes test-driven implementation of solution in great details.  This example is used in the first part of the book to demonstrate basics of TDD and unit testing.&lt;/p&gt;&lt;p&gt;In the second part, TDD is illustrated by implementing of xUnit-like testing framework for Python language, with detailed description of all necessary steps.&lt;/p&gt;&lt;p&gt;The third part of the book is dedicated to description of base approaches and patterns in test-driven development, how to design code for testability, how to design tests, etc.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; this is pretty good introduction to TDD, but I could recommend it only for people who never used TDD in their work &amp;mdash; it's too elementary from my point of view. Although, there are some good advices on code organization, workflow, etc.  But if you know something about unit testing, then you can find other sources of information.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/TqYt-E0kOGw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/1107221424234557649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=1107221424234557649" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1107221424234557649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1107221424234557649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/TqYt-E0kOGw/readings-digest-january-2011.html" title="Readings digest. January 2011" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/02/readings-digest-january-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAMRno4eip7ImA9Wx9VFUQ.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-4560387804709815357</id><published>2011-02-01T21:39:00.000+01:00</published><updated>2011-02-01T21:39:47.432+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-01T21:39:47.432+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>Additions to haskell-mode</title><content type="html">Between Christmas and New Year I had some time to hack haskell-mode (this was planned for a long time) - I added support for &lt;a href="http://community.haskell.org/%7Endm/hlint/"&gt;hlint&lt;/a&gt; (the &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hs-lint&lt;/b&gt; command) and &lt;a href="http://projects.haskell.org/style-scanner/"&gt;haskell style scanner&lt;/a&gt; (the &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hs-scan&lt;/span&gt;&lt;/b&gt; command). As &lt;a href="http://alexott.blogspot.com/2009/02/second-version-of-hs-lint-package.html"&gt;before&lt;/a&gt;, hs-lint supports replacement of code with suggestions.&lt;br /&gt;
Patches were sent to maintainer, but they not committed into main repository yet. But in the meantime you can use &lt;a href="https://patch-tag.com/r/alexott/haskell-mode/home"&gt;my fork&lt;/a&gt;. Please, send me comments and suggestions on these changes...&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/qZcomL2kbFc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/4560387804709815357/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=4560387804709815357" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4560387804709815357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4560387804709815357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/qZcomL2kbFc/additions-to-haskell-mode.html" title="Additions to haskell-mode" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2011/02/additions-to-haskell-mode.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAFQnk-cCp7ImA9Wx9QF0Q.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-8712739749033533034</id><published>2010-12-31T12:58:00.000+01:00</published><updated>2010-12-31T12:58:33.758+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-31T12:58:33.758+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fp" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><title>The 2010th summary...</title><content type="html">This year was very interesting - were many interesting projects, both on work, and personal.&lt;br /&gt;
I continued to "play" with Clojure, that lead to writing of &lt;a href="http://alexott.net/ru/clojure/clojure-intro/index.html"&gt;big article about it&lt;/a&gt; (in Russian) for "&lt;a href="http://fprog.ru/"&gt;Practice of functional programming&lt;/a&gt;" journal. I also gave several talks about Clojure at &lt;a href="http://www.slideshare.net/alexott/clojure-margincon-2010"&gt;MarginCon 2010&lt;/a&gt;, at meeting of Munster Java User Group, and at golodnyj's podcast (&lt;a href="http://taop.rpod.ru/168440.html"&gt;1&lt;/a&gt;, &lt;a href="http://taop.rpod.ru/172639.html"&gt;2&lt;/a&gt;).   And I also participated in development of several projects   (Incanter, leiningen, swank-clojure, clojure-hadoop, and pair of my own). Although I had no time for Common Lisp &amp;amp; Scheme, but I hope, that I will work with them during reading of "&lt;a href="http://www.amazon.com/gp/product/1558601910?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1558601910"&gt;Paradigms of Artificial  Intelligence  Programming: Case Studies in Common Lisp&lt;/a&gt;" that I bought week ago.&lt;br /&gt;
I also &lt;a href="http://alexott.blogspot.com/search/label/book"&gt;read a lot&lt;/a&gt; (corresponding &lt;a href="http://www.shelfari.com/alexott/lists/IsRead"&gt;shelf on shelfari&lt;/a&gt;, but reading queue is &lt;a href="http://www.shelfari.com/alexott/lists/Reading"&gt;longer&lt;/a&gt;). &lt;br /&gt;
I visited USA for a first time in my life (business trip), and I want to visit it again, to meet with my friends on west and east coasts. &lt;br /&gt;
I have a lot of plans for next year:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;continue to work with Clojure with more involvement into different projects;&lt;/li&gt;
&lt;li&gt;I want to increase share of Haskell and Erlang in my projects, and maybe look at Scala, if I'll have a time;&lt;/li&gt;
&lt;li&gt;continue to experiment with machine learning, and besides this, I have some ideas for natural language processing based projects;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;continue to work with hadoop, and other big-data-related things;&lt;/li&gt;
&lt;li&gt;update existing articles about programming and Emacs, and maybe write something new;&lt;/li&gt;
&lt;li&gt;continue to hack Emacs, and I especially interested in providing support for functional languages in CEDET.&lt;/li&gt;
&lt;/ul&gt;And at the end, I want to wish everybody all the best in the New Year!&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/aOss63Ppcjc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/8712739749033533034/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=8712739749033533034" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8712739749033533034?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/8712739749033533034?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/aOss63Ppcjc/2010th-summary_31.html" title="The 2010th summary..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/12/2010th-summary_31.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUFRH4yeSp7ImA9Wx9SGEU.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-7049423856152109460</id><published>2010-12-08T15:10:00.001+01:00</published><updated>2010-12-09T08:36:55.091+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-09T08:36:55.091+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="2010" /><category scheme="http://www.blogger.com/atom/ns#" term="opencl" /><category scheme="http://www.blogger.com/atom/ns#" term="gpu" /><category scheme="http://www.blogger.com/atom/ns#" term="cuda" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Readings digest. November 2010</title><content type="html">&lt;p&gt;It was not so much of free time in November, so I read only one computer-relater book...&lt;/p&gt;&lt;h4&gt;Programming Massively Parallel Processors: A Hands-on Approach&lt;/h4&gt;&lt;p class="first"&gt;To check some of my hypothesis, I decided to play with general-purpose programming for graphics processing units (GPU).  I already knew about them, but wanted to make my knowledge deeper, so I obtained the &lt;a href="http://www.amazon.com/gp/product/0123814723?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0123814723"&gt;Programming Massively Parallel Processors: A Hands-on Approach&lt;/a&gt; book, that should be good introduction into GPU's programming, according to reviews.&lt;/p&gt;&lt;p&gt;The first two chapters describe history of general-purpose programing on GPU, its architecture, and also describe different approaches to parallel programming.&lt;/p&gt;&lt;p&gt;Description of CUDA begins from third chapter.  First, structure of CUDA programs is described, and than simple example is shown &amp;mdash; multiplication of two matrices.  This example will be used in all chapters and will improved as we'll switch to more complex topics.  And the third chapter is finished with description of CUDA memory model and CUDA threads together with kernel functions.&lt;/p&gt;&lt;p&gt;Fourth chapter is completely dedicated to CUDA threads &amp;mdash; how they are selected for scheduling, how they are organized into thread blocks, how to organize synchronization between threads.  And fifth chapter describes all types of memory available for developer, and how these types could be used, taking into account different things, such as performance, etc.&lt;/p&gt;&lt;p&gt;Sixth chapter describes how programs could be optimized &amp;mdash; how to achieve full load of processor and memory bus, how to organize data pre-fetching, etc.  And seventh chapter is dedicated to problems, related to use of floating-point numbers.&lt;/p&gt;&lt;p&gt;The 8th and 9th chapters are used to show how to use CUDA for real projects.  For each of projects, architecture of program is shown, together with description how data are organized, how kernel function is implemented, etc.&lt;/p&gt;&lt;p&gt;The 10th chapter is more philosophical &amp;mdash; authors are trying to describe common patterns and approaches to problem solving and algorithms selection for parallel programs.&lt;/p&gt;&lt;p&gt;The eleventh chapter contains short description of OpenCL language with list of differences between it and CUDA. But description is very small, so it's better to look into official documentation of &lt;a href="http://www.khronos.org/opencl/"&gt;OpenCL&lt;/a&gt;, although the book provides very good base for future study.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; If you want to become initial knowledge about general-purpose GPU programming, then you can take this book.  It contains basic information about GPU's architecture, programming with CUDA, and also many advices on how to develop effective programs for GPU.  Besides this, each chapter contains references section that you can use to find additional sources of information.  If you want to get more deep understanding of CUDA programming, then you can take the &lt;a href="http://www.amazon.com/gp/product/0131387685?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0131387685"&gt;CUDA by Example: An Introduction to General-Purpose GPU Programming&lt;/a&gt; book and/or official CUDA documentation.&lt;/p&gt;&lt;h5&gt;Future work&lt;/h5&gt;&lt;p&gt;I personally more interested in &lt;a href="http://www.khronos.org/opencl/"&gt;OpenCL&lt;/a&gt;, as it could be used from other languages, not only from C. For example, there is the &lt;a href="https://github.com/ztellman/calx"&gt;Calx&lt;/a&gt; projects, that allows to run OpenCL code from programs written in Clojure.  And OpenCL is also working not only on NVidia's hardware.  I'm waiting for release of following books in next year: &lt;a href="http://www.manning.com/scarpino2/"&gt;OpenCL in Action&lt;/a&gt; (already available as MEAP) and &lt;a href="http://www.amazon.com/gp/product/0321749642?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321749642"&gt;OpenCL Programming Guide&lt;/a&gt;, that should contain very useful information.&lt;/p&gt;&lt;h5&gt;Additional resources&lt;/h5&gt;&lt;p&gt;The very useful resource is the &lt;a href="http://gpgpu.org"&gt;GPGPU&lt;/a&gt; site, where GPU-related articles and announcements are regularly published.  For example, following articles was very useful for me: &lt;a href="http://gpgpu.org/2010/07/04/gravity-antivirus-engine"&gt;GrAVity: A Massively Parallel Antivirus Engine&lt;/a&gt; и &lt;a href="http://gpgpu.org/2010/07/04/regular-expression-matching-for-intrusion-detection"&gt;Regular Expression Matching on Graphics Hardware for Intrusion Detection&lt;/a&gt;, because they are related to some of my investigations.&lt;/p&gt;&lt;p&gt;There are also at least two GPU-related courses on iTunesU.  And materials of &lt;a href="http://courses.engr.illinois.edu/ece498/al/Syllabus.html"&gt;following course&lt;/a&gt; are also available.&lt;/p&gt;&lt;p&gt;And there are a lot of documentation and tutorials you can find on &lt;a href="http://developer.nvidia.com/object/gpucomputing.html"&gt;NVidia's&lt;/a&gt; site &amp;mdash; both for CUDA, and OpenCL.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/aWPK68hHrPY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/7049423856152109460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=7049423856152109460" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7049423856152109460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/7049423856152109460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/aWPK68hHrPY/readings-digest-november-2010.html" title="Readings digest. November 2010" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/12/readings-digest-november-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFSX4yeyp7ImA9Wx5aFUg.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-693877172653757929</id><published>2010-11-12T11:03:00.000+01:00</published><updated>2010-11-12T11:03:38.093+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-12T11:03:38.093+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="file formats" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="msoffice" /><category scheme="http://www.blogger.com/atom/ns#" term="microsoft" /><title>Work/file-formats related, 2</title><content type="html">Microsoft had &lt;a href="http://blogs.msdn.com/b/officeinteroperability/archive/2010/11/10/interoperability-videos-and-presentations.aspx"&gt;published videos&lt;/a&gt; from lectures on MS Office file formats, that was made during binary file formats plugfest, that I described in &lt;a href="http://alexott.blogspot.com/2010/11/workfile-formats-related.html"&gt;previous post&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/xn9t07WlwbM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/693877172653757929/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=693877172653757929" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/693877172653757929?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/693877172653757929?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/xn9t07WlwbM/workfile-formats-related-2.html" title="Work/file-formats related, 2" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/11/workfile-formats-related-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4ARXozcCp7ImA9Wx5bGUs.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-1703314210501207235</id><published>2010-11-05T13:42:00.001+01:00</published><updated>2010-11-05T13:42:24.488+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-05T13:42:24.488+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="2010" /><category scheme="http://www.blogger.com/atom/ns#" term="version control" /><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="mapreduce" /><category scheme="http://www.blogger.com/atom/ns#" term="hadoop" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Readings digest. October 2010</title><content type="html">&lt;h4&gt;Pro Git&lt;/h4&gt;&lt;p class="first"&gt;I'm using Git for a long time, when there were no books on it.  But not so much time ago I found &lt;a href="http://www.amazon.com/gp/product/1430218339?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430218339"&gt;following book&lt;/a&gt; and decided to read to find interesting themes, that may be not familiar with.  This book has &lt;a href="http://progit.org/"&gt;separate site&lt;/a&gt; with HTML version available to read (there is also &lt;a href="http://progit.org/2010/05/17/progit-for-the-ipad.html"&gt;epub-version&lt;/a&gt; of the book), together with blog with some interesting notes.  A source code for this book, together with examples is  &lt;a href="https://github.com/progit"&gt;available at github&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This book begins with small review of Git, why it was created, its history, etc.  There is also small section on installation and initial setup of the Git.&lt;/p&gt;&lt;p&gt;Second chapter starts with simple Git usage patterns, such as add and commit changes, viewing of history of changes, undoing of changes, etc.  There is also necessary information on remote repositories.  Third chapter is completely dedicated to branching and related questions, starting with creation of branches, switching between them, and finishing with pretty good description of &lt;code&gt;rebase&lt;/code&gt; command.  The separate section provides description on using branches to implement different development workflows.&lt;/p&gt;&lt;p&gt;4th chapter is dedicated to creation of remote Git repository, reviewing existing access protocols, providing public access to repository, etc. There is also sections on tools that could be used to make life easier, such as Gitosis, Gitolite, etc.   And 5th chapter provides information on how to use Git for collective work, starting with reviewing of different approaches to collective work's organization (shared repository, add separate integrator's role, etc.), and continue with description how project's maintainer and contributor can use Git to perform their work.&lt;/p&gt;&lt;p&gt;6th chapters provide description of some &amp;quot;non-standard&amp;quot; Git's usage patterns &amp;mdash; use of external modules (submodules), merging with sub-trees, rewriting history of changes, etc.  7th chapter provides very good description of Git's customization, including creation of hooks. And 8th chapter is dedicated to questions of using Git with SVN, and migration to Git from other version control systems.&lt;/p&gt;&lt;p&gt;And last chapter in the book provides information about Git's internals &amp;mdash; how objects and other information are stored, how this information is transferred using different protocols, etc.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; this is very good introduction into Git, I can recommend it for all who wants to start work with Git. Developers, who are already using Git also can find some useful information, for example, description of different external tools, etc.&lt;/p&gt;&lt;h4&gt;Data-Intensive Text Processing with MapReduce&lt;/h4&gt;&lt;p class="first"&gt;In my free time (and sometimes at work) I'm solving some tasks, that require lot of data to be processed to be solved.  As platform the Hadoop was selected, and usually programs are written with &lt;a href="https://github.com/alexott/clojure-hadoop"&gt;clojure-hadoop&lt;/a&gt;, and some other tools.&lt;/p&gt;&lt;p&gt;I &lt;a href="http://alexott.blogspot.com/2010/07/books.html"&gt;already wrote&lt;/a&gt; about the &amp;quot;Hadoop: The Definitive Guide&amp;quot; book (btw, the &lt;a href="http://www.amazon.com/gp/product/1449389732?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1449389732"&gt;second edition&lt;/a&gt; was released not so much time ago, that was updated with description of fresh Hadoop's versions), but in contrast to this book, the &lt;a href="http://www.amazon.com/gp/product/1608453421?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1608453421"&gt;Data-Intensive Text Processing with MapReduce&lt;/a&gt; book doesn't describe how to program with Hadoop or some other  Map/Reduce system, but describes how to design algorithms for Map/Reduce.  Book also describes how to implement some well-known algorithms, such as, how to create inverted text index using parallel programming model.  This book has &lt;a href="http://mapreduce.me/"&gt;separate site&lt;/a&gt;, where you can find additional information, and download beta-version of the book.  Besides this, to experiment with algorithms, the &lt;a href="http://www.umiacs.umd.edu/~jimmylin/Cloud9/docs/index.html"&gt;Cloud9&lt;/a&gt; library was created, and you can use it for your work.&lt;/p&gt;&lt;p&gt;Book begins (chapter 1) with small description of base concepts of Map/Reduce, how tasks are executed in typical framework, and how tasks are separated between mappers &amp;amp; reducers.  Besides this, there is small description of main Hadoop's subsystems, so reader will understand how tasks are deployed, how data are stored, etc.&lt;/p&gt;&lt;p&gt;Second chapter reviews different approaches to design of algorithms for Map/Reduce, starting with naive implementations, and after switching to review of optimizations (for example, use of additional combiners, or use of in-mapper caching), sorting, joins, etc.&lt;/p&gt;&lt;p&gt;Chapter 3 explains how you can implement generation of inverted indexing (that is used in full-text search) using Map/Reduce.  First, naive implementation is used, and later, discussion continues with optimizations, for example, how to compress index, etc.&lt;/p&gt;&lt;p&gt;4th chapter describes how graph algorithms could be implemented using  Map/Reduce frameworks.  As first example, calculation of shortest path is described.  Authors provide description of parallel breadth-first search, and discuss differences from classic Dijkstra's algorithm, and other issues.  In second example implementation of &lt;a href="http://en.wikipedia.org/wiki/PageRank"&gt;PageRank&lt;/a&gt; is discussed.  And in last section list of existing issues with parallel algorithms on graphs is discussed, and links to additional literature are provided.&lt;/p&gt;&lt;p&gt;5th chapter is dedicated to discussion of usage of Map/Reduce for machine learning tasks.  First section describes  expectation maximization algotithms, and second describes hidden markov models as class of tasks, to which expectation maximization algorithms are applicable.  And than implementation of expectation maximization algorithms using Map/Reduce is shown.&lt;/p&gt;&lt;p&gt;In last chapter authors discuss different issues with development on base of Map/Reduce, together with alternative computing paradigms.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Conclusion:&lt;/em&gt; if you program for Hadoop or other Map/Reduce system, then you must read this book &amp;mdash; it provides enough information on proper organization of data processing.  Besides this, book has pretty big bibliography, that could be used as source of new information on related topics.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/Df9ve-vLnwk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/1703314210501207235/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=1703314210501207235" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1703314210501207235?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/1703314210501207235?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/Df9ve-vLnwk/readings-digest-october-2010.html" title="Readings digest. October 2010" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/11/readings-digest-october-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cDR307eyp7ImA9Wx5bGEo.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-3680015835337129287</id><published>2010-11-04T14:57:00.000+01:00</published><updated>2010-11-04T14:57:56.303+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-04T14:57:56.303+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="file formats" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="msoffice" /><category scheme="http://www.blogger.com/atom/ns#" term="microsoft" /><title>Work/file-formats related...</title><content type="html">Two weeks ago I attended meeting at Microsoft (in Redmond, WA) that was dedicated to Microsoft Office's binary file formats. As I'm working for a long time with corresponding Microsoft's departments, it was very interesting to meet all peoples who are involved in preparation of documentation on protocol and file formats, and also with developers of Microsoft Office.&lt;br /&gt;
Meeting was 2 days long, and MS Office's developers gave talks about internal details of MS Office, and how they are related to data that are stored in files. Besides this, it was a good chance to ask some questions directly.&lt;br /&gt;
Because this meeting was held &lt;a href="http://blogs.msdn.com/b/officeinteroperability/archive/2010/10/25/office-binary-file-format-plugfest-2010-recap.aspx"&gt;for a first time&lt;/a&gt;, were not so much external developers (about 15 peoples from different companies), but were many peoples from Microsoft, and many questions were answered almost immediately, and we all had a chance to show broken/problematic files, show snippets of our code, etc.&lt;br /&gt;
Channel9 in near future should publish video taken from presentations, and I'll write about this additionally. Besides this, the&amp;nbsp; &lt;a href="http://blogs.msdn.com/b/officeinteroperability/"&gt;separate blog&lt;/a&gt; was created, where notifications about future events will published.&amp;nbsp; And I hope, that in future, such events will held in Europe...&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/-ZEZBgMSDdE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/3680015835337129287/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=3680015835337129287" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/3680015835337129287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/3680015835337129287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/-ZEZBgMSDdE/workfile-formats-related.html" title="Work/file-formats related..." /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/11/workfile-formats-related.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQHQXo8eyp7ImA9Wx9WE0s.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-4244189085473096808</id><published>2010-10-21T00:58:00.003+01:00</published><updated>2011-01-18T16:08:50.473+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-18T16:08:50.473+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fp" /><category scheme="http://www.blogger.com/atom/ns#" term="algorithms" /><category scheme="http://www.blogger.com/atom/ns#" term="lucene" /><category scheme="http://www.blogger.com/atom/ns#" term="2010" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="cs" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title>Readings digest. September 2010</title><content type="html">Some time ago I got an idea, that it could be useful to write reviews on books, that I read.  Although I'm using &lt;a href="http://www.goodreads.com/user/show/635213"&gt;GoodReads&lt;/a&gt; and &lt;a href="http://www.shelfari.com/alexott"&gt;Shelfari&lt;/a&gt;, but reviews on these sites are pretty short.  I selected month as time frame — this allows me to read 2-4 books, that are worth to mention in reviews :-)&lt;br /&gt;
&lt;hr /&gt;&lt;h4&gt;The Joy of Clojure: Thinking the Clojure Way&lt;/h4&gt;&lt;div class="first"&gt;I bought &lt;a href="http://www.amazon.com/gp/product/1935182641?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1935182641"&gt;The Joy of Clojure: Thinking the Clojure Way&lt;/a&gt; (by Michael Fogus and Chris Houser) right after as it was announced by Manning, and got updates to it from time to time. But at start of September I got full version of the book (but in draft quality), and decided to read it from cover to cover.  This book has &lt;a href="http://joyofclojure.com/"&gt;separate site&lt;/a&gt; where you can find additional information on book, including info on existing discounts on preliminary version (MEAP).&lt;/div&gt;I need to say, that this isn't introduction into Clojure language, and, although this book includes separate chapter with short description of the language, but it's better to read one of existing Clojure books first: &lt;a href="http://www.amazon.com/gp/product/1430272317?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430272317"&gt;Practical Clojure&lt;/a&gt;, or &lt;a href="http://www.amazon.com/gp/product/1934356336?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1934356336"&gt;Programming Clojure&lt;/a&gt;, or not released yet, but available through MEAP, &lt;a href="http://www.amazon.com/gp/product/1935182595?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1935182595"&gt;Clojure in Action&lt;/a&gt;.&lt;br /&gt;
This book tries to explain how to program in Clojure "in right way" — from functional programming and Clojure language perspectives.  This includes use of "lazy" data structures, when you can and should use macros, how to organize recursive execution of the code, how different data structures are implemented, when each of them should be used, etc.&lt;br /&gt;
There is also pretty detailed description of performance-related questions — which data structures is better to use in concrete situations, how you can improve performance with type hinting, how to use transient data structures, bulk sequences, and memoization.&lt;br /&gt;
Book also includes description of concurrent-related topics together with discussion of usage of mutable data in your programs.  These topics are discussed in 11th chapter, where you can find description of mutable data structures (refs/atoms/agents), when they could be used, etc.  There is also description of parallel programming features in Clojure (futures, promises, locks, etc.).&lt;br /&gt;
Besides this, this book describes multimethods, protocols and data types, introduced in Clojure 1.2, together with topics on interoperability with JVM and Java. But these topics aren't described so detailed as other.&lt;br /&gt;
&lt;i&gt;Conclusion&lt;/i&gt;: this book is recommended for all, who already read something about language, but wants to get more details on some topics, and/or wants to learn to "properly" program in Clojure.  I personally found pretty much interesting data in it, and started to use this knowledge in my projects.&lt;br /&gt;
&lt;h4&gt;Lucene in Action, 2nd edition&lt;/h4&gt;&lt;div class="first"&gt;I wanted to look onto &lt;a href="http://lucene.apache.org/"&gt;Lucene&lt;/a&gt; for a long time.  I wanted to use it for my projects, and knew that there is a book Lucene in Action, but in Internet were many complains, that this book is very old, and doesn't match current version.  But second edition of &lt;a href="http://www.amazon.com/gp/product/1933988177?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1933988177"&gt;Lucene in Action&lt;/a&gt; solves this problem.&lt;/div&gt;This books begins (chapter 1) with short review of Lucene — from which parts it consists, and also describes main parts of search lifecycle — document's collection, text extraction, indexing, and search itself.  Besides this, in 1st chapter there are small, but complete examples of how you can index documents and perform search in built index.&lt;br /&gt;
The first part of book (chapters 2-6) is dedicated to description of Lucene itself.  The Chapter 2 describes indexing — which indexing options are available, their influence on Lucene's work (including performance), how you can index numeric and temporal data, how can you optimize and debug indexing process.&lt;br /&gt;
The chapter 3 provides description of base search facilities.  This chapter starts with simple application, that is used as a base for all other examples.  First, the &lt;code&gt;IndexSearch&lt;/code&gt; is described, and in later sections, the other types of queries implemented in Lucene are reviewed, together with &lt;code&gt;QueryParser&lt;/code&gt;.&lt;br /&gt;
Chapters from 4 to 6 are dedicated to "advanced" topics, and you can skip them on first read, especially if you want to use only standard Lucene's features.  In the 4th chapter different text analyzers are described.  Besides description of analyzers, implemented in Lucene and Nutch, this chapter provides information on how you can create new analyzers, or extend existing.  5th chapter is dedicated to extended search features — search on several fields and/or indexes, work with term vectors, results sorting, etc.  And the 6th chapter is dedicated to description of custom collectors and sorting routines.&lt;br /&gt;
Second part of book (chapters 7-11) provides description of the &lt;a href="http://tika.apache.org/"&gt;Tika&lt;/a&gt; library (chapter 7), which Lucene extensions are exist (chapters 8-9), how you can use Lucene with languages, other than Java (chapter 10), and 11th chapter provides information on Lucene's administration, including performance-related questions.&lt;br /&gt;
Third part of the book is dedicated to description of success stories — how Lucene is used in real projects (Kruge, SIREn, LinkedIn).  For each of projects, there is description of which Lucene's features are used, how indexing and searching is performed, which extensions were added to perform these tasks.&lt;br /&gt;
&lt;i&gt;Conclusion&lt;/i&gt;: Big number of examples, and detailed descriptions, are making this book very useful for peoples, who are starting to work with Lucene.  And after you'll finish reading, you can still return to it to get answers on questions, not covered in official documentation.&lt;br /&gt;
&lt;h4&gt;Introduction to Algorithms&lt;/h4&gt;&lt;div class="first"&gt;I already read this book many years ago, but this was a russian translation of 1st edition.  And some time ago I decided to re-read this book to refresh some theoretical topics.  I acquired the 2nd edition of this book, but next month after I got it, the 3rd edition of &lt;a href="http://www.amazon.com/gp/product/0262033844?ie=UTF8&amp;amp;tag=aleottshompag-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0262033844"&gt;Introduction to Algorithms&lt;/a&gt; was releases, that contains some new topics, not covered in 2nd edition.&lt;/div&gt;I can't write too much details about this book, or this review will several hundred pages long ;-) &lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=11866&amp;amp;mode=toc"&gt;Table of contents&lt;/a&gt; can give much better overview of covered topics.&lt;br /&gt;
This is classical book on algorithms and analysis of them.  Book begins with basic information on algorithm's analysis, and after some examples, started to provide description of different algorithms and data structures (lists, trees, hash maps, heaps, etc.)  For each of covered topic, the complexity analysis is provided, the different approaches to implementation are reviewed, etc.  Pretty much place is dedicated to algorithms on graphs.  Besides of "base" data structures, more "advanced" data structures and algorithms are covered — binominal heaps, b-trees, etc.  Almost hundred of pages are dedicated for appendixes, that provide all theoretical information (math, probability theory, set theory, etc), that is needed to read this book.&lt;br /&gt;
I need to mention, that there also &lt;a href="http://videolectures.net/mit6046jf05_introduction_algorithms/"&gt;video-lectures&lt;/a&gt; for this course, that was read in MIT (they are also available from iTunesU).&lt;br /&gt;
&lt;i&gt;Conclusion&lt;/i&gt;: every software developer should read this book at least once — you can use this book as reference, but reading of first chapters is necessary for all.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/SebY1Z66uHA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/4244189085473096808/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=4244189085473096808" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4244189085473096808?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4244189085473096808?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/SebY1Z66uHA/readings-digest-september-2010.html" title="Readings digest. September 2010" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/10/readings-digest-september-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIGRH09fyp7ImA9Wx5XFk4.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-6361986807407123709</id><published>2010-09-16T12:28:00.000+01:00</published><updated>2010-09-16T12:28:45.367+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-16T12:28:45.367+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fp" /><category scheme="http://www.blogger.com/atom/ns#" term="ocaml" /><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="job" /><category scheme="http://www.blogger.com/atom/ns#" term="f#" /><title>More work for functional programmers</title><content type="html">I found another &lt;a href="http://altadata.ee/index.php?page=senior-quantitative-developers-team-leader&amp;amp;hl=ENG"&gt;vacancy for functional programmers&lt;/a&gt;: company looks for programmers in statically-typed functional languages - Haskell/OCaml/F#. And as usual for such languages, this is finance-related works - financial derivatives, stocks, etc. They also have &lt;a href="http://altadata.ee/index.php?page=junior-quantitative-developers&amp;amp;hl=ENG"&gt;vacancy for junior developers&lt;/a&gt;.&lt;br /&gt;
The company is located in Tallinn, Estonia. If you interested, write to them directly.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/R2O8hGE8aOE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/6361986807407123709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=6361986807407123709" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/6361986807407123709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/6361986807407123709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/R2O8hGE8aOE/more-work-for-functional-programmers.html" title="More work for functional programmers" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/09/more-work-for-functional-programmers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEHSHo6eyp7ImA9Wx5QEUg.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-827984593013137920</id><published>2010-08-30T08:17:00.000+01:00</published><updated>2010-08-30T08:17:19.413+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T08:17:19.413+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><category scheme="http://www.blogger.com/atom/ns#" term="cedet" /><title>Release of CEDET 1.0!</title><content type="html">After many years of development, numerous 1.0preX versions, version 1.0 of CEDET package was released.&lt;br /&gt;
This version differs from previous version - 1.0pre7, and contains many changes in Semantic, EDE, and other subsystems. Full list of changes you can find in &lt;a href="http://sourceforge.net/mailarchive/message.php?msg_name=4C7AF54C.9030905%40siege-engine.com"&gt;official announcement&lt;/a&gt;.&lt;br /&gt;
Source code you &lt;a href="http://sourceforge.net/projects/cedet/files/cedet/cedet-1.0.tar.gz/download"&gt;can download&lt;/a&gt; from project's page and compile it &lt;a href="http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html"&gt;according to instructions&lt;/a&gt;.&lt;br /&gt;
And after release 1.0, development team continue to work on further integration of package into GNU Emacs, development of new parsers and other stuff, that will allow to improve work with different languages and build tools.&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/8NSPM9KteQs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/827984593013137920/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=827984593013137920" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/827984593013137920?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/827984593013137920?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/8NSPM9KteQs/release-of-cedet-10.html" title="Release of CEDET 1.0!" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>11</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/08/release-of-cedet-10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYFSHY-cSp7ImA9Wx5SFU4.&quot;"><id>tag:blogger.com,1999:blog-6862508.post-4471216526538593039</id><published>2010-08-11T15:31:00.000+01:00</published><updated>2010-08-11T15:31:59.859+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-11T15:31:59.859+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fp" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><title>Russian Clojure Planet</title><content type="html">I created (with Yahoo! Pipes) an aggregator of Clojure-related blogs in Russian language. If you interested, you can subscribe to it &lt;a href="http://feeds.feedburner.com/RussianClojurePlanet"&gt;here&lt;/a&gt;.&lt;br /&gt;
If you're writing about Clojure (or about other functional languages) in Russian, then just write to me - I'll add your blog into Clojure planet (or Russian FP Planet)&lt;img src="http://feeds.feedburner.com/~r/alexott/~4/vRjS103gaBo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://alexott.blogspot.com/feeds/4471216526538593039/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6862508&amp;postID=4471216526538593039" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4471216526538593039?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6862508/posts/default/4471216526538593039?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/alexott/~3/vRjS103gaBo/russian-clojure-planet.html" title="Russian Clojure Planet" /><author><name>Alex Ott</name><uri>http://www.blogger.com/profile/13001951608173211050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://2.bp.blogspot.com/_gSOdG3mSC3I/SVnwBuQg7_I/AAAAAAAAEdo/K3SNWhTN_Ic/S220/avatar2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://alexott.blogspot.com/2010/08/russian-clojure-planet.html</feedburner:origLink></entry></feed>
