<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns: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'><id>tag:blogger.com,1999:blog-4650152229438238529</id><updated>2026-05-16T09:55:31.797+02:00</updated><category term="Java"/><category term="video"/><category term="Eclipse"/><category term="random"/><category term="foto"/><category term="Mac"/><category term="Bitcoin"/><category term="Maven"/><category term="Sonar"/><category term="Windows"/><category term="critters"/><category term="Nexus"/><category term="Oracle"/><category term="amphibians"/><category term="beetles"/><category term="m2eclipse"/><title type='text'>OBSCURED CLARITY</title><subtitle type='html'>A CACHE FOR CURIOSITY</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>212</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-4788146858625521290</id><published>2026-01-29T18:18:00.003+01:00</published><updated>2026-02-04T11:19:14.195+01:00</updated><title type='text'>A Return After 13 Years: From Machine Learning Clusters to AI Conversations</title><content type='html'>&lt;b&gt;Thirteen years is a long time in technology.&lt;/b&gt; When I last hit &quot;publish&quot; here in 2013, Bitcoin was a novel curiosity and building a 24-core cluster into an IKEA Helmer cabinet was a fun weekend project. The world has changed, and so have my projects—but my fascination with making powerful technology accessible and practical has not.
&lt;br /&gt;
&lt;br /&gt;
Back then, my friend Alex Nugent and I were obsessed with raw computing power, as seen in &lt;a href=&quot;https://obscuredclarity.blogspot.com/2008/09/24-core-linux-cluster-in-2999-case-from.html&quot;&gt;our 2008 post about that 24-core cluster&lt;/a&gt;. Today, Alex and I are building something different: &lt;a href=&quot;https://ai-receptionist.com/about/&quot;&gt;&lt;b&gt;AI Receptionist&lt;/b&gt;&lt;/a&gt;, a practical tool born from the real frustration of modern business communication. (More on that shortly).
&lt;br /&gt;
&lt;br /&gt;
Some things do remain constant. I&#39;ve always believed in building lasting tools. Case in point: our open-source Java library, &lt;b&gt;XChange&lt;/b&gt;, is &lt;a href=&quot;https://github.com/knowm/XChange&quot;&gt;still actively maintained on GitHub&lt;/a&gt; after all these years. It&#39;s a testament to building with care and for the community.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The AI Tool Landscape: Power Demands Responsibility&lt;/h3&gt;
The tech world today is buzzing with agentic AI—tools that don&#39;t just answer questions but take actions. One project, &lt;b&gt;Moltbot&lt;/b&gt; (formerly Clawdbot), recently captured this hype, exploding on GitHub. Its promise is compelling: a personal, self-hosted AI assistant.
&lt;br /&gt;
&lt;br /&gt;
However, its rapid rise was marred by serious security oversights, from exposed API keys to critical vulnerabilities in its architecture. This pattern is unsettlingly familiar. It mirrors the core security dilemmas we&#39;ve written about before, like the risks of building production systems on platforms such as n8n (&lt;a href=&quot;https://blog.ai-receptionist.com/blogs/why-you-shouldnt-build-production-ai-systems-with-n8n.html&quot;&gt;which we detailed here&lt;/a&gt;).
&lt;br /&gt;
&lt;br /&gt;
These incidents underscore a critical rule: &lt;b&gt;any tool granted high-level access to your digital life must be treated with corresponding seriousness.&lt;/b&gt; Whether it&#39;s a local LLM agent, an MCP server from an open-source project, or an automation tool from Zapier, you must be vigilant about the permissions you grant. Security isn&#39;t a feature; it&#39;s the foundation. The power to act is also the power to cause harm if that access is not meticulously controlled and isolated.
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Many guides assume you&#39;re running it on a dedicated local machine.&lt;/i&gt; But you don&#39;t need a Mac Mini (a nod to our ancient &lt;a href=&quot;https://obscuredclarity.blogspot.com/2008/10/500gb-macbook-harddrive-upgrade-for.html&quot;&gt;500GB MacBook upgrade guide&lt;/a&gt; for those who remember!). A well-configured VPS can work, provided you prioritize isolation, strict firewalls, and treat its access tokens with the gravity of root passwords.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Our New Chapter: AI Receptionist&lt;/h3&gt;
So, what have Alex and I been building with all these security and reliability principles in mind?
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://ai-receptionist.com&quot;&gt;&lt;b&gt;AI Receptionist&lt;/b&gt;&lt;/a&gt; solves a simple, painful problem: small businesses are drowning in robocalls and spam, missing real customers in the noise. We&#39;ve combined decades of experience in AI, distributed systems, and yes, even low-level hardware (hello, Helmer cluster) to build an intelligent, 24/7 phone agent.
&lt;br /&gt;
&lt;br /&gt;
It&#39;s more than an answering machine. It understands context, filters spam intelligently, and ensures no genuine call is missed—all at a fraction of the cost of a human receptionist. Crucially, it&#39;s built as a secure, fault-tolerant service from the ground up. It&#39;s the applied, reliable implementation of the AI principles that much of the current hype is about, designed to operate in the real world where security and privacy are non-negotiable.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;A Question for the Past&lt;/h3&gt;
Writing this feels like sending a message in a bottle to a different internet era. To those who commented on those old posts about Linux clusters and Bitcoin—&lt;b&gt;are any of you still out there?&lt;/b&gt; If you are, drop a note. I&#39;m curious what you&#39;re building now and what you think of this wild AI landscape.
&lt;br /&gt;
&lt;br /&gt;
The goal of this blog was always &quot;obscured clarity&quot;—cutting through noise to the practical heart of technology. That mission continues. Let&#39;s see where the next conversation takes us.
&lt;br /&gt;
&lt;br /&gt;
– &lt;i&gt;Tim&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/4788146858625521290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/4788146858625521290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4788146858625521290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4788146858625521290'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2026/01/a-return-after-13-years-from-machine.html' title='A Return After 13 Years: From Machine Learning Clusters to AI Conversations'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3461373996486697172</id><published>2013-08-02T11:53:00.002+02:00</published><updated>2013-08-02T11:53:23.762+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bitcoin"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>How Bitcoin Works</title><content type='html'>I recently found one of the best technical explanations of Bitcoin and wanted to share...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/Lx9zgZCMqXE&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3461373996486697172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3461373996486697172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3461373996486697172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3461373996486697172'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2013/08/how-bitcoin-works.html' title='How Bitcoin Works'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-8219609477072413059</id><published>2013-01-20T22:59:00.000+01:00</published><updated>2013-01-23T08:42:31.999+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Unit Testing with HSQLDB</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://xeiam.com/yank.jsp&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJo25wKOiIwE5PwvhItz1yGLgctyWN2wD0Hhkc_L-YoPqs6-pKEPE0B-4H5_h3I9yYu5xZeJwVDLRepSXjx85qKhvqUX0gb6ApZLQvPJ-tCNgdztWM8z6MZd-N7ZUvUL-qw3LeMI6Fhyphenhyphen0/s200/yank_256.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The latest &lt;a href=&quot;http://xeiam.com/yank_changelog.jsp&quot;&gt;release (2.0.0) of Yank&lt;/a&gt; - the Ultra-Light JDBC Persistance Layer for Java, finally contains unit-tested code. This blog is about how HSQLDB was used for performing in-memory unit tests using JUnit. Just like most things, once you know the few tricks, it&#39;s really easy.&lt;br /&gt;
&lt;br /&gt;
Once nice feature of HSQLDB is that you can set up 100% in-memory tables, which makes unit testing a snap because you don&#39;t need to worry about having a database setup on the machine running the database. The following code snippets show how easy it was to setup a unit test for testing the core JDBC persistance layer code in Yank. While this is specific to Yank, this example should help you unit test any of your JDBC code using HSQLDB. After all, the main trick is to have your database properties setup correctly, as shown in HSQL_DB.properties below. &lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;h4&gt;TestBooksTable.java&lt;/h4&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;package com.xeiam.yank.unit;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.xeiam.yank.DBConnectionManager;
import com.xeiam.yank.PropertiesUtils;
import com.xeiam.yank.demo.Book;
import com.xeiam.yank.demo.BooksDAO;

/**
 * @author timmolter
 */
public class TestBooksTable {

  @BeforeClass
  public static void setUpDB() {

    Properties dbProps = PropertiesUtils.getPropertiesFromClasspath(&quot;HSQL_DB.properties&quot;);
    Properties sqlProps = PropertiesUtils.getPropertiesFromClasspath(&quot;HSQL_SQL.properties&quot;);

    DBConnectionManager.INSTANCE.init(dbProps, sqlProps);
  }

  @AfterClass
  public static void tearDownDB() {

    DBConnectionManager.INSTANCE.release();
  }

  @Test
  public void testBooksTable() {

    BooksDAO.createBooksTable();

    Book book = new Book();
    book.setTitle(&quot;Cryptonomicon&quot;);
    book.setAuthor(&quot;Neal Stephenson&quot;);
    book.setPrice(23.99);
    int i = BooksDAO.insertBook(book);
    assertThat(i, equalTo(1));

    List&amp;lt;Book&amp;gt; books = new ArrayList&amp;lt;Book&amp;gt;();

    book = new Book();
    book.setTitle(&quot;Cryptonomicon&quot;);
    book.setAuthor(&quot;Neal Stephenson&quot;);
    book.setPrice(23.99);
    books.add(book);

    book = new Book();
    book.setTitle(&quot;Harry Potter&quot;);
    book.setAuthor(&quot;Joanne K. Rowling&quot;);
    book.setPrice(11.99);
    books.add(book);

    book = new Book();
    book.setTitle(&quot;Don Quijote&quot;);
    book.setAuthor(&quot;Cervantes&quot;);
    book.setPrice(21.99);
    books.add(book);

    int[] returnValue = BooksDAO.insertBatch(books);
    assertThat(returnValue.length, equalTo(3));

    List&amp;lt;Book&amp;gt; allBooks = BooksDAO.selectAllBooks();
    assertThat(allBooks.size(), equalTo(4));

    book = BooksDAO.selectBook(&quot;Cryptonomicon&quot;);
    assertThat(book.getPrice(), equalTo(23.99));

  }
}
&lt;/pre&gt;&lt;h4&gt;HSQL_DB.properties&lt;/h4&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;driverclassname=org.hsqldb.jdbcDriver

# 100% in memory DB
myconnectionpoolname.url=jdbc:hsqldb:mem:aname;shutdown=true
myconnectionpoolname.user=sa
myconnectionpoolname.password=
myconnectionpoolname.maxconn=10
&lt;/pre&gt;&lt;h4&gt;HSQL_SQL.properties&lt;/h4&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;BOOKS_CREATE_TABLE=CREATE TABLE Books (TITLE VARCHAR(42) NULL, AUTHOR VARCHAR(42) NULL, PRICE DECIMAL(10,2) NOT NULL)
BOOKS_SELECT_BY_TITLE=SELECT * FROM BOOKS WHERE TITLE = ?
&lt;/pre&gt;&lt;h4&gt;Ultra-Light JDBC Persistance Layer&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;http://xeiam.com/yank.jsp&quot;&gt;Yank&lt;/a&gt; is a very easy-to-use yet flexible Java persistence layer for JDBC-compatible databases build on top of &lt;a href=&quot;http://commons.apache.org/dbutils/&quot;&gt;org.apache.DBUtils&lt;/a&gt;. Yank wraps DBUtils, hiding the nitty-gritty Connection and ResultSet details behind a straight-forward proxy class: DBProxy. &quot;Query&quot; methods execute SELECT statements and return a List of POJOs. &quot;Execute&quot; methods execute INSERT, UPDATE, and DELETE (and more) statements. &lt;/p&gt;&lt;p&gt;Usage is very simple: define DB connectivity properties, create a DAO and POJO class, and execute queries.&lt;/p&gt;&lt;h4&gt;Features&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Depends on light-weight and robust DBUtils library&lt;/li&gt;
&lt;li&gt;~13KB Jar&lt;/li&gt;
&lt;li&gt;Apache 2.0 license&lt;/li&gt;
&lt;li&gt;Batch execute&lt;/li&gt;
&lt;li&gt;Automatic POJO and POJO List querying&lt;/li&gt;
&lt;li&gt;Works with any JDBC-compliant database&lt;/li&gt;
&lt;li&gt;Write your own SQL statements&lt;/li&gt;
&lt;li&gt;Optionally store SQL statements in a Properties file&lt;/li&gt;
&lt;li&gt;Built-in Connection pool&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;What&#39;s Next?&lt;/h4&gt;&lt;p&gt;Now go ahead and &lt;a href=&quot;/yank_examplecode.jsp&quot;&gt;study some examples&lt;/a&gt;, &lt;a href=&quot;/yank_changelog.jsp&quot;&gt;download the thing&lt;/a&gt; and &lt;a href=&quot;https://github.com/timmolter/Yank/issues&quot;&gt;provide feedback&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/8219609477072413059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/8219609477072413059' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8219609477072413059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8219609477072413059'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2013/01/unit-testing-with-hsqldb.html' title='Unit Testing with HSQLDB'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJo25wKOiIwE5PwvhItz1yGLgctyWN2wD0Hhkc_L-YoPqs6-pKEPE0B-4H5_h3I9yYu5xZeJwVDLRepSXjx85qKhvqUX0gb6ApZLQvPJ-tCNgdztWM8z6MZd-N7ZUvUL-qw3LeMI6Fhyphenhyphen0/s72-c/yank_256.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-599896596877346911</id><published>2013-01-17T08:46:00.002+01:00</published><updated>2013-03-10T09:17:21.030+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bitcoin"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>XChange Release 1.3.0</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXuJ1P-ZYiUzv0BZKmsn7WokeNM_yjMNJ9C8_mzO-9MSXhvX5Z1wXPam5fnhXJjGKKATCYDtmJk3OlhHVJDk05E8w-9MHlkTHprOSqPtN1XV4sdCKLA8Gd-jOaIVK1rCEIDBwPgepi1f4/s1600/xchange_example1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;136&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXuJ1P-ZYiUzv0BZKmsn7WokeNM_yjMNJ9C8_mzO-9MSXhvX5Z1wXPam5fnhXJjGKKATCYDtmJk3OlhHVJDk05E8w-9MHlkTHprOSqPtN1XV4sdCKLA8Gd-jOaIVK1rCEIDBwPgepi1f4/s200/xchange_example1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Our Financial Exchange Library for Java, XChange, has seen a lot of active development since the previous release in October 2012. We went from 2 to 7 exchange implementations thanks mostly to the growing community starting to support the project more. &lt;br /&gt;
&lt;br /&gt;
Here&#39;s a list of the supported exchanges. More detailed info can be found &lt;a href=&quot;https://github.com/timmolter/XChange/wiki/Exchange-Support&quot;&gt;here&lt;/a&gt;, which includes planned future exchange implementations.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;MtGox - polling and streaming market data, authenticated trading&lt;/li&gt;
&lt;li&gt;Bitstamp - polling market data, authenticated trading&lt;/li&gt;
&lt;li&gt;BTC-E - polling market data, authenticated trading&lt;/li&gt;
&lt;li&gt;VirtEx - polling market data&lt;/li&gt;
&lt;li&gt;CampBX - polling market data&lt;/li&gt;
&lt;li&gt;BitcoinCharts - polling market data (Bitcoin Exchange Rates)&lt;/li&gt;
&lt;li&gt;OpenExchangeRates - polling market data (Fiat Currency Exchange Rates)&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
Internally, we introduced a new and improved REST interface that sits between our  xchange classes and the HttpTemplate class responsible for fetching JSON. It also gives XChange clients access to the raw unmarshalled JSON data if they want it, which was something XChange needed for a long time.&lt;br /&gt;
&lt;br /&gt;
All exchange implementations have full-coverage unit tests.&lt;br /&gt;
&lt;br /&gt;
We&#39;ve been able to reduce the number of dependencies a lot. One of the main focuses of XChange is to be very lightweight. Most notably is the outdated org.json jar. We dug into the Socket.io code, and painstakingly swapped out the old code with our already-used Jackson JSON code. This is good news for apps like &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.veken0m.cavirtex&amp;hl=en&quot;&gt;Bitcoinium&lt;/a&gt; and &lt;a href=&quot;https://multibit.org/&quot;&gt;Multibit&lt;/a&gt;, which both use XChange, for keeping their executable footprint small.&lt;br /&gt;
&lt;br /&gt;
Another major accomplishment with this release, is that the artifacts are now hosted on Maven Central: &lt;a href=&quot;http://search.maven.org/#search%7Cga%7C1%7Cxeiam%20xchange&quot;&gt;XChange artifacts on Maven Central&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
We&#39;re thinking about adding an arbitrage API within XChange next as the MtGox, BTC-E, and Bitstamp implementations all contain trading functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Relevant Links&lt;/h4&gt;&lt;a href=&quot;http://https://github.com/timmolter/XChange/wiki/Exchange-Support&quot;&gt;Detailed Exchange Support&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/timmolter/XChange/issues&quot;&gt;Bug Reports and Feature Requests&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://xeiam.com/xchange.jsp&quot;&gt;XChange Home on xeiam.com&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://search.maven.org/#search%7Cga%7C1%7Cxeiam%20xchange&quot;&gt;XChange artifacts on Maven Central&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/timmolter/XChange&quot;&gt;XChange project on Github&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/599896596877346911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/599896596877346911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/599896596877346911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/599896596877346911'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2013/01/xchange-release-130.html' title='XChange Release 1.3.0'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXuJ1P-ZYiUzv0BZKmsn7WokeNM_yjMNJ9C8_mzO-9MSXhvX5Z1wXPam5fnhXJjGKKATCYDtmJk3OlhHVJDk05E8w-9MHlkTHprOSqPtN1XV4sdCKLA8Gd-jOaIVK1rCEIDBwPgepi1f4/s72-c/xchange_example1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-1772268681667459398</id><published>2013-01-10T13:02:00.000+01:00</published><updated>2013-01-10T13:02:02.237+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Very Realistic Robot Face</title><content type='html'>&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/knRyDcnUc4U&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/1772268681667459398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/1772268681667459398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1772268681667459398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1772268681667459398'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2013/01/very-realistic-robot-face.html' title='Very Realistic Robot Face'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/knRyDcnUc4U/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3595032319153642394</id><published>2012-12-13T14:52:00.000+01:00</published><updated>2013-01-06T14:57:29.873+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Mechanical Bird Song Device from 1890</title><content type='html'>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/tPKFT_t2rL0&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3595032319153642394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3595032319153642394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3595032319153642394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3595032319153642394'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/12/mechanical-bird-song-device-from-1890.html' title='Mechanical Bird Song Device from 1890'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/tPKFT_t2rL0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-8162011911825030171</id><published>2012-11-14T14:51:00.000+01:00</published><updated>2013-01-06T14:56:17.096+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>High-Speed Robot Hand</title><content type='html'>&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/-KxjVlaLBmk&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/8162011911825030171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/8162011911825030171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8162011911825030171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8162011911825030171'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/11/high-speed-robot-hand.html' title='High-Speed Robot Hand'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/-KxjVlaLBmk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-5019881202361823125</id><published>2012-10-29T13:26:00.000+01:00</published><updated>2012-10-29T14:09:59.118+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Unit Testing Runtime Exceptions with JUnit4 and Hamcrest</title><content type='html'>Junit and Hamcrest make unit testing with Java almost enjoyable. In this post, I show how to unit test Exceptions with JUnit4 and Hamcrest. In this over-simplified example, I&#39;m testing a method that always throws an IllegalArgumentException. In real-life the IllegalArgumentException would only be thrown under special circumstances given certain arguments, and those are the ones you want to test with the unit test. &lt;br /&gt;
&lt;br /&gt;
The basic idea is to surround the method you want to test with a try catch block and pass it an argument that will trigger the IllegalArgumentException to be thrown. The fail method call should never be reached, and if it does the unit test should fail. What should happen is that the IllegalArgumentException is caught, followed by a check for the correct message. &lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.fail;

import org.junit.Test;

/**
 * The following example code demonstrates how to unit test Exceptions with JUnit and Hamcrest
 */
public class ExceptionUnitTesting {

  @Test
  public void test() {

    try {
      blah(&quot;asdf&quot;);
      fail(&quot;Expected exception&quot;);
    } catch (IllegalArgumentException e) {
      assertThat(e.getMessage(), is(equalTo(&quot;Argument foo is not valid!&quot;)));
    }
  }

  /**
   * @param foo
   * @throws IllegalArgumentException - in this test case always
   */
  private void blah(String foo) {

    throw new IllegalArgumentException(&quot;Argument foo is not valid!&quot;);
  }
}

&lt;/pre&gt;&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/5019881202361823125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/5019881202361823125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/5019881202361823125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/5019881202361823125'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/10/unit-testing-runtime-exceptions-with.html' title='Unit Testing Runtime Exceptions with JUnit4 and Hamcrest'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-25797888110159761</id><published>2012-10-01T10:22:00.000+02:00</published><updated>2012-10-01T10:22:00.509+02:00</updated><title type='text'>Import a Maven Git Project Into Eclipse</title><content type='html'>&lt;h3&gt;The Easy Way&lt;/h3&gt;&lt;br /&gt;
&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://obscuredclarity.blogspot.de/2012/04/hello-world-maven-m2eclipse-and-eclipse.html&quot;&gt;Install M2Eclipse&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Step 1: Clone or create Git Repo. First, you need to clone a Git repo into an empty folder in your workspace. You need to use a Git client such as &lt;a href=&quot;http://www.sourcetreeapp.com/&quot;&gt;SourceTree&lt;/a&gt; or &lt;a href=&quot;http://code.google.com/p/tortoisegit/&quot;&gt;TortoiseGit&lt;/a&gt; for this. Create you workspace first if it isn&#39;t already, and clone the git repo directly into a new folder labeled with the project name.&lt;br /&gt;
&lt;br /&gt;
Step 2: Import Into Eclipse. In the Package Explorer view, right-click and choose Import... In the wizard choose Maven -&gt; &quot;Existing Maven Projects&quot; as the project type. Search for the project home directory and click though the wizard.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;h3&gt;The Hard Way&lt;/h3&gt;&lt;br /&gt;
&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://obscuredclarity.blogspot.de/2012/04/hello-world-maven-m2eclipse-and-eclipse.html&quot;&gt;Install M2Eclipse&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://obscuredclarity.blogspot.de/2011/04/install-egit-for-eclipse.html&quot;&gt;Install egit&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Step 1: Right-click in the Package Explorer area and select Import..., select Maven -&gt; Check out Maven Projects from SCM, and click Next. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31ZTyRODXqyTwVN3Hs-Qhy5l-fxFk9zTShshw8xzgOhxDG16SW2ghUwCvjSTRnPY2T6EmUvi6gk3Vj4ZJDI3XReak13V5V6w5M4TpMYGf0YROw0E70fb8LMglWDRrZuyDsPFNjkVfw10/s1600/Screen+shot+2012-08-08+at+3.40.56+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31ZTyRODXqyTwVN3Hs-Qhy5l-fxFk9zTShshw8xzgOhxDG16SW2ghUwCvjSTRnPY2T6EmUvi6gk3Vj4ZJDI3XReak13V5V6w5M4TpMYGf0YROw0E70fb8LMglWDRrZuyDsPFNjkVfw10/s400/Screen+shot+2012-08-08+at+3.40.56+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 2: Choose &quot;git&quot; as the SCM connector next to &quot;SCM URL:&quot; and type in the Git repo URL. If there are no connectors to choose from you have to first install that Eclipse plugin. To do that, click on the &quot;m2e Marketplace&quot; link in the lower right hand corner of the dialog box.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj41lq7-g0p8e4HPajcKB9zIdeBN_nmT-5_jhJkTRidvKy3CUpQZ3XYTP-_GW4SXuS3R4iNa3jjPmbMkETo0ZSwlhpT_p0pR-5CK6-NPdOupoGBvihU9_6U5TnM56SUwMlzKwX0MY9Ylro/s1600/Screen+shot+2012-08-08+at+3.41.14+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;336&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj41lq7-g0p8e4HPajcKB9zIdeBN_nmT-5_jhJkTRidvKy3CUpQZ3XYTP-_GW4SXuS3R4iNa3jjPmbMkETo0ZSwlhpT_p0pR-5CK6-NPdOupoGBvihU9_6U5TnM56SUwMlzKwX0MY9Ylro/s400/Screen+shot+2012-08-08+at+3.41.14+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 3: Check m2e-egit and click Finish.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYmS1Mzc5auZTTRMv1DUVvU5yzBm006uXks1j8mkUBegdl0cAqwTIgQlXEHDKk2LKVN27xVAWpfcTuLYxqOGyfnutE33jUrhCpf48r3pSQrl6dEYh8zDpxDNW05wAyR8kwDvelbmh-V_Y/s1600/Screen+shot+2012-08-08+at+3.44.41+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;145&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYmS1Mzc5auZTTRMv1DUVvU5yzBm006uXks1j8mkUBegdl0cAqwTIgQlXEHDKk2LKVN27xVAWpfcTuLYxqOGyfnutE33jUrhCpf48r3pSQrl6dEYh8zDpxDNW05wAyR8kwDvelbmh-V_Y/s400/Screen+shot+2012-08-08+at+3.44.41+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 4: Select &quot;git&quot; as the SCM connector and type in the Git repo URL.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIUt5ThKmTntkjLcTD7Jhf979ymLxkW_SBhcyb9lnDrR6b2z4aLNxnTGGuZPvEbWN8WR6FdbOL8eFbyLDKTKZq1SwBjLHp7tThkAkMM_G9oc8xjVUwLoiVnfMo2bsDsV9xVQTVdfqbJHk/s1600/Screen+shot+2012-08-08+at+4.51.20+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIUt5ThKmTntkjLcTD7Jhf979ymLxkW_SBhcyb9lnDrR6b2z4aLNxnTGGuZPvEbWN8WR6FdbOL8eFbyLDKTKZq1SwBjLHp7tThkAkMM_G9oc8xjVUwLoiVnfMo2bsDsV9xVQTVdfqbJHk/s400/Screen+shot+2012-08-08+at+4.51.20+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 5: After asking you for the passphrase for ssh access to the Git repo, it will download and import the Java project as a Maven project into your workspace.&lt;br /&gt;
&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/25797888110159761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/25797888110159761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/25797888110159761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/25797888110159761'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/10/import-maven-git-project-into-eclipse.html' title='Import a Maven Git Project Into Eclipse'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31ZTyRODXqyTwVN3Hs-Qhy5l-fxFk9zTShshw8xzgOhxDG16SW2ghUwCvjSTRnPY2T6EmUvi6gk3Vj4ZJDI3XReak13V5V6w5M4TpMYGf0YROw0E70fb8LMglWDRrZuyDsPFNjkVfw10/s72-c/Screen+shot+2012-08-08+at+3.40.56+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-1569209153361487251</id><published>2012-09-23T00:12:00.002+02:00</published><updated>2012-09-23T00:12:39.543+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Bird Brains</title><content type='html'>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/ZRz7Xwi1ypU&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/1569209153361487251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/1569209153361487251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1569209153361487251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1569209153361487251'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/09/bird-brains.html' title='Bird Brains'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ZRz7Xwi1ypU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-2438218377573952128</id><published>2012-09-20T11:29:00.001+02:00</published><updated>2012-09-20T11:29:07.915+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Bacteria as a Superorganism</title><content type='html'>&lt;object width=&quot;526&quot; height=&quot;374&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;param name=&quot;bgColor&quot; value=&quot;#ffffff&quot;&gt;&lt;/param&gt;&lt;param name=&quot;flashvars&quot; value=&quot;vu=http://video.ted.com/talk/stream/2009/Blank/BonnieBassler_2009-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BonnieBassler-2009.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=509&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=bonnie_bassler_on_how_bacteria_communicate;year=2009;theme=evolution_s_genius;theme=medicine_without_borders;theme=unconventional_explanations;theme=animals_that_amaze;event=TED2009;tag=MacArthur+grant;tag=bacteria;tag=biology;tag=communication;tag=disease;tag=evolution;tag=health;tag=human+origins;tag=microbiology;tag=science;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot; /&gt;&lt;embed src=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot; pluginspace=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; bgColor=&quot;#ffffff&quot; width=&quot;526&quot; height=&quot;374&quot; allowFullScreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; flashvars=&quot;vu=http://video.ted.com/talk/stream/2009/Blank/BonnieBassler_2009-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BonnieBassler-2009.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=509&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=bonnie_bassler_on_how_bacteria_communicate;year=2009;theme=evolution_s_genius;theme=medicine_without_borders;theme=unconventional_explanations;theme=animals_that_amaze;event=TED2009;tag=MacArthur+grant;tag=bacteria;tag=biology;tag=communication;tag=disease;tag=evolution;tag=health;tag=human+origins;tag=microbiology;tag=science;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/2438218377573952128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/2438218377573952128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/2438218377573952128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/2438218377573952128'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/09/bacteria-as-superorganism.html' title='Bacteria as a Superorganism'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-8119273077404922351</id><published>2012-09-20T11:10:00.002+02:00</published><updated>2012-09-20T11:11:12.945+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Good Overview of Superstring Theory</title><content type='html'>&lt;object width=&quot;526&quot; height=&quot;374&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;param name=&quot;bgColor&quot; value=&quot;#ffffff&quot;&gt;&lt;/param&gt;&lt;param name=&quot;flashvars&quot; value=&quot;vu=http://video.ted.com/talk/stream/2005/Blank/BrianGreene_2005-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BrianGreene-2005.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=251&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=brian_greene_on_string_theory;year=2005;theme=unconventional_explanations;theme=peering_into_space;event=TED2005;tag=physics;tag=science;tag=universe;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot; /&gt;&lt;embed src=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot; pluginspace=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; bgColor=&quot;#ffffff&quot; width=&quot;526&quot; height=&quot;374&quot; allowFullScreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; flashvars=&quot;vu=http://video.ted.com/talk/stream/2005/Blank/BrianGreene_2005-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BrianGreene-2005.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=251&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=brian_greene_on_string_theory;year=2005;theme=unconventional_explanations;theme=peering_into_space;event=TED2005;tag=physics;tag=science;tag=universe;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/8119273077404922351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/8119273077404922351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8119273077404922351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8119273077404922351'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/09/good-overview-of-superstring-theory.html' title='Good Overview of Superstring Theory'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-953143525298910236</id><published>2012-09-19T23:24:00.004+02:00</published><updated>2012-09-19T23:24:38.071+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>What Is Life Really?</title><content type='html'>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/6jIeHsefCPk&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/953143525298910236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/953143525298910236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/953143525298910236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/953143525298910236'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/09/what-is-life-really.html' title='What Is Life Really?'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/6jIeHsefCPk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-4112334766657702889</id><published>2012-09-11T10:45:00.000+02:00</published><updated>2012-09-11T10:45:13.047+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Avoiding Name Collisions When Organizing Imports in Eclipse</title><content type='html'>Is there any way to get Eclipse to automatically give preference to a preferred import when organizing imports? Thankfully, the answer is yes.&lt;br /&gt;
&lt;br /&gt;
For example, I&#39;d like to be able to write:&lt;br /&gt;
&lt;br /&gt;
    List&lt;String&gt; myList = new ArrayList&lt;String&gt;();&lt;br /&gt;
&lt;br /&gt;
hit &lt;b&gt;Ctrl&lt;/b&gt; + &lt;b&gt;Shift&lt;/b&gt; + &lt;b&gt;O&lt;/b&gt; and have Eclipse add:&lt;br /&gt;
&lt;br /&gt;
    import java.util.List;&lt;br /&gt;
&lt;br /&gt;
And not always ask me which List I want to import:&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkmDVu_flDZLTu3-2u63bcHf19oMGReOysD35QMiVj51JbGMF4T9P-G_LFnO55FBUBS35b0LHBm4m7oy2uClJi5Kr6JNZ6fVRUrE6ZtnZC5Re2ufhnwc4pMJXDKPIpdpGvtW27RJVSeNc/s1600/Screen+shot+2012-09-11+at+10.30.35+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkmDVu_flDZLTu3-2u63bcHf19oMGReOysD35QMiVj51JbGMF4T9P-G_LFnO55FBUBS35b0LHBm4m7oy2uClJi5Kr6JNZ6fVRUrE6ZtnZC5Re2ufhnwc4pMJXDKPIpdpGvtW27RJVSeNc/s400/Screen+shot+2012-09-11+at+10.30.35+AM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
To tell Eclipse not to ever consider java.awt.List, for example, go to Preferences --&gt; Java --&gt; Appearance --&gt; Type Filters menu. Click add and enter Types you do not want Eclipse to consider for automatic insertion of import statements.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMq1or454bIcDAPo3Usop1q1vN8IZeofVOZ4txNzgLPiYzjl0LYlTJDYf0qA5lErTFv5F9PYECX73TDd13Ay-Vhp_6dljhtf6Qy_m8O40mCMxdS1ZvvqRiZry8M9MdfUVicKfCsWOr3Jo/s1600/Screen+shot+2012-09-11+at+10.45.04+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;324&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMq1or454bIcDAPo3Usop1q1vN8IZeofVOZ4txNzgLPiYzjl0LYlTJDYf0qA5lErTFv5F9PYECX73TDd13Ay-Vhp_6dljhtf6Qy_m8O40mCMxdS1ZvvqRiZry8M9MdfUVicKfCsWOr3Jo/s400/Screen+shot+2012-09-11+at+10.45.04+AM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/4112334766657702889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/4112334766657702889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4112334766657702889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4112334766657702889'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/09/avoiding-name-collisions-when.html' title='Avoiding Name Collisions When Organizing Imports in Eclipse'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkmDVu_flDZLTu3-2u63bcHf19oMGReOysD35QMiVj51JbGMF4T9P-G_LFnO55FBUBS35b0LHBm4m7oy2uClJi5Kr6JNZ6fVRUrE6ZtnZC5Re2ufhnwc4pMJXDKPIpdpGvtW27RJVSeNc/s72-c/Screen+shot+2012-09-11+at+10.30.35+AM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-952092519196439061</id><published>2012-08-28T23:42:00.001+02:00</published><updated>2013-03-10T14:08:40.754+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bitcoin"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>XChange - Open Source Java API for MtGox Bitcoin Exchange</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxikQiYy9J24AjK2LcJwhWyQR3Ceak_VeAYqiyz1dolYRSWnWfgX_reE7QUh9qtPQdi5vFS3n4ZwOSOaSho7Rl76bTjlVzdwy1xCtnX8jfZZCGYe6UFphKUJTsqxib2EKiEgruzMpTRFY/s1600/xchange_256.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxikQiYy9J24AjK2LcJwhWyQR3Ceak_VeAYqiyz1dolYRSWnWfgX_reE7QUh9qtPQdi5vFS3n4ZwOSOaSho7Rl76bTjlVzdwy1xCtnX8jfZZCGYe6UFphKUJTsqxib2EKiEgruzMpTRFY/s200/xchange_256.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
UPDATE March 9, 2013: &lt;a href=&quot;http://blog.xeiam.com/2013/03/xchange-150-released.html&quot;&gt;Version 1.5.0 released&lt;/a&gt;. Support for 10 exchanges.&lt;br /&gt;
&lt;br /&gt;
UPDATE Jan 31, 2013: Version 1.4.0 released. Support for Canadian Virtual Exchange. Mostly bug fixes.&lt;br /&gt;
&lt;br /&gt;
UPDATE Jan 16, 2013: Version 1.3.0 released. Support for many more exchanges. See &lt;a href=&quot;http://xeiam.com/xchange_changelog.jsp&quot;&gt;release notes&lt;/a&gt; and also &lt;a href=&quot;http://obscuredclarity.blogspot.de/2013/01/xchange-release-130.html&quot;&gt;XChange Release 1.3.0 Announcement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE Oct 11, 2012: Version 1.2.0 released. Support for Canadian Virtual Exchange.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/timmolter/XChange/wiki/Exchange-Support&quot;&gt;Supported Exchanges&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Together with other members from the Bitcoin community, I&#39;ve recently created a new open source Java library called XChange. XChange is a Java library providing a simple and consistent API for interacting with a diverse set of financial security exchanges including Bitcoin. The first exchange implemented is the world&#39;s largest Bitcoin exchange - Mt Gox. The plan is to add more Bitcoin exchanges and other traditional financial exchanges offerring trading APIs such as Interactive Brokers.&lt;br /&gt;
&lt;br /&gt;
As of the most recent release 1.1.0, Xchange offers the following functionality:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Support for MtGox Bitcoin Exchange (public) polling market data (ticker, depth, trades, etc.)&lt;/li&gt;
&lt;li&gt;Support for MtGox Bitcoin Exchange (private) polling trade data (account info, market order, limit order, cancel order open orders, etc.)&lt;/li&gt;
&lt;li&gt;Support for MtGox Bitcoin Exchange (public) streaming market (ticker)&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;fullpost&quot;&gt;Next up on the todo list is:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Support for MtGox Bitcoin Exchange (public) streaming market (depth, trades, etc.)&lt;/li&gt;
&lt;li&gt;Support for MtGox Bitcoin Exchange (private) streaming trade data (account info, market order, limit order, cancel order open orders, etc.)&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;Relevant Links&lt;/h1&gt;Project Home - &lt;a href=&quot;http://xeiam.com/xchange.jsp&quot;&gt;http://xeiam.com/xchange.jsp&lt;/a&gt;&lt;br /&gt;
Code on Github - &lt;a href=&quot;https://github.com/timmolter/XChange&quot;&gt;https://github.com/timmolter/XChange&lt;/a&gt;&lt;br /&gt;
Example Code - &lt;a href=&quot;http://xeiam.com/xchange_examplecode.jsp&quot;&gt;http://xeiam.com/xchange_examplecode.jsp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;Examples&lt;/h1&gt;The following examples demonstrate getting Ticker data from MtGox, first using the polling API, and second using the streaming API.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Ticker via Polling API&lt;/h3&gt;&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;package com.xeiam.xchange.examples.mtgox.v1.polling;

import com.xeiam.xchange.Currencies;
import com.xeiam.xchange.Exchange;
import com.xeiam.xchange.ExchangeFactory;
import com.xeiam.xchange.dto.marketdata.Ticker;
import com.xeiam.xchange.service.marketdata.polling.PollingMarketDataService;

/**
 * Test requesting polling Ticker at MtGox
 */
public class TickerDemo {

  private static PollingMarketDataService marketDataService;

  public static void main(String[] args) {

    // Use the factory to get the version 1 MtGox exchange API using default settings
    Exchange mtGox = ExchangeFactory.INSTANCE.createExchange(&quot;com.xeiam.xchange.mtgox.v1.MtGoxExchange&quot;);

    // Interested in the public polling market data feed (no authentication)
    marketDataService = mtGox.getPollingMarketDataService();

    // Get the latest ticker data showing BTC to USD
    Ticker ticker = marketDataService.getTicker(Currencies.BTC, Currencies.USD);
    double value = ticker.getLast().getAmount().doubleValue();
    String currency = ticker.getLast().getCurrencyUnit().toString();
    System.out.println(&quot;Last: &quot; + currency + &quot;-&quot; + value);

    System.out.println(&quot;Last: &quot; + ticker.getLast().toString());
    System.out.println(&quot;Bid: &quot; + ticker.getBid().toString());
    System.out.println(&quot;Ask: &quot; + ticker.getAsk().toString());

    // Get the latest ticker data showing BTC to EUR
    ticker = marketDataService.getTicker(Currencies.BTC, Currencies.EUR);
    System.out.println(&quot;Last: &quot; + ticker.getLast().toString());
    System.out.println(&quot;Bid: &quot; + ticker.getBid().toString());
    System.out.println(&quot;Ask: &quot; + ticker.getAsk().toString());

    // Get the latest ticker data showing BTC to GBP
    ticker = marketDataService.getTicker(Currencies.BTC, Currencies.GBP);
    System.out.println(&quot;Last: &quot; + ticker.getLast().toString());
    System.out.println(&quot;Bid: &quot; + ticker.getBid().toString());
    System.out.println(&quot;Ask: &quot; + ticker.getAsk().toString());

  }

}
&lt;/pre&gt;Result:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;Last: USD-5.14739
Last: USD 5.14739
Bid: USD 5.12011
Ask: USD 5.1299

Last: EUR 4.07
Bid: EUR 4.0527
Ask: EUR 4.07

Last: GBP 3.3452
Bid: GBP 3.3
Ask: GBP 3.34091
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Ticker via Streaming API&lt;/h3&gt;&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;package com.xeiam.xchange.examples.mtgox.v1.streaming;

import java.util.concurrent.BlockingQueue;

import com.xeiam.xchange.Currencies;
import com.xeiam.xchange.Exchange;
import com.xeiam.xchange.dto.marketdata.Ticker;
import com.xeiam.xchange.mtgox.v1.MtGoxExchange;
import com.xeiam.xchange.service.marketdata.streaming.StreamingMarketDataService;

/**
 * Test requesting streaming Ticker at MtGox
 */
public class TickerDemo {

  public static void main(String[] args) {

    TickerDemo tickerDemo = new TickerDemo();
    tickerDemo.start();
  }

  private void start() {

    // Use the default MtGox settings
    Exchange mtGox = MtGoxExchange.newInstance();

    // Interested in the public streaming market data feed (no authentication)
    StreamingMarketDataService streamingMarketDataService = mtGox.getStreamingMarketDataService();

    // Get blocking queue that receives streaming ticker data
    BlockingQueue&lt;ticker&gt; tickerQueue = streamingMarketDataService.requestTicker(Currencies.BTC, Currencies.USD);

    // take streaming ticker data from the queue and do something with it
    while (true) {
      try {
        // Put your ticker event handling code here
        doSomething(tickerQueue.take());
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }

  /**
   * Do something fun with the streaming data!
   * 
   * @param ticker
   */
  private void doSomething(Ticker ticker) {

    System.out.println(ticker.toString());
  }

}
&lt;/pre&gt;Result:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;Ticker [timestamp=2012-08-26T20:09:13.202Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3078691906206]
Ticker [timestamp=2012-08-26T20:09:18.651Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:19.568Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:23.152Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:23.975Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:24.790Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:25.205Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:26.018Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
Ticker [timestamp=2012-08-26T20:09:26.543Z, last=USD 10.6, bid=USD 10.55248, ask=USD 10.6, tradableIdentifier=BTC, volume=3068691906206]
&lt;/pre&gt;Piece of Cake!!!&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/952092519196439061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/952092519196439061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/952092519196439061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/952092519196439061'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/xchange-open-source-java-api-for-mtgox.html' title='XChange - Open Source Java API for MtGox Bitcoin Exchange'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxikQiYy9J24AjK2LcJwhWyQR3Ceak_VeAYqiyz1dolYRSWnWfgX_reE7QUh9qtPQdi5vFS3n4ZwOSOaSho7Rl76bTjlVzdwy1xCtnX8jfZZCGYe6UFphKUJTsqxib2EKiEgruzMpTRFY/s72-c/xchange_256.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-6654504902707375004</id><published>2012-08-27T16:43:00.000+02:00</published><updated>2012-08-27T16:43:57.966+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Running Average and Running Standard Deviation in Java</title><content type='html'>Today I needed to generate statistics for a simulation in real-time, which forced me to code a class that calculates the running average and running standard deviation of incoming data. I remember doing this a long time ago for another project based on MATLAB, but today I needed a Java implementation. The following code example shows how to calculate the running average and running standard deviation for streaming data. Thanks to &lt;a href=&quot;http://subluminal.wordpress.com/2008/07/31/running-standard-deviations/&quot;&gt;Subluminal Messages&lt;/a&gt; for the simple math implementation!&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;h1&gt;The Code&lt;/h1&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;public class RunningStatDemo {

  public static void main(String[] args) {

    RunningStatDemo rsd = new RunningStatDemo();
    rsd.go();
  }

  private void go() {

    RunningStat rs = new RunningStat();
    rs.put(1);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());

    rs.put(1);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());

    rs.put(10);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());

    rs.put(20);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());

    rs.put(50);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());

    rs.put(50);
    System.out.println(&quot;ave: &quot; + rs.getAverage());
    System.out.println(&quot;std: &quot; + rs.getStandardDeviation());
  }

  public class RunningStat {

    private int count = 0;
    private double average = 0.0;
    private double pwrSumAvg = 0.0;
    private double stdDev = 0.0;

    /**
     * Incoming new values used to calculate the running statistics
     * 
     * @param value
     */
    public void put(double value) {

      count++;
      average += (value - average) / count;
      pwrSumAvg += (value * value - pwrSumAvg) / count;
      stdDev = Math.sqrt((pwrSumAvg * count - count * average * average) / (count - 1));

    }

    public double getAverage() {

      return average;
    }

    public double getStandardDeviation() {

      return Double.isNaN(stdDev) ? 0.0 : stdDev;
    }

  }

}
&lt;/pre&gt;&lt;br /&gt;
&lt;h1&gt;Results&lt;/h1&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;ave: 1.0
std: 0.0
ave: 1.0
std: 0.0
ave: 4.0
std: 5.196152422706632
ave: 8.0
std: 9.055385138137417
ave: 16.4
std: 20.354360712142253
ave: 22.0
std: 22.794736234490628
&lt;/pre&gt;&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/6654504902707375004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/6654504902707375004' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/6654504902707375004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/6654504902707375004'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/running-average-and-running-standard.html' title='Running Average and Running Standard Deviation in Java'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-4718188743963538519</id><published>2012-08-26T23:34:00.001+02:00</published><updated>2012-08-26T23:34:28.699+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Maven"/><title type='text'>Create Javadocs for a Multi-Module Maven Project</title><content type='html'>In this tutorial, I show how to create Javadocs for a multi-module Maven project. Creation of Javadocs requires the use of the Maven maven-javadoc-plugin plugin and running &quot;mvn javadoc:aggregate&quot; on the parent pom.xml. For the sake of this tutorial, I&#39;m taking some excerpts from one of my current Open Source Projects - &lt;a href=&quot;http://xeiam.com/xchange.jsp&quot;&gt;XChange&lt;/a&gt;. &lt;br /&gt;
&lt;h1&gt;Relevant Links&lt;/h1&gt;&lt;a href=&quot;https://github.com/timmolter/XChange&quot;&gt;XChange on Github&lt;/a&gt; - To see an actual working example&lt;br /&gt;
&lt;a href=&quot;http://xeiam.com/xchange/javadoc/index.html&quot;&gt;Javadocs for XChange on xeiam.com&lt;/a&gt; - To see what the generated Javadocs look like.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;h1&gt;How To&lt;/h1&gt;Step 1: Add the following to the parent pom.xml file:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&amp;lt;build&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;pluginmanagement&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-javadoc-plugin&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;2.8.1&amp;lt;/version&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/pluginManagement&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;plugins&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-javadoc-plugin&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/plugins&amp;gt;
&amp;lt;/build&amp;gt;
&lt;/pre&gt;Step 2: Run the following mvn command:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;unix&quot;&gt;mvn javadoc:aggregate&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Piece of Cake!!!&lt;br /&gt;
&lt;br /&gt;
See also: &lt;a href=&quot;http://obscuredclarity.blogspot.com/2012/05/maven-project-compiles-in-eclipse-but.html&quot;&gt;Maven Project Compiles in Eclipse but Maven Build Fails&lt;/a&gt;&lt;br /&gt;
See also: &lt;a href=&quot;http://obscuredclarity.blogspot.com/2012/05/using-maven-offline.html&quot;&gt;Using Maven Offline&lt;/a&gt;&lt;br /&gt;
See also: &lt;a href=&quot;http://obscuredclarity.blogspot.com/2012/04/hello-world-maven-m2eclipse-and-eclipse.html&quot;&gt;Hello World - Maven, M2Eclipse and Eclipse&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/4718188743963538519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/4718188743963538519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4718188743963538519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/4718188743963538519'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/create-javadocs-for-multi-module-maven.html' title='Create Javadocs for a Multi-Module Maven Project'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-5049239968962524246</id><published>2012-08-25T17:20:00.002+02:00</published><updated>2012-08-25T17:26:21.213+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Java XChart Library Now Supports Error Bars</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMkz9gRLSE9UOORnXQe2sJYwtRfqGT0zltAfEHqbhGOAjmbU8cRxfbPuqvhpSYLJ9NVuzE0wz43K1Lyo5rrBmVAxyQ49ilvgfH7A3JzBleYBdNQcxdrcKVTDfAEOgDQ32AcSZaC2koD8A/s1600/xchart_example8.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;148&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMkz9gRLSE9UOORnXQe2sJYwtRfqGT0zltAfEHqbhGOAjmbU8cRxfbPuqvhpSYLJ9NVuzE0wz43K1Lyo5rrBmVAxyQ49ilvgfH7A3JzBleYBdNQcxdrcKVTDfAEOgDQ32AcSZaC2koD8A/s200/xchart_example8.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://xeiam.com/xchart.jsp&quot;&gt;XChart&lt;/a&gt; provides a super light-weight and dependency-free charting API for Java. It is open source, hosted on Github, and is licensed with an Apache 2.0 license. I created it over a year ago because I was looking for and couldn&#39;t find an easy-to-use plotting library for Java that was similar to the MATLAB&#39;s charting tool. I tried JFreeChart of course, but I found that the learning curve was very steep. Like MATLAB&#39;s charting functions, I just wanted to simply pass my data to an API, and after a few lines of code, have a plot. &lt;br /&gt;
&lt;br /&gt;
I just recently added support in XChart for making plots with error bars, which is what this post is about. The following demo, shows how to add error bars to an XChart chart. BTW, if you have any feature requests for XChart, please feel free to open a new issue on Github &lt;a href=&quot;https://github.com/timmolter/XChart/issues&quot;&gt;here&lt;/a&gt;. For more XChart exmaples go &lt;a href=&quot;http://xeiam.com/xchart_examplecode.jsp&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;h1&gt;XChart - Open Source Charting API&lt;/h1&gt;To use XChart, you first need to get the XChart jar, which is available &lt;a href=&quot;http://xeiam.com/xchart.jsp&quot;&gt;here&lt;/a&gt;. If you use Maven, just add the following to your dependencies in pom.xml:&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;com.xeiam&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;xchart&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;1.1.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
The XChart artifacts are currently hosted on the Xeiam Nexus repository here:&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&amp;lt;repositories&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;repository&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;xchange-release&amp;lt;/id&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;releases/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;http://nexus.xeiam.com/content/repositories/releases&amp;lt;/url&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/repository&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;repository&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;xchange-snapshot&amp;lt;/id&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;snapshots/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;http://nexus.xeiam.com/content/repositories/snapshots/&amp;lt;/url&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;h1&gt;Error Bars Example Code&lt;/h1&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;package com.xeiam.xchart.example;

import java.util.ArrayList;
import java.util.Collection;

import com.xeiam.xchart.Chart;
import com.xeiam.xchart.series.Series;
import com.xeiam.xchart.series.SeriesColor;
import com.xeiam.xchart.series.SeriesLineStyle;
import com.xeiam.xchart.series.SeriesMarker;
import com.xeiam.xchart.swing.SwingWrapper;

/**
 * Create a Chart with error bars
 * 
 * @author timmolter
 */
public class Example8 {

  public static void main(String[] args) {

    // generates data
    int size = 10;
    Collection&lt;number&gt; xData1 = new ArrayList&lt;number&gt;();
    Collection&lt;number&gt; yData1 = new ArrayList&lt;number&gt;();
    Collection&lt;number&gt; errorBars = new ArrayList&lt;number&gt;();
    for (int i = 0; i &lt;= size; i++) {
      xData1.add(i);
      yData1.add(10 * Math.exp(-i));
      errorBars.add(Math.random() + .3);
    }

    // Create Chart
    Chart chart = new Chart(600, 400);

    // Customize Chart
    chart.setChartTitleVisible(false);
    chart.setChartLegendVisible(false);
    chart.setAxisTitlesVisible(false);

    // Series 1
    Series series1 = chart.addSeries(&quot;10^(-x)&quot;, xData1, yData1, errorBars);
    series1.setLineColor(SeriesColor.PURPLE);
    series1.setLineStyle(SeriesLineStyle.DASH_DASH);
    series1.setMarkerColor(SeriesColor.GREEN);
    series1.setMarker(SeriesMarker.SQUARE);

    new SwingWrapper(chart).displayChart();
  }

}
&lt;/pre&gt;
&lt;h1&gt;Resulting Plot&lt;/h1&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisZTLiRWRCI6K7fwOFQcwe4-fPQ496JPIqEdFRfs3fIaAxVeylIYPN2N1bIlav0GISGVNnrR2IiWt-eR3vF9NAXKGposZho7zRae7CVyhm6lpufUHAGRn2_BQvOy5d0PpouwIkhfn440E/s1600/xchart_example8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisZTLiRWRCI6K7fwOFQcwe4-fPQ496JPIqEdFRfs3fIaAxVeylIYPN2N1bIlav0GISGVNnrR2IiWt-eR3vF9NAXKGposZho7zRae7CVyhm6lpufUHAGRn2_BQvOy5d0PpouwIkhfn440E/s400/xchart_example8.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Piece of Cake!!!

See also: &lt;a href=&quot;http://obscuredclarity.blogspot.com/2011/08/java-web-apps-integrating-charts-into.html&quot;&gt;Java Web Apps - Integrating Charts into a Servlet&lt;/a&gt;

&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/5049239968962524246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/5049239968962524246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/5049239968962524246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/5049239968962524246'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/java-xchart-library-now-supports-error.html' title='Java XChart Library Now Supports Error Bars'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMkz9gRLSE9UOORnXQe2sJYwtRfqGT0zltAfEHqbhGOAjmbU8cRxfbPuqvhpSYLJ9NVuzE0wz43K1Lyo5rrBmVAxyQ49ilvgfH7A3JzBleYBdNQcxdrcKVTDfAEOgDQ32AcSZaC2koD8A/s72-c/xchart_example8.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-1322497841846822513</id><published>2012-08-21T14:15:00.001+02:00</published><updated>2012-08-21T14:15:06.792+02:00</updated><title type='text'>Jeff Hawkins on Brain Science</title><content type='html'>&lt;object width=&quot;526&quot; height=&quot;374&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;param name=&quot;bgColor&quot; value=&quot;#ffffff&quot;&gt;&lt;/param&gt;&lt;param name=&quot;flashvars&quot; value=&quot;vu=http://video.ted.com/talk/stream/2003/Blank/JeffHawkins_2003-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JeffHawkins-2003.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=125&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jeff_hawkins_on_how_brain_science_will_change_computing;year=2003;theme=inspired_by_nature;theme=tales_of_invention;theme=how_the_mind_works;theme=what_s_next_in_tech;theme=technology_history_and_destiny;event=TED2003;tag=AI;tag=brain;tag=cognitive+science;tag=computers;tag=intelligence;tag=memory;tag=science;tag=technology;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot; /&gt;&lt;embed src=&quot;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&quot; pluginspace=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; bgColor=&quot;#ffffff&quot; width=&quot;526&quot; height=&quot;374&quot; allowFullScreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; flashvars=&quot;vu=http://video.ted.com/talk/stream/2003/Blank/JeffHawkins_2003-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JeffHawkins-2003.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=125&amp;lang=en&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jeff_hawkins_on_how_brain_science_will_change_computing;year=2003;theme=inspired_by_nature;theme=tales_of_invention;theme=how_the_mind_works;theme=what_s_next_in_tech;theme=technology_history_and_destiny;event=TED2003;tag=AI;tag=brain;tag=cognitive+science;tag=computers;tag=intelligence;tag=memory;tag=science;tag=technology;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/1322497841846822513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/1322497841846822513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1322497841846822513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1322497841846822513'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/jeff-hawkins-on-brain-science.html' title='Jeff Hawkins on Brain Science'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3101002613673626255</id><published>2012-08-09T13:17:00.003+02:00</published><updated>2012-08-09T13:17:13.301+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>To Infinity and Beyond</title><content type='html'>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/iBsywDWmwyA&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3101002613673626255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3101002613673626255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3101002613673626255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3101002613673626255'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/to-infinity-and-beyond.html' title='To Infinity and Beyond'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/iBsywDWmwyA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-1708282264987553745</id><published>2012-08-08T10:31:00.002+02:00</published><updated>2012-08-08T10:31:59.055+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Richard Feynman - The Pleasure Of Finding Things Out</title><content type='html'>&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/Bgaw9qe7DEE&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/1708282264987553745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/1708282264987553745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1708282264987553745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/1708282264987553745'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/richard-feynman-pleasure-of-finding.html' title='Richard Feynman - The Pleasure Of Finding Things Out'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Bgaw9qe7DEE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3390505929148216274</id><published>2012-08-06T12:11:00.001+02:00</published><updated>2012-08-27T08:32:40.192+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Curiosity Rover Lands Successfully on Mars!</title><content type='html'>&lt;!-- Start of guardian embedded video --&gt;&lt;br /&gt;
&lt;!-- To prevent the video from auto playing set &#39;a=true&#39; in the following line of code--&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://gu-embedded-video.appspot.com/?a=false&amp;i=brightcove/poster/2012/8/3/120803challengesofmars_6500096.jpg&amp;f=brightcove/2012/8/3/120803challengesofmars-16x9.mp4&amp;u=/science/video/2012/aug/03/curiosity-terror-nasa-mars-video&amp;tn=Curiosity\&#39;s seven minutes of terror on Nasa mission to Mars - video:Video:1782926&quot; style=&quot;border:0; overflow:hidden;&quot; scrolling=&quot;no&quot; width=&quot;460px&quot; height=&quot;397px&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;!-- End of guardian embedded video --&gt;&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/4ddtoZNidIM&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/gwinFP8_qIM&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/gZX5GRPnd4U&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/fJgeoHBQpFQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3390505929148216274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3390505929148216274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3390505929148216274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3390505929148216274'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/08/curiosity-rover-lands-successfully-on.html' title='Curiosity Rover Lands Successfully on Mars!'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/4ddtoZNidIM/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3922524866399888808</id><published>2012-06-10T22:00:00.001+02:00</published><updated>2012-08-12T15:45:00.530+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amphibians"/><category scheme="http://www.blogger.com/atom/ns#" term="critters"/><title type='text'>Bergmolch</title><content type='html'>&lt;h1&gt;Bergmolch &lt;/h1&gt;Oberstdorf, Germany (June 2012)&lt;br /&gt;
&lt;a href=&quot;http://de.wikipedia.org/wiki/Bergmolch&quot;&gt;Wikipedia Aricle&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioMYbvlv1pDJgcHSCs6BFw8uLdP7P5yychq_mBlHMwF7jz2aK_U3Q7J3r8jOx1FTpoM6ds17V-hIa8QO3xDEXqOycKB-Lsa-JP6mXhUq7nRGh2ifCWoMeJtGxgulsYLU88JBAfJwxHb3E/s1600/IMG_8566.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioMYbvlv1pDJgcHSCs6BFw8uLdP7P5yychq_mBlHMwF7jz2aK_U3Q7J3r8jOx1FTpoM6ds17V-hIa8QO3xDEXqOycKB-Lsa-JP6mXhUq7nRGh2ifCWoMeJtGxgulsYLU88JBAfJwxHb3E/s400/IMG_8566.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-vs-SJK1ZSqBdfdLy0k_om-CWG-r69CuNekwWmoWob3qgE66iqvO-66RHaJ3E2uhtuUq5Gi4a9olF1v4I6xb7vw7umpJ34q2mlYI9-vCMp8HpQHvjCYCWpL7FM2nz9w4te7Dz_2SWlWY/s1600/IMG_8550.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-vs-SJK1ZSqBdfdLy0k_om-CWG-r69CuNekwWmoWob3qgE66iqvO-66RHaJ3E2uhtuUq5Gi4a9olF1v4I6xb7vw7umpJ34q2mlYI9-vCMp8HpQHvjCYCWpL7FM2nz9w4te7Dz_2SWlWY/s400/IMG_8550.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglVH30tP29YWdLP6WKr23fCrY6-Vrqtv7fNnF3D0c6ecDNK1vF84Kbuqv64fpUtJMZLJnu8PP6ywTWlvfDYGEWrsHjLgH-ncmRcT-SZ3MUXpr6ZWfuhtOR-pKaEt7VUv686fdK5Tx8E5U/s1600/IMG_8598.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglVH30tP29YWdLP6WKr23fCrY6-Vrqtv7fNnF3D0c6ecDNK1vF84Kbuqv64fpUtJMZLJnu8PP6ywTWlvfDYGEWrsHjLgH-ncmRcT-SZ3MUXpr6ZWfuhtOR-pKaEt7VUv686fdK5Tx8E5U/s400/IMG_8598.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitUcToRlrMVRwwObwPYc9xTc9ZbnCX2NwxnHclHut8YA58NClJE9F-dl2MtIoRb19AVb6DGBdaQImzPRqgG05pWY1RcsZeoJgo58ZgnQlzn20MetZcpRkyOuNXfNkth5KE9qWPZmHmreM/s1600/IMG_8584.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitUcToRlrMVRwwObwPYc9xTc9ZbnCX2NwxnHclHut8YA58NClJE9F-dl2MtIoRb19AVb6DGBdaQImzPRqgG05pWY1RcsZeoJgo58ZgnQlzn20MetZcpRkyOuNXfNkth5KE9qWPZmHmreM/s400/IMG_8584.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjGCj8kF3EOKGhMaQmaiamUdma3ch1uZnwwqzWPZ4c4Y93SOHgRBMGtFcC5ZY8QqB3h4XwBuMaU7u3oyNjQSRDoVyMFyk-eMlf0Z2McWPAfoX0JesYAxVbxvjPy-KeqHoGrsCMHpSSLjA/s1600/IMG_9260.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjGCj8kF3EOKGhMaQmaiamUdma3ch1uZnwwqzWPZ4c4Y93SOHgRBMGtFcC5ZY8QqB3h4XwBuMaU7u3oyNjQSRDoVyMFyk-eMlf0Z2McWPAfoX0JesYAxVbxvjPy-KeqHoGrsCMHpSSLjA/s400/IMG_9260.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3922524866399888808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3922524866399888808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3922524866399888808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3922524866399888808'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/06/bergmolch.html' title='Bergmolch'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioMYbvlv1pDJgcHSCs6BFw8uLdP7P5yychq_mBlHMwF7jz2aK_U3Q7J3r8jOx1FTpoM6ds17V-hIa8QO3xDEXqOycKB-Lsa-JP6mXhUq7nRGh2ifCWoMeJtGxgulsYLU88JBAfJwxHb3E/s72-c/IMG_8566.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-3873540686854043510</id><published>2012-06-10T21:08:00.000+02:00</published><updated>2013-07-11T12:00:26.292+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="beetles"/><category scheme="http://www.blogger.com/atom/ns#" term="critters"/><category scheme="http://www.blogger.com/atom/ns#" term="foto"/><title type='text'>Schwarzer Rüsselkäfer - Otiorhynchus coecus</title><content type='html'>&lt;h1&gt;Schwarzer Rüsselkäfer - Otiorhynchus coecus&lt;/h1&gt;Oberstdorf, Germany (June 2012)&lt;br /&gt;
&lt;a href=&quot;http://de.wikipedia.org/wiki/Schwarzer_R%C3%BCsselk%C3%A4fer&quot;&gt;Wikipedia Aricle&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8I-bA12biya3lvK10hEZwm27VklryrAyPNYDpOSdx-YpebbAh1l4pZ1v7ULE1k-qrwp1smiPboA9TeM3l5ktnMdRTCJTi-nKQ1NRTvUaXGH1iv2a-Dhsagp3xmFH5aq1Gx6LIKR8-fc/s1600/IMG_8776.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8I-bA12biya3lvK10hEZwm27VklryrAyPNYDpOSdx-YpebbAh1l4pZ1v7ULE1k-qrwp1smiPboA9TeM3l5ktnMdRTCJTi-nKQ1NRTvUaXGH1iv2a-Dhsagp3xmFH5aq1Gx6LIKR8-fc/s400/IMG_8776.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwU1qjz9YQEjp_GQrVCbfwq2hMb0bb8rcdwEY9PF5vaUaz01csx7wquGx7URWolqcficr4FpM4ZnSDtvKbWooy4ZAGHnkVVKIw87F5oYQJtu5bebo6GsSOB1cTYzdnRIiWVjKnR3mRATY/s1600/IMG_8722.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwU1qjz9YQEjp_GQrVCbfwq2hMb0bb8rcdwEY9PF5vaUaz01csx7wquGx7URWolqcficr4FpM4ZnSDtvKbWooy4ZAGHnkVVKIw87F5oYQJtu5bebo6GsSOB1cTYzdnRIiWVjKnR3mRATY/s400/IMG_8722.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZE5eAXGDiZKmMmbRYZssxRaXDW3a3FDK0qU5-efC4YEh-r1Ku5CaT5cUGTBRs98Cm9sECGZBRsBNobASt0jSbGVdXFsRQYHpvF5gSnOKYaWRa672bMLrc506bNY_hdZ71R-FstXGcMhQ/s1600/IMG_8781.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZE5eAXGDiZKmMmbRYZssxRaXDW3a3FDK0qU5-efC4YEh-r1Ku5CaT5cUGTBRs98Cm9sECGZBRsBNobASt0jSbGVdXFsRQYHpvF5gSnOKYaWRa672bMLrc506bNY_hdZ71R-FstXGcMhQ/s400/IMG_8781.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKvGH6A9SZ5phJ30uvKlKAZ4fuRwqUOj164HjVCMZZmn3zLergKC61n3a_08iaP-mGfyjRi5KjzfOWgnOQp2pEF1q_PU8n2br3pXdBKOjvmKUcTcIwub0zTtSX48c3_c9Wa6RqmkGU9r4/s1600/IMG_8693.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;278&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKvGH6A9SZ5phJ30uvKlKAZ4fuRwqUOj164HjVCMZZmn3zLergKC61n3a_08iaP-mGfyjRi5KjzfOWgnOQp2pEF1q_PU8n2br3pXdBKOjvmKUcTcIwub0zTtSX48c3_c9Wa6RqmkGU9r4/s400/IMG_8693.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizebO6UIUOE8cbz1aTc3vrBImShQ1D8dxEL_8zl_KNb9MumB2vA8wZZAV8vI6IACMefBgVLOvp_flBrybgch-REcpQ0O4u8TpKeQI9iV3YLKc2XLWPVsdrkZfs6y6QVdQR78l7EhCit_E/s1600/IMG_8650.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizebO6UIUOE8cbz1aTc3vrBImShQ1D8dxEL_8zl_KNb9MumB2vA8wZZAV8vI6IACMefBgVLOvp_flBrybgch-REcpQ0O4u8TpKeQI9iV3YLKc2XLWPVsdrkZfs6y6QVdQR78l7EhCit_E/s400/IMG_8650.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDdHczcLt5dOJsNU0CEoSXLnxTxTjoFmB0tDYp4sYhqaLspDyA88VKBplibRX_nGAfjylqpNuhAamrvG6exqW05JNfmU1IKWsTnrn4ewtERJ-G9w1zpbHwV3PvBzBLPW6A3AmT-XatPsU/s1600/IMG_8659.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;318&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDdHczcLt5dOJsNU0CEoSXLnxTxTjoFmB0tDYp4sYhqaLspDyA88VKBplibRX_nGAfjylqpNuhAamrvG6exqW05JNfmU1IKWsTnrn4ewtERJ-G9w1zpbHwV3PvBzBLPW6A3AmT-XatPsU/s400/IMG_8659.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/3873540686854043510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/3873540686854043510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3873540686854043510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/3873540686854043510'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/06/schwarzer-russelkafer-otiorhynchus.html' title='Schwarzer Rüsselkäfer - Otiorhynchus coecus'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG8I-bA12biya3lvK10hEZwm27VklryrAyPNYDpOSdx-YpebbAh1l4pZ1v7ULE1k-qrwp1smiPboA9TeM3l5ktnMdRTCJTi-nKQ1NRTvUaXGH1iv2a-Dhsagp3xmFH5aq1Gx6LIKR8-fc/s72-c/IMG_8776.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4650152229438238529.post-8309089107972886081</id><published>2012-06-10T19:53:00.002+02:00</published><updated>2012-06-10T19:53:56.613+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Ultra Slow Motion Video of Saw Blade Cutting Steel</title><content type='html'>&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/mRuSYQ5Npek&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://obscuredclarity.blogspot.com/feeds/8309089107972886081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4650152229438238529/8309089107972886081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8309089107972886081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4650152229438238529/posts/default/8309089107972886081'/><link rel='alternate' type='text/html' href='http://obscuredclarity.blogspot.com/2012/06/ultra-slow-motion-video-of-saw-blade.html' title='Ultra Slow Motion Video of Saw Blade Cutting Steel'/><author><name>Tim Molter</name><uri>http://www.blogger.com/profile/09117791052747688044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxc67NlbPqI0bOBeBnyKThZYszpWDvyoC_i-_XXrdyDEcM2RUXbmGYyr03cpKs2o0_-iQcoy6QZ686IWGGlzcQzj6ZCxL1lMLb-two3p0A9wyYr6tX8eBOdOVV_ScDEw/s220/Tim3.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/mRuSYQ5Npek/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>