<?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-4007926344299611504</id><updated>2019-12-05T11:47:55.882+05:30</updated><category term="Simulation"/><category term="Announcements"/><category term="Software"/><category term="Release notes"/><category term="CB Predictor"/><category term="Presentation"/><category term="Random number generation"/><category term="Example models"/><category term="INFORMS"/><category term="OR software"/><category term="Tips and tricks"/><category term="Conference"/><category term="Distribution"/><category term="Distribution fitting"/><category term="OptQuest"/><category term="Seed"/><category term="Solver development"/><category term="Spark"/><category term="Win 10"/><category term="ARIMA"/><category term="Analytics"/><category term="DisplayLink"/><category term="Entrepreneurial"/><category term="Event modeling"/><category term="Goodness-of-fit statistics"/><category term="Hadoop"/><category term="ISF"/><category term="Multi-threading"/><category term="Sports"/><category term="Technology"/><category term="Troubleshooting"/><category term="programming language"/><category term="ssh tunnel"/><category term=".NET"/><category term="64-bit"/><category term="API"/><category term="Accuracy"/><category term="Android"/><category term="Apache Crunch"/><category term="Big Data"/><category term="Blog"/><category term="C#"/><category term="CB Charts"/><category term="Classic forecasting methods"/><category term="Cloud computing"/><category term="Confidence Interval"/><category term="Consultancy"/><category term="Correlation"/><category term="Cricket"/><category term="Crystal Ball UI"/><category term="Excel 2010"/><category term="Excel function"/><category term="GSON"/><category term="HTCondor"/><category term="Health-care"/><category term="Installatron"/><category term="IntelliJ"/><category term="JSON"/><category term="Java"/><category term="MVEL"/><category term="NLP"/><category term="NOSQL"/><category term="Numerical issues"/><category term="OR"/><category term="Office 2010"/><category term="Orientdb"/><category term="Percentile"/><category term="Precision"/><category term="Prediction Interval"/><category term="Scala"/><category term="Soccer"/><category term="Softaculous"/><category term="Text mining"/><category term="avro"/><category term="backup"/><category term="editor"/><category term="google docs"/><category term="graphdb"/><category term="installation"/><category term="multi-core execution"/><category term="natural language processing"/><category term="perl"/><category term="programming"/><category term="restore"/><category term="web form"/><category term="web hosting"/><title type='text'>Technology, Software, Predictive Analytics and Big Data</title><subtitle type='html'>My notes on technology, software and developing software for Operations Research, Predictive Analytics and Big Data. Note: The views expressed on this blog are mine and do not necessarily reflect the views of my employer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-2977725766917531263</id><published>2018-09-02T18:49:00.001+05:30</published><updated>2019-01-05T17:19:06.742+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="avro"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="Spark"/><title type='text'>Reading resource files in Spark using Scala</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Often while coding up unit tests in Scala, I need to read from a file which is available in the resources folder. There are a few variations to how this can be done, specifically if I am using the contents of the file as DataFrame in Spark. Here are some examples what I want to keep for myself as notes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;All these examples work with JDK 1.8u144, Scala 2.11.8 and Spark 2.3.1. Test them out if your version of software differ substantially from these versions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the contents of the text file as Iterator: &lt;div style=&quot;text-align: justify;&quot;&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// In the path below, &quot;/&quot; refers to the root of the resources folder&lt;/span&gt;&lt;br /&gt;val fileStream &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; scala.io.Source&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;fromInputStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResourceAsStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/file.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;))&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;iterator:&lt;/span&gt; Iterator&lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;String&lt;span style=&quot;color: #333333;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; fileStream&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getLines&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// Print the lines &lt;/span&gt;&lt;br /&gt;fileStream&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getLines&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;println&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// To get the complete contents of the file in a string&lt;/span&gt;&lt;br /&gt;val contents &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; fileStream&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getLines&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;mkString&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get a text file as Spark RDD[String], individual lines as rows:&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// In the path below, &quot;/&quot; refers to the root of the resources folder&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;session:&lt;/span&gt; SparkSession &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; SparkSession&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;builder&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;conf&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getOrCreate&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;&lt;br /&gt;val fileStream &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResourceAsStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/file.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;val input &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; ss&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;sparkContext&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;makeRDD&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;scala&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;io&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;Source&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;fromInputStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;fileStream&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getLines&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;toList&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// Another shorter alternative:&lt;/span&gt;&lt;br /&gt;val input &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; session&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;sparkContext&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;textFile&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResource&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/file.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getPath&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get a text file as a [n x 1] Spark DataFrame with individual lines as rows: &lt;div style=&quot;text-align: justify;&quot;&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// In the path below, &quot;/&quot; refers to the root of the resources folder&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;session:&lt;/span&gt; SparkSession &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; SparkSession&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;builder&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;conf&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getOrCreate&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;&lt;br /&gt;val input: DataFrame = session&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;sparkContext&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;textFile&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResource&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/file.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getPath&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;toDF&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Read a &lt;a href=&quot;http://jsonlines.org/&quot; target=&quot;_blank&quot;&gt;line-delimited JSON file&lt;/a&gt; into a Spark DataFrame: &lt;div style=&quot;text-align: justify;&quot;&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// In the path below, &quot;/&quot; refers to the root of the resources folder&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;session:&lt;/span&gt; SparkSession &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; SparkSession&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;builder&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;conf&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getOrCreate&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// The below line works when the file is in the resource folder and the program is run&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// through IDE or through command line. However, doesn&#39;t work when packaged in a jar.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// Results in org.apache.spark.sql.AnalysisException: Path does not exist&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;input:&lt;/span&gt; DataFrame &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; session&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResource&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/json/file&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getPath&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// The following works when the resource file is packaged in a jar&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;session.implicits._&lt;/span&gt;&lt;br /&gt;val ds &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; session&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;createDataset&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;String&lt;span style=&quot;color: #333333;&quot;&gt;](&lt;/span&gt;Source&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;fromInputStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;getClass&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResourceAsStream&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/json/file&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getLines&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;toSeq&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;val input &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; session&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;ds&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The final one is a niche use case where we have a bunch of events in an &lt;a href=&quot;http://avro.apache.org/&quot; target=&quot;_blank&quot;&gt;avro file&lt;/a&gt;, and would like to read the events. In this case, we use an iterator style, i.e. we stream the file lazily. For more notes on this, &lt;a href=&quot;https://alvinalexander.com/scala/examples-shows-differences-between-strict-lazy-evaluation-in-scala&quot; target=&quot;_blank&quot;&gt;see here&lt;/a&gt;.&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// In the path below, &quot;/&quot; refers to the root of the resources folder&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;resourceURI:&lt;/span&gt; URI &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;getClass&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getResource&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;/path/to/events.avro&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;toURI&lt;/span&gt;&lt;br /&gt;val &lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;file:&lt;/span&gt; File &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; Paths&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;resourceURI&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;toFile&lt;/span&gt;&lt;br /&gt;val datumReader &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; SpecificDatumReader&lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;Event&lt;span style=&quot;color: #333333;&quot;&gt;]()&lt;/span&gt;&lt;br /&gt;val dataFileReader &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; DataFileReader&lt;span style=&quot;color: #333333;&quot;&gt;[&lt;/span&gt;Event&lt;span style=&quot;color: #333333;&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; File&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;file&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;getAbsolutePath&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;),&lt;/span&gt; datumReader&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// DataFileReader behaves like an iterator, i.e., a stream of events.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// E.g., if we wanted filter a few events to a separate collection:&lt;/span&gt;&lt;br /&gt;def &lt;span style=&quot;color: #0066bb; font-weight: bold;&quot;&gt;eventFilter&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #997700; font-weight: bold;&quot;&gt;event:&lt;/span&gt; Event&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;???&lt;/span&gt;&lt;br /&gt;val specialSet &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; dataFileReader&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;withFilter&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(&lt;/span&gt;eventFilter&lt;span style=&quot;color: #333333;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;foldLeft&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(...)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Update (Sep 16, 2018): Added way to read JSON file in Spark through read.json&lt;br /&gt;Update (Jan 05, 2019): Updated title </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/2977725766917531263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2018/09/reading-resource-files-using-scala.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2977725766917531263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2977725766917531263'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2018/09/reading-resource-files-using-scala.html' title='Reading resource files in Spark using Scala'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-6249406332427046271</id><published>2017-12-06T20:26:00.002+05:30</published><updated>2017-12-06T20:28:33.447+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="DisplayLink"/><category scheme="http://www.blogger.com/atom/ns#" term="Win 10"/><title type='text'>DisplayLink again: sun-dried adapter, anyone?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I have &lt;a href=&quot;http://predsdev.blogspot.in/2016/01/my-displaylink-troubleshooting-guide.html&quot; target=&quot;_blank&quot;&gt;written about DisplayLink technology before&lt;/a&gt; (the USB3.0 adapter I use for projecting my laptop to dual screens), and my tricks on how I get the device working when it doesn&#39;t want to work. As it turns out, I was not even on the right track in the other post, and it is pretty hilarious how the discovery went.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Some days back, the Targus DisplayLink adapter (model ACP70US) completely stopped working: however many times I power-cycled, the monitors were not getting detected (however the mouse and keyboard was being detected every time, obviously). Initially I thought that it was because of an Win 10 update that recently got pushed. I tried switching driver versions, but that didn&#39;t help either. Desperate, I wrote in the DisplayLink support forum and the helpful admin took me through a few debugging steps.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;It turns out that, my docking station has an issue in the USB 3.0 hub. Specifically, the temperature tolerance of the USB3.0 hub used in the docking station  is at issue here. When using this docking station from cold condition  (e.g., when it has not been used for a few hours etc), or when the  ambient temperature is cold, it has (or, is having) trouble in getting  started since the temperature is not within tolerance. It seems, this issue was corrected by the manufacturer (Targus) in subsequent revision or batch. Now, this product was originally purchased in US, however I am now located in Bangalore, India.  For what its worth, it was actually raining here for last couple of days  and definitely a few degrees colder (almost 3-4 degC colder). &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Indeed, it was sunny today here in Bangalore, and I baked the device in sun for sometime. Lo and behold - it started working!! &lt;br /&gt;&lt;br /&gt;This has to be the coolest trick I have ever encountered with computer peripherals. Oh well!!&amp;nbsp;   &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/6249406332427046271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2017/12/displaylink-again-baking-device.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6249406332427046271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6249406332427046271'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2017/12/displaylink-again-baking-device.html' title='DisplayLink again: sun-dried adapter, anyone?'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-1158092902073986082</id><published>2017-03-05T23:48:00.001+05:30</published><updated>2019-12-05T11:47:55.813+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTCondor"/><category scheme="http://www.blogger.com/atom/ns#" term="Spark"/><title type='text'>Using HTCondor for grid computing</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;For a project I am experimenting with, I wanted to run multiple instances of a program parallely, each instance dealing with different input data. An example to demonstrate the use case: Let’s say I have a folder full of movies in wmv format, all of which I want to convert to mp4 format, using the ffmpeg program. I would like to run as many as these conversion jobs parallely, possibly on multiple computers.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Given my current exposure to big data solutions like Hadoop/Spark, I initially thought that, for e.g., we can use yarn scheduler and run these jobs on a spark cluster. But my research indicated that these use cases are not really served by yarn/spark. These tasks are not cloud computing tasks, but they are grid computing tasks.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now, given my graduate days in University of Wisconsin, Madison, for me, grid computing means condor (currently called &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/&quot;&gt;HTCondor&lt;/a&gt;). I have used condor for my Ph.D. research, and it was awesome. So, I took a look, and gave it a try. Since I never had to set up a cluster before, here are some notes for setting up a cluster aka grid for these jobs. &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Note that, this is not really a Getting Started guide; this doesn’t show, for example, sample jobs or sample submission files. For that purpose, &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/manual/v8.6/Contents.html&quot;&gt;follow the manual&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Spark vs HTCondor&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Let&#39;s get started with a small discussion on when it is appropriate to use a system like Spark vs a system like HTCondor. As mentioned before, Spark is an engine for &lt;i&gt;cloud computing&lt;/i&gt; and HTCondor is a system for &lt;i&gt;grid computing&lt;/i&gt;. In my mind, the difference comes from the following:&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;HTCondor would let me run multiple instances of the same program on (single or) multiple nodes, each running on different inputs. Spark would let me parallelize and run one computation/algorithm on multiple nodes, from one input.&lt;/li&gt;&lt;li&gt;HTCondor nodes would be appropriate when I need to run the same program on many (somewhat small) input files, possibly being accessed from a shared drive. Spark would be appropriate when the input is a massive dataset, and we can use the map-reduce paradigm for computation.&lt;/li&gt;&lt;/ul&gt;Having that out of our way, let&#39;s proceed with HTCondor.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Machines Setup&lt;/h2&gt;Currently using a cluster of 3 VM, each running CentOS 6. Using v8.6.0 of HTCondor, and the &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/manual/v8.6/Contents.html&quot;&gt;manual is available here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt; HTCondor Setup &lt;/h2&gt;Here are the commands that would install HTCondor on each of these CentOS 6 systems. To be run as root user. The original instruction &lt;a href=&quot;https://research.cs.wisc.edu/htcondor/yum/&quot;&gt;can be found here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;cd /etc/yum.repos.d/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;wget https://research.cs.wisc.edu/htcondor/yum/repo.d/htcondor-stable-rhel6.repo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;wget http://research.cs.wisc.edu/htcondor/yum/RPM-GPG-KEY-HTCondor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;rpm --import RPM-GPG-KEY-HTCondor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;yum install condor-all&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Notes: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;CentOS &amp;lt;version&amp;gt; is equivalent to RHEL &amp;lt;version&amp;gt; &lt;/li&gt;&lt;li&gt;You might have to clear yum cache by using ‘yum clear all’ &lt;/li&gt;&lt;li&gt;Once the installation is successful, the binaries goes into /usr/bin (/usr becomes the “installation folder”), and the config files go into /etc/condor &lt;/li&gt;&lt;li&gt;As part of the installation process, user &amp;amp; group ‘condor’ is created.&lt;/li&gt;&lt;/ul&gt;Here&amp;nbsp; are the corresponding commands that would install HTCondor on debian systems (I ended up setting up on my Virtualbox VM for experimenting while on the go, and I run a debian distro there: &lt;a href=&quot;https://www.bunsenlabs.org/&quot;&gt;Bunsen Labs Linux&lt;/a&gt;). Again, to be run as root user. The original instruction &lt;a href=&quot;https://research.cs.wisc.edu/htcondor/debian/&quot;&gt;can be found here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-color: rgb(0, 0, 0); border-style: solid; border-width: 1pt; padding: 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;pre&gt;echo &quot;deb http://research.cs.wisc.edu/htcondor/debian/stable/ jessie contrib&quot;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                                                     &amp;gt;&amp;gt; /etc/apt/sources.list&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;wget -qO - http://research.cs.wisc.edu/htcondor/debian/HTCondor-Release.gpg.key&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                                                     | sudo apt-key add -&lt;/pre&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;pre&gt;apt-get update&lt;br /&gt;apt-get install -t jessie condor&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;HTCondor Configuration &lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Configurations are available at condor_config in /etc/condor &lt;/li&gt;&lt;li&gt;One of the most important gotchas of configuring HTCondor is if the reverse DNS lookup works properly on your hosts, meaning an ‘nslookup &amp;lt;your ip address&amp;gt;’ returns your full host name. If this works, lots of trouble would be saved. Otherwise you have to add additional configs as required. &lt;/li&gt;&lt;li&gt;Changed the following configurations (first two because of the above reason): &lt;/li&gt;&lt;ul&gt;&lt;li&gt;For all boxes in the grid, including CM (Central Manager): &lt;/li&gt;&lt;ul&gt;&lt;li&gt;condor_config: ALLOW_WRITE = * &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;For all boxes in the grid, including CM (Central Manager), if you want to use it for computations: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;condor_config.local: TRUST_UID_DOMAIN=true &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;For boxes other than the CM, point to the correct CM IP address, or CM host name if reverse DNS is working.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;condor_config: CONDOR_HOST = x.x.x.x&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;For Debian executor boxes, blank out the BASE_CGROUP variable. More &lt;a href=&quot;https://www-auth.cs.wisc.edu/lists/htcondor-users/2017-April/msg00058.shtml&quot;&gt;notes here&lt;/a&gt;.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;condor_config.local: BASE_CGROUP =&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;If you do not want the CM box to run jobs, do not run the STARTD daemon. More &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/tutorials/scotland-admin-tutorial-2003-10-23/&quot; target=&quot;_blank&quot;&gt;information here&lt;/a&gt;.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;condor_config.local:&amp;nbsp; DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt; Running HTCondor on a Single Node&lt;/h2&gt;We will start with running HTCondor on a single node, which will eventually become our central manager. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start the condor daemons: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;On CentOS 6: /sbin/service condor start&lt;/li&gt;&lt;li&gt;On Debian jessi: /etc/init.d/service condor start OR /etc/init.d/condor start&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Check if the correct processes are running. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;[root@... condor]# ps -elf | egrep condor_&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;5 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 11653 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_master -pidfile /var/run/condor/condor_master.pid&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S root &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4241&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - &amp;nbsp;6379 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_procd -A /var/run/condor/procd_pipe -L /var/log/condor/ProcLog -R 1000000 -S 60 -C 498&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4242&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 11513 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_shared_port -f&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4243&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 16380 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_collector -f&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4244&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 11639 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_negotiator -f&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4245&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 16646 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_schedd -f&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4 S condor &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4246&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4200 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 11760 poll_s 14:53 ? &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 condor_startd -f&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 S root &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4297&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;4098 &amp;nbsp;0 &amp;nbsp;80 &amp;nbsp;&amp;nbsp;0 - 25254 pipe_w 14:54 pts/0&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;00:00:00 egrep condor_&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Check if condor_status returns correctly, with an output similar to this.&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;[root@... condor]# condor_status&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Name &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OpSys &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Arch &amp;nbsp;&amp;nbsp;State &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Activity LoadAv Mem &amp;nbsp;&amp;nbsp;ActvtyTim&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;slot1@... LINUX &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64 Unclaimed Idle &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0.080 7975 &amp;nbsp;0+00:00:0&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;slot2@... LINUX &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64 Unclaimed Idle &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0.000 7975 &amp;nbsp;0+00:00:2&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Machines Owner Claimed Unclaimed Matched Preempting &amp;nbsp;Drain&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64/LINUX &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Total &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Notes: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;If the condor_status does not return anything, it is probably because the DNS reverse lookup is not working in the system. Please follow the &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/manual/v7.6/7_7Troubleshooting.html#SECTION00875000000000000000&quot;&gt;details in this thread&lt;/a&gt;, and start with setting the ALLOW_WRITE variable in the condor_config file to *. &lt;/li&gt;&lt;li&gt;My CentOS6 VM is dual core with 16GB of RAM, so HTCondor automatically breaks this up into 2 slots, each having 1 core/8GB RAM.   &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I directly experimented with a java universe job, but a vanilla universe job can be tried as well. Once the daemons are running and condor_status returns correctly, get back to the user login and submit the job, using ‘condor_submit &amp;lt;job props file&amp;gt;’. If it takes a bit of time to run the job, condor_status would show it.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;[root@akka01-samik condor]# condor_status&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Name &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OpSys &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Arch &amp;nbsp;&amp;nbsp;State &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Activity LoadAv Mem &amp;nbsp;&amp;nbsp;ActvtyTim&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;slot1@... LINUX &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64 Claimed &amp;nbsp;&amp;nbsp;Busy &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0.000 7975 &amp;nbsp;0+00:00:0&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;slot2@... LINUX &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64 Unclaimed Idle &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0.000 7975 &amp;nbsp;0+00:00:2&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Machines Owner Claimed Unclaimed Matched Preempting &amp;nbsp;Drain&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;X86_64/LINUX &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Total &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2 &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;The command condor_q would show it too.&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none; width: 468pt;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;*&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;[root@... condor]# condor_q&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;-- Schedd: ... : &amp;lt;x.x.x.x:42646&amp;gt; @ 02/24/17 14:23:43&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;OWNER &amp;nbsp;&amp;nbsp;BATCH_NAME&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;SUBMITTED &amp;nbsp;&amp;nbsp;DONE &amp;nbsp;&amp;nbsp;RUN&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;IDLE &amp;nbsp;TOTAL JOB_IDS&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;samik.r CMD: java&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;2/24 07:38 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;_ &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;_ &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 2.0&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 9pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;1 jobs; 0 completed, 0 removed, 0 idle, 1 running, 0 held, 0 suspended&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Troubleshooting/Notes: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Because of the reverse DNS problem, initially when I submitted the job, it was put on hold, and the condor_status and condor_q was showing as much. Here are the steps I followed for debugging: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;I followed the &lt;a href=&quot;http://research.cs.wisc.edu/htcondor/manual/v8.6/2_6Managing_Job.html#SECTION00365000000000000000&quot;&gt;instructions available here&lt;/a&gt;, specifically using the ‘condor_q -analyze &amp;lt;job id&amp;gt;’ command. &lt;/li&gt;&lt;li&gt;Looked at the log file StarterLog.slot1 &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Another time, I got a ClassNotFoundException, since the jar file was not available at proper place. This error showed up in the output folder of the job, in the error file (mentioned in the condor submission file).&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Running HTCondor on multiple nodes&lt;/h2&gt;Once things work for a single work, it is easy to add more nodes to the cluster. Just install the HTCondor package, change the configurations as described, and start the service.&lt;br /&gt;&lt;h2&gt;Notes for running jobs&lt;/h2&gt;Some points that were not very obvious to me even after reading the instruction manual: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;In vanilla universe jobs, if the executable reads from standard input, use the input command, else use the arguments command. Consider the following snippet:&lt;/li&gt;&lt;/ul&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 32.25pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;581&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;executable = testprog&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;input = input_file&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;For this snippet, condor tries to execute something like: “testprog &amp;lt; input_file”. If this is how testprog is supposed to run, great. Otherwise, this will not work. On the other hand, if what you really want is “testprog input_file”, then the following snippet should work.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 36pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;576&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;executable = testprog&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;should_transfer_files = yes&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;# Define input file&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;my_input_file &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;= input_file&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;transfer_input_files = $(my_input_file)&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;args &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;= &quot;&amp;lt;other args if required&amp;gt; $(my_input_file)&quot;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Note that this possibly works a little bit differently in the java universe, where the input file name shows up as an argument to the executable (java).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For executables that are supposed to be available at the exact same path on all the nodes in the cluster, it is recommended to mention the path and switch off transferring executable. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 34.5pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;578&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;executable &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;= /path/to/executable&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;consolas&amp;quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;transfer_executable = false&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Update (March 9, 2017): Added Debian Jessie related commands, and formatting changes.&lt;br /&gt;Update (April 15, 2017): Added more Debian notes.&lt;br /&gt;Update (June 3, 2018): Added notes about CM.&lt;br /&gt;Update (Dec 05, 2019): Added comparison between HTCondor and Spark. </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/1158092902073986082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2017/03/using-htcondor-for-grid-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/1158092902073986082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/1158092902073986082'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2017/03/using-htcondor-for-grid-computing.html' title='Using HTCondor for grid computing'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-4464409502354508331</id><published>2016-12-31T10:31:00.002+05:30</published><updated>2018-09-05T10:33:31.668+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="Spark"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh tunnel"/><title type='text'>Using ssh tunnels for launching hadoop or spark jobs</title><content type='html'>This is a rather niche topic, so if you are here, you probably have weighed your options, talked with your colleagues, and have enough reason to do just this. Hence, without further ado, we will get right in the topic.&lt;br /&gt;&lt;br /&gt;As mentioned in &lt;a href=&quot;http://predsdev.blogspot.com/2016/12/using-ssh-multiple-security-algorithms.html&quot; target=&quot;_blank&quot;&gt;another post&lt;/a&gt;, I use an &lt;a href=&quot;https://blog.remibergsma.com/2013/05/28/creating-a-multi-hop-ssh-tunnel-by-chaining-ssh-commands-and-using-a-jump-host/&quot; target=&quot;_blank&quot;&gt;ssh double tunnel&lt;/a&gt;, and a socks proxy to launch hadoop commands. That works quite well. The commands I use to set up the ssh double tunnel and socks host are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;ssh -4 -A -f -N -i &quot;&amp;lt;/path/to/keyfile&amp;gt;&quot; username@intermediate-host -L5522:&amp;lt;final_host&amp;gt;:22&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;ssh -f -ND 8020 -i &quot;&amp;lt;/path/to/keyfile&amp;gt;&quot; samikr@localhost -p 5522&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Next I can run commands like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;hadoop fs -ls hdfs:///user/samik&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Note that, in order to do this, I will have to have the following: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hadoop distribution needs to be available locally &lt;/li&gt;&lt;li&gt;The version of local hadoop distribution needs to exactly match the version server-side &lt;/li&gt;&lt;li&gt;Appropriate configuration files &lt;/li&gt;&lt;/ul&gt;I initially thought that I will extend this method by having the spark distribution locally and launch the spark jobs on the cluster using this. I progressed quite a bit, however hit an insurmountable roadblock in the form of a bug in the spark library. The &lt;a href=&quot;https://issues.apache.org/jira/browse/SPARK-9825&quot;&gt;bug text&lt;/a&gt; explains the issue in detail. However, if your remote machine (where you are trying to execute the spark-submit from) can resolve the hadoop namenodes and yarn master,  &lt;a href=&quot;http://theckang.com/2015/remote-spark-jobs-on-yarn/&quot;&gt;check out this page&lt;/a&gt; and try out - it might work for you.&lt;br /&gt;&lt;br /&gt;Instead I had to revert to the painful process of uploading jar every time I was changing something in the program, which is what I wanted to avoid in the first place. But the method is quite clean - here are the steps to achieve this.&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Create a single jar of your spark code &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;One caveat here: if your dependencies include one or more signed jar, you will have to either manually edit the jar to remove the signature files, or use maven settings to exclude the signature files. Otherwise you will get the following error when you run the code on cluster: Exception in thread &quot;main&quot; java.lang.SecurityException: Invalid signature file digest for Manifest main attributes. Follow this &lt;a href=&quot;http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar&quot;&gt;StackOverflow thread&lt;/a&gt; for more details. Recommended process here is to use a maven file using the shade plugin.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Push the jar to your hadoop user folder &lt;/li&gt;&lt;ul&gt;&lt;li&gt;This is one way to make the jar available to the YARN executer.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;ubuntu&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ssh  -i &quot;&amp;lt;key file&amp;gt;&quot; samikr@localhost -p 5522 &quot;/usr/bin/hadoop fs -put  - hdfs:///user/samikr/&amp;lt;jarname&amp;gt;.jar&quot; &amp;lt; /path/to/jar/file&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Ubuntu; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;&quot;&gt;Might have to delete existing jar file. &lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;ubuntu&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Ubuntu; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;ubuntu&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ssh -i &quot;&amp;lt;key file&amp;gt;&quot; samikr@localhost -p 5522 &quot;/usr/bin/hadoop fs -rm -skipTrash hdfs:///user/samikr/&amp;lt;jarname&amp;gt;.jar&lt;/span&gt;&quot;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Push the spark-hadoop jar to the hadoop user folder as well. Even better, run a sample spark application (e.g., &lt;a href=&quot;https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.0/bk_spark-quickstart/content/run_spark_pi.html&quot;&gt;this page shows&lt;/a&gt; running SparkPi in HDP) using spark-submit on the remote host, and note down the path to the spark-hadoop jar that is being used. It should typically already be available somewhere in HDFS. Agin, the reason is to avoid copying this jar every time the job is launched.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Finally, launch the job: &lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Ubuntu; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;ubuntu&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Command:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 40px; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;ssh -i &quot;&amp;lt;key file&amp;gt;&quot; samikr@localhost -p 5522 &quot;/usr/bin/spark-submit --class &amp;lt;complete.classname.for.ExecutableClass&amp;gt; --master yarn-cluster --driver-memory 4g --executor-memory 2g --executor-cores 1 --conf spark.yarn.jar=hdfs://production1/hdp/apps/x.x.x/spark/spark-hdp-assembly.jar hdfs:///user/samikr/&amp;lt;jarname&amp;gt;.jar&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Ubuntu; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;&quot;&gt;In the above command, &lt;i&gt;“--conf spark.yarn.jar=hdfs://production1/hdp/apps/x.x.x/spark/spark-hdp-assembly.jar”&lt;/i&gt; specifies the location of the spark-hadoop jar in HDFS. This part should not be required when the command is being run through an ssh tunnel - check out.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;To launch hadoop jobs (or yarn jobs for that matter), it is a bit straightforward. In this case, I had to just copy the fat jar in the remote node (not in HDFS) and launch the job. Commands were as follows.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;scp -P5522 -i &quot;&amp;lt;key file&amp;gt;&quot; /path/to/fat.jar samikr@localhost:.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ssh -i &quot;&amp;lt;key file&amp;gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt; samikr@localhost -p 5522 &quot;/usr/bin/yarn jar fat.jar &amp;lt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;complete.classname.for.ExecutableClass&lt;/span&gt;&lt;/span&gt;&amp;gt;&quot;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;More notes: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;In order to avoid the loop of compile-upload-test, it would be better to create a local hadoop-spark node, test out the code there, and then use the above procedure to run the job on the cluster. There are some interesting notes here - possibly a topic for a later post. &lt;/li&gt;&lt;li&gt;Using ssh config files are recommended to shorten some of the large ssh commands above.&lt;/li&gt;&lt;/ul&gt;Update&amp;nbsp; (Sep 5, 2018): Added few relevant links.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/4464409502354508331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2016/12/using-ssh-tunnels-for-launching-hadoop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/4464409502354508331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/4464409502354508331'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2016/12/using-ssh-tunnels-for-launching-hadoop.html' title='Using ssh tunnels for launching hadoop or spark jobs'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-7503640089838518558</id><published>2016-12-22T22:40:00.000+05:30</published><updated>2016-12-31T17:11:55.766+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ssh tunnel"/><title type='text'>Using ssh: multiple security algorithms and keys</title><content type='html'>While using ssh to connect to hosts, I recently faced this interesting issue. I usually use a double ssh tunnel to connect to varied internal hosts which are behind firewall. Typically the way I set the double tunnel is using the command:&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;ssh -4 -A -f -N -i &quot;&amp;lt;/path/to/keyfile&amp;gt;&quot; username@intermediate-host -L5522:&amp;lt;final_host&amp;gt;:22&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;You will notice that the above command sets up a tunnel which forwards the ssh port of the final host to a local port (5522), so that I can run commands. This works pretty well, and I have used this tunnel to run hadoop commands or submit spark jobs.&lt;br /&gt;&lt;br /&gt;I was recently trying to set up a tunnel to a new host to submit spark jobs. The tunnel setup went well, but when I tried to run a hadoop command over the tunnel, I got a message regarding the key type being used for ssh handshake.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;$ ssh -i &quot;&amp;lt;/path/to/keyfile&amp;gt;&quot; samikr@localhost -p 5522 &quot;/usr/bin/hadoop fs -put - hdfs:/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;//user/samikr/datapipes.jar&quot; &amp;lt; datapipes.jar&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Unable to negotiate with 127.0.0.1: no matching host key type found. Their offer: ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I checked the config file and the contents were as follows.&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;$ cat config&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Host *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;HostkeyAlgorithms ssh-dss&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Clearly I needed to add one of the accepted key types for this server, but I faced some trouble specifying multiple keys in the same line. After some searching, this is what worked (note no space after comma).&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;$ cat config&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Host *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;HostkeyAlgorithms ssh-dss,ssh-rsa&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Now the command seemed to be going through, but I got another error message.&lt;br /&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;@&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Someone could be eavesdropping on you right now (man-in-the-middle attack)!&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;It is also possible that a host key has just been changed.&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;The fingerprint for the RSA key sent by the remote host is&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;SHA256:xxxxxxxxxxxx&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Please contact your system administrator.&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Add correct host key in /home/&amp;lt;user&amp;gt;/.ssh/known_hosts to get rid of this message.&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Offending DSA key in /home/&amp;lt;user&amp;gt;/.ssh/known_hosts:5&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;RSA host key for [localhost]:5522 has changed and you have requested strict checking.&lt;/span&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;courier new&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;&quot;&gt;Host key verification failed.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;There seems to be already an entry for localhost/5522 in the known_hosts, but for ssh-dss algorithm. I was hoping that another line with the new algorithm would get added in the known_hosts file for localhost, but apparently, with strict checking, only one entry per host is allowed. I had to get rid of that line, and then things went through for the command. </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/7503640089838518558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2016/12/using-ssh-multiple-security-algorithms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7503640089838518558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7503640089838518558'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2016/12/using-ssh-multiple-security-algorithms.html' title='Using ssh: multiple security algorithms and keys'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-8227724313463029695</id><published>2016-01-17T15:47:00.000+05:30</published><updated>2017-11-09T10:08:27.940+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="DisplayLink"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><category scheme="http://www.blogger.com/atom/ns#" term="Win 10"/><title type='text'>My DisplayLink troubleshooting guide</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I use &lt;a href=&quot;http://www.displaylink.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Targus DisplayLink&lt;/a&gt; adapter for using my Win 10 ASUS laptop with multiple monitors. When things work, they work really well. But often they don&#39;t. And the problems are weird. All of a sudden, the adapter just stop working. How many times I try, nothing works, except when it starts working again.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here are some of my notes from my troubleshooting experience.&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;The adapter needs correct voltage to get detected the first time I am inserting the USB 3.0. Most of the time the voltage is there, and things work. But when it doesn&#39;t work, I have seen things kick in if I do a few of the below:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Let Laptop hard drive activity subside. That means the HDD LED is not active. &lt;/li&gt;&lt;li&gt;Power cycle through the DisplayLink adapter.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This sometimes still doesn&#39;t work because the power adapter that powers the DisplayLink adapter also powers the external monitors.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Just detach the&amp;nbsp; mini plug from the power box of the DisplayLink adapter, and put that back in.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I have recently discovered this, and this seems to work well so far.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Once I did the last one, and the monitors started misbehaving. Specifically, the two external monitors constantly started switching between #1 and #2. I have a Dell 23&#39; monitor connected through HDMI, and a Dell 19&#39; connected through DVI. The switching was rapid (e.g., once every second or so) and very weird, haven&#39;t seen this before. I had to detach my 2nd monitor and reattach it back in order to get things working again.&lt;/li&gt;&lt;li&gt;[Update - March 4, 2016] New issue: when I inserted the USB cable, I started getting the following error: &quot;USB Device Malfunctioning&quot;, and details had something like &quot;Device Descriptor request failed&quot;. I tried a bunch of stuff, including the usual uninstall-reinstall etc., but finally what worked is a power cycling of the display adapter.&lt;/li&gt;&lt;li&gt;[Update - Nov 6, 2017]&amp;nbsp; New Issue: after my corp laptop was upgraded to Win 10 Creators Update (Version 1607, build 14393.1770), the DisplayLink adapter stopped working again. Repeated power cycling did not help much either. Note that, how DisplayLink adapter works has also changed a bit (&lt;a href=&quot;http://support.displaylink.com/knowledgebase/articles/525125-displaylink-and-windows-10&quot; target=&quot;_blank&quot;&gt;read more here&lt;/a&gt;).&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I tried using version 8.3M1, but that didn&#39;t seem to work too well. I am now using version 8.4 Alpha, and the following points are corresponding to this.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In &#39;Settings -&amp;gt; Devices -&amp;gt; Connected Devices&#39; an &#39;Unknown Device&#39; or something similar was showing up along with &#39;DisplayLink USB Graphics Device&#39;. Similarly, something similar like &#39;Unknown Device&#39; was showing up in the &#39;Devices and Printers&#39; window as well.&lt;/li&gt;&lt;li&gt;What finally helped was uninstalling the unknown device from the &#39;Connected Devices&#39; screen, multiple times, and then power cycling. After doing this a few times, at one point the device got finally recognized as &#39;DisplayLink USB Graphics Device&#39;.&lt;/li&gt;&lt;li&gt;Still looks like it is a hit-miss situation. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/8227724313463029695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2016/01/my-displaylink-troubleshooting-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/8227724313463029695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/8227724313463029695'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2016/01/my-displaylink-troubleshooting-guide.html' title='My DisplayLink troubleshooting guide'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-2111169631472322749</id><published>2015-10-29T18:23:00.000+05:30</published><updated>2016-12-19T20:07:46.739+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Technology"/><category scheme="http://www.blogger.com/atom/ns#" term="Win 10"/><title type='text'>Black Screen of Death on Windows 10</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I have so far liked Win 10, but was recently hit by the dreaded black screen of death (looks like, this is the new &lt;i&gt;blue screen of death&lt;/i&gt;), where I am stuck with a black screen with a mouse pointer. There are numerous posts on the Internet, but it was actually not that easy to get through most of them.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Let me state the issue clearly: I have a few months old ASUS Q302L model, which was working great. This is how it started:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;I had the brilliant idea of connecting the ASUS Q302L laptop to Chromecast, so that I can project videos (mostly Youtube) on TV.&lt;/li&gt;&lt;li&gt;Installed Chromecast for PC, but realized that it doesn&#39;t do much.&lt;/li&gt;&lt;li&gt;Installed Chromecast plugin for Chrome browser, and that seemed to do the trick.&lt;/li&gt;&lt;li&gt;Uninstalled Chromecast for PC. &lt;b&gt;[I think, this is the root cause for all my woes! Ok, Google!!]&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After a day or so of the above, I noticed that my Youtube videos are not working on the notebook any more. The flash based player doesn&#39;t work, the HTML5 based player doesn&#39;t work. In fact, to my horror, I found out, that videos doesn&#39;t play at all on the notebook, even on standalone software like WMP. Bummer!!&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Decided to restore the PC to a recent restore point.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The most recent restore point errored out, saying something like &quot;Can&#39;t change registry settings&quot; etc., and booted back to Win 10 with no video.&lt;/li&gt;&lt;li&gt;Used an earlier restore point.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;That seemed to work, until I was stuck at the &lt;i&gt;black screen with mouse pointer&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;Then started the long process of google searches and tryouts. Here are the steps in the ordeal:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Realized soon that I need to get to the &#39;System Repair&#39; option by using Win 10 installation media.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Used another Win 10 PC to create an USB Win 10 installation media.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Inserted the USB media, but it was not used for boot up. Realized that I have to change the boot order.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;REMINDER #1: When I get a new laptop, always change the boot order to have the USB drive before the hard drive. (More caveats to this later)&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Realized that unlike lot of other systems, the nice ASUS logo screen when powering up by Q302L model, doesn&#39;t show any details of how to get into BIOS menu. More searching followed, including taking a peek at the manual for ASUS Q302L model. Seemed like either F2 or F8 might help. Tried both options, but no dice.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Eventually F2 worked, seemed like it was just a matter of timing. Now I actually appreciate having a separate button to boot into BIOS menu, like Lenevo models.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;I tried a bunch of stuff:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Other restore points: they errored out.&lt;/li&gt;&lt;li&gt;I had no System Image set up.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;REMINDER #2: Probably a System Image would have been an easier option to restore, when the restore points failed. This is time consuming however, so can possibly be done once a month.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;I also tried out booting into safe mode, safe mode with networking, with low-res graphics etc., however none of these worked. Every time I got stuck with the same black screen - it was really stubborn.&lt;/li&gt;&lt;li&gt;To my chagrin,&amp;nbsp; I found out that every time I tried booting without the Win 10 USB drive to check if things work, the boot option went back to &#39;Hard Drive&#39;, so I had to start at F2 again.&lt;/li&gt;&lt;li&gt;Finally decided to reinstall Win 10.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Reinstalled Win 10. Things went reasonably smooth, and I got back the display.&lt;/li&gt;&lt;li&gt;Got stuck at activating Win 10 though - the process errored out with an error code: 0xC004C003&lt;/li&gt;&lt;ul&gt;&lt;li&gt;As per &lt;a href=&quot;https://support.microsoft.com/en-us/kb/938450&quot; target=&quot;_blank&quot;&gt;this page&lt;/a&gt;, this means: The MAK is blocked on the activation server.&amp;nbsp;&lt;/li&gt;&lt;li&gt;My Win 10 copy was initially upgraded using Windows Update from Win 8.1, so as such there shouldn&#39;t be any problem regarding a fresh installation at a later point, specifically when there is no hardware change.&lt;/li&gt;&lt;li&gt;Contacted Customer Support over chat, and finally got things resolved.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Looks like, I have not set up my Country. This can be set up by bringing in the dialog by executing &#39;slui 4&#39; command from Run. This has to be the same country from where you activated Win 10 the first time.&lt;/li&gt;&lt;li&gt;That may not have been enough. After that, the CSR needed my Win 8.1 product key. This can be obtained by running the following command in an Admin command prompt: wmic path SoftwareLicensingService get OA3xOriginalProductKey&lt;/li&gt;&lt;li&gt;Then the CSR did something in the background, got the Win 10 product key, and used that to activate.&lt;/li&gt;&lt;li&gt;My suggestion is to get this done using CSR help.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;Long ordeal. I still have to reinstall all my apps, but I can use the laptop - which is more than enough of what I can ask :-)&lt;br /&gt;&lt;br /&gt;Some links that were good but not helpful to me (may be they would be helpful to you):&lt;br /&gt;- &lt;a href=&quot;https://www.youtube.com/watch?v=UEgQxkQyJRQ&quot; target=&quot;_blank&quot;&gt;Youtube link&lt;/a&gt;&lt;br /&gt;- &lt;a href=&quot;http://windows.microsoft.com/en-in/windows-10/troubleshoot-black-screen-problems&quot; target=&quot;_blank&quot;&gt;MS link&lt;/a&gt;&amp;nbsp; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/2111169631472322749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2015/10/black-screen-of-death-on-windows-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2111169631472322749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2111169631472322749'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2015/10/black-screen-of-death-on-windows-10.html' title='Black Screen of Death on Windows 10'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-7920681411744832281</id><published>2015-09-03T10:24:00.000+05:30</published><updated>2016-07-04T00:14:00.303+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="graphdb"/><category scheme="http://www.blogger.com/atom/ns#" term="NOSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Orientdb"/><title type='text'>Setting up Orientdb - a graph database</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I recently found myself dabbling to graph databases for some interesting analytics work. One of the software that we wanted to test out is a document-graph database called &lt;a href=&quot;http://orientdb.com/&quot; target=&quot;_blank&quot;&gt;Orientdb&lt;/a&gt;. The software is interesting because it covers functionality from both document databases (e.g., MongoDB) and pure graph databases (e.g., Neo4j). While trying to set up the server however, faced a few gaps in the documentation, which is why this post. I am using Orientdb Community Edition v2.1.1.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Using Custom Port&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;By default, Orientdb binary server runs at port 2424 and web server runs at port 2480. To use different ports with Orientdb, one has to change the settings in config/orientdb-server-config.xml. There you would find the port ranges provided for each server operation (i.e., binary and web servers). Honestly, I have not seen port ranges for other servers before, presumably this is for the purpose that if a particular port is occupied, the software will run on next available port - kinda curious. Anyways, you will have to change the starting port numbers for your desired port in those settings.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;Connecting from Orientdb console&lt;/h4&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The console example provided &lt;a href=&quot;http://orientdb.com/docs/last/index.html&quot; target=&quot;_blank&quot;&gt;in the documentation&lt;/a&gt; does not provide examples when you are running the servers on custom port. Here is how you can connect to the server, or to a database.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;orientdb&amp;gt; connect remote:localhost:3306 root root&lt;br /&gt;&lt;br /&gt;Connecting to remote Server instance [remote:localhost:3306] with user &#39;root&#39;...OK&lt;br /&gt;orientdb {server=remote:localhost:3306/}&amp;gt;&lt;br /&gt;&lt;br /&gt;orientdb {server=remote:localhost:3306/}&amp;gt; list databases&lt;br /&gt;&lt;br /&gt;Found 1 databases:&lt;br /&gt;&lt;br /&gt;* GratefulDeadConcerts (plocal)&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&amp;nbsp;You can also directly connect to a database, while mentioning the port, as follows:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;orientdb&amp;gt; connect remote:localhost:3306/GratefulDeadConcerts root root&lt;br /&gt;&lt;br /&gt;Connecting to database [remote:localhost:3306/GratefulDeadConcerts] with user &#39;root&#39;...OK&lt;br /&gt;orientdb {db=GratefulDeadConcerts}&amp;gt; classes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CLASSES&lt;br /&gt;----------------------------------------------+------------------------------------+------------+----------------+&lt;br /&gt;&amp;nbsp;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SUPERCLASS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | CLUSTERS&amp;nbsp;&amp;nbsp; | RECORDS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;----------------------------------------------+------------------------------------+------------+----------------+&lt;br /&gt;&amp;nbsp;E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 |&lt;br /&gt;&amp;nbsp;followed_by&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | [E]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7047 |&lt;br /&gt;&lt;/blockquote&gt;Will update this post with more notes. </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/7920681411744832281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2015/09/setting-up-orientdb-graph-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7920681411744832281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7920681411744832281'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2015/09/setting-up-orientdb-graph-database.html' title='Setting up Orientdb - a graph database'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-6934399170671695070</id><published>2014-08-05T18:32:00.000+05:30</published><updated>2014-09-08T18:46:31.099+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Crunch"/><category scheme="http://www.blogger.com/atom/ns#" term="Big Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Using Apache Crunch with own avro files</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I have been working in big data and machine learning for a while now after moving on from Oracle Crystal Ball. Recently I started using/learning &lt;a href=&quot;http://crunch.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Crunch&lt;/a&gt; for constructing and analyzing our data pipelines. If you are in big data, but have not heard about Crunch before - check it out. If you are familiar with &lt;a href=&quot;http://www.cascading.org/&quot; target=&quot;_blank&quot;&gt;Cascading&lt;/a&gt;, this is a very similar project, with certain differences.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;We store our data (which are different type of events) in HDFS using avro format. My &#39;Hello World&#39; task to teach myself was to read data from HDFS consisting of a bunch of avro files, and print out the count of events in those files. I started out following the example in the code mentioned &lt;a href=&quot;http://blog.cloudera.com/blog/2014/05/how-to-process-time-series-data-using-apache-crunch/&quot; target=&quot;_blank&quot;&gt;in this blog post from Cloudera&lt;/a&gt;. I faced couple of stumbling blocks while getting to my objective, and this post details the way I resolved them.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Note: This post is written from the perspective of CDH3u6 dist.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;One of the aims I had was that I wanted to run my code directly, not by passing the jar to hadoop (as in, hadoop jar MyProgram.jar ...). The reason for this was that I want to, at some point, throw in a UI for easy use. We will see if I face additional issues with that, but that is the motivation anyways.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;First off, our HDFS namenode can only be connected through a double ssh tunnel form my machine. Agreed, this has nothing to do with Apache Crunch, but I had to embed the configurations in the program itself. The double ssh tunnel essentially transfers the namenode to a local port. If you want to know the details of how to do this, &lt;a href=&quot;http://icb.med.cornell.edu/wiki/index.php/Hadoop#Using_Hadoop_remotely_with_SSH&quot; target=&quot;_blank&quot;&gt;follow this link&lt;/a&gt;. Here is how the configuration part of my program looks like, to use the tunnel for running the Crunch job.&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) throws Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a configuration object to load specific configurations.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Configuration conf = new Configuration();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conf.set(&quot;hadoop.socks.server&quot;, &quot;localhost:8020&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conf.set(&quot;hadoop.rpc.socket.factory.class.default&quot;, &quot;org.apache.hadoop.net.SocksSocketFactory&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conf.set(&quot;fs.default.name&quot;, &quot;hdfs://namenode.xxx.com:8020&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conf.set(&quot;hadoop.tmp.dir&quot;, &quot;/var/tmp/hadoop&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Run the tool.&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ToolRunner.run(conf, new DataLoader(), args);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Moving on to the next bummer: the first time I tried to compile and run my program, I got the following exception:&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Exception in thread &quot;main&quot; org.apache.hadoop.ipc.RPC$VersionMismatch:  Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version  mismatch. (client = 61, server = 63)&lt;br /&gt;at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:401)&lt;br /&gt;at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:379)&lt;br /&gt;at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:118)&lt;br /&gt;at org.apache.hadoop.hdfs.DFSClient.&amp;lt;init&amp;gt;(DFSClient.java:222)&lt;br /&gt;at org.apache.hadoop.hdfs.DFSClient.&amp;lt;init&amp;gt;(DFSClient.java:187)&lt;br /&gt;at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)&lt;br /&gt;at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1328) &lt;/blockquote&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There were a few more lines before the above exception, showing another exception: but this exception was listed as the root cause. Searching the Internet with the error statement yielded the following reason: Hadoop server version that I am using is newer than the Hadoop client libraries that one or some of the dependencies are using. A simple solution is suggested in both &lt;a href=&quot;http://www.manning-sandbox.com/thread.jspa?threadID=54251&amp;amp;tstart=0&amp;amp;messageID=145487&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt; and &lt;a href=&quot;https://issues.apache.org/jira/browse/AVRO-1451&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt;: specify the hadoop libraries in the program classpath and move them at the top of the classpath stack. I had a local hadoop client set up which I was using for tests, and it was easy to set up the classpath to do this. Unfortunately, In IntelliJ, the editor I use, the procedure changes almost every version!! &lt;a href=&quot;http://stackoverflow.com/questions/854264/how-to-add-directory-to-classpath-in-an-application-run-profile-in-intellij-idea&quot; target=&quot;_blank&quot;&gt;Here is a link&lt;/a&gt; to do this for version 13.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Even after doing this, I got another exception: [Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/hadoop/thirdparty/guava/common/collect/LinkedListMultimap]. This was resolved by &lt;a href=&quot;http://blog.timmattison.com/archives/2012/02/07/tip-fix-noclassdeffounderror-on-orgapachehadoopthirdpartyguavacommoncollectlinkedlistmultimap/&quot; target=&quot;_blank&quot;&gt;following this link&lt;/a&gt; and adding the missing jar file in the same library group as above.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;That was that, got the expected output count. Hello Crunch!!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Update [8th Sept, 2014]&lt;/u&gt;&lt;br /&gt;Before I could do any more cool stuff, our cluster got upgraded to CDH5 and I had to set up my stuff all over again. This time it was much easier though. Here are the notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Had to upgrade the pom.xml for pulling in the new maven repository. Note that the hadoop website doesn&#39;t contain any information about the maven repositories, but a search yielded the following website which contains all the information: &lt;a href=&quot;http://mvnrepository.com/artifact/org.apache.hadoop&quot; target=&quot;_blank&quot;&gt;http://mvnrepository.com/artifact/org.apache.hadoop &lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This version of hadoop doesn&#39;t contain the hadoop-core artifact that I was using for CDH3 (which was hadoop v0.20.2). I made the reference to artifact &quot;hadoop-client&quot;, with version 2.5.0 (the latest as of this writing).&lt;/li&gt;&lt;li&gt;Also, the Crunch version had to be upgraded to work with hadoop 2.x: used &quot;crunch-core&quot; version 0.10.0-hadoop2.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Changed the namenode information in java code.&lt;/li&gt;&lt;li&gt;Removed the classpath reference from the local hadoop client (which I have also upgraded to use CDH5). No RPC error this time.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Initially I forgot to remove the reference to local hadoop jars (as mentioned in the original post), which was still referencing hadoop 0.20.2 libraries. I was getting the following error then: &quot;Server IPC version 9 cannot communicate with client version 4&quot;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/6934399170671695070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2014/08/using-apache-crunch-with-own-avro-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6934399170671695070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6934399170671695070'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2014/08/using-apache-crunch-with-own-avro-files.html' title='Using Apache Crunch with own avro files'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-2875390623450426848</id><published>2014-05-17T13:35:00.000+05:30</published><updated>2016-07-04T00:14:00.377+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="IntelliJ"/><title type='text'>Adding android module to an imported android project in IntelliJ</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I started using IntelliJ recently - and  was mighty pleased using it. For my Android apps, I used to use  Eclipse before - but I decided to migrate those projects to IntelliJ  as well. Hit some roadblocks - so here are some notes for myself (and  others reading this post).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I am using IntelliJ v13.1.2, which is fairly recent. My app was meant to be compiled using Android SDK for v3.2 (Gingerbread). &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;First  off, I imported the project in IntelliJ using the &#39;File -&amp;gt; Import  Project&#39; menu item. I had to just point to the Eclipse .project file,  and IntelliJ did the rest to import the project, and opened in a new  window. However, when I tried rebuilding the project, I got the following  message:&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Error: Android Source Generator : [] Android SDK is not specified&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;88&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;640&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Screenshot 1: Error Message&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Looks like, it was not able to get the Android SDK information. I have already installed the &lt;a href=&quot;http://developer.android.com/sdk/index.html&quot; target=&quot;_blank&quot;&gt;Android SDK in my Windows 7 laptop&lt;/a&gt;, so obviously, I am missing some connection setting somewhere.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here is how I fixed it, after doing some web searches.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Go  to File -&amp;gt; Project Structure. Here, click on the &#39;Modules&#39; link on  the left hand side. Now on the right hand side, in the &#39;Dependencies&#39;  tab, you would see that the Android SDK is not mentioned. Hit &#39;New..&#39;  button by the side of the drop down and select &#39;Android SDK&#39;. From  there, it should be pretty obvious what needs to be done to add your  required android SDK to your project.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Some screenshots along the way:&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;253&quot; src=&quot;data:image/png;base64,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&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;640&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Screenshot 2: Adding Android SDK&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;212&quot; src=&quot;data:image/png;base64,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MJwRhjPicEYczhqeizC5KCPFSC6WoRPpbCyeDIUjo4HRocHBgd39A7v7+3ft3o1i5+7dO3f179rdv2t3/67+/t39/bv7B/oHBgcGh4eGR0ZGAoFAIBAYDQRGA4FAIID0NjgwMNDf379r966du3Y+vRPFrp27du3apW+OHDY4MDjQPzDQ349caER//0D/wED/gL6sr+/fvbt/9+7+3Wihf6B/YGBg0JDooJanVtSBgQGUlRb96Bi1BINDg8Mjw4HA6FgwGAqHI9FYPJFUu5ONvsuNLjlH1dlrItrcnnOccmnpt7RUwetthw3FslS3LM8Zj/L+XcAt8UNe7bKmkjtz+tSZ10+ePnXi9ZPzp04eP3Xy2KmTx/V4/dT8aSzOvH4CxelTJ18/deLUyRMnT5w4MT8/f/z48WPHjx87duzo0aNHjx6dmzs6d/TonMHRo0ePHT127Nix48eOt+CYFt6pNI7izB09Ond0bm7O2PWRubkjR44cOTI7Ozt7+PDhw4cPHzp06NChw4cOHT50WOUQHocOHTp06CB6dXZ29siRI3Nzc0ePHTt+/Pj8iRMnTp48efLkKTOvnzr1+slTr584dXr+1Onjp84cPXVm7uTpIydOz86fPozixOnDJ87Mnjhz5OSZuVNnjp46c/TUmWMnXz82f/L4/Iljx4/PzR09Mnvk8KHDhw4ePHTw4MEDBw8esHLwwMGDBw4ePHjw0MFDhw4dRuVDHJmdPYKW9GN0z+TQwUOHDqKToB2uC4fUwBIcwBYOmNYcOnhILTy264Oo2BawgqnlQWf7yBF0pRw/fvz4vMYJEyfXlRPrBF4G05Wncfr06dOnT5/BeMPMb4G15Q0nzpg5raG/j6ecWK+rfbVxPNjVgHjwgfsevP/eB+7bev9999x37zfu2/qN++5FcQ+K+++75wEsHrzvngfuu+f+e++5b+s99269Z+s937jnG1//xt1333333Xffddddd95115133nnHnXfeccedd6jcecedd95551133oW4+667777rbhN34WHCWO+Q2JLyLnM+5jR33nnnnXfqRbrjjjvuRAVzCL3Md91119133/31r3/jnnvu2Xrvvffdf//9Dzzw4AMP4nzzwW+i+Nb9D37rvgcfuvfBh7Y++NA9Dzz09fu/dff937rrvm/ddf+37rr/obvuf+juBx76+gMPfePBh+558OGtDz609YFvbr3/wa333b91673fuOeeu+/++l133mWUsPeOO3p7e3t7e2/Xorf3jt477ui94447jMJZUI9Uy8G0+e0oOyOTO0z7uqMT0FuscscqnOdvmvgWAABAexCLAAAAALBBAckBAAAAGxaQHAAAALBhAckBAAAAGxaQHAAAALBhAckBAAAAGxaQHAAAALBhAckBAAAAGxaQ3Nrx0dWFY2cuHTx6+uDs8cPaV5QAAAAAqwdIbo04dfb9A7PHXz184qWD51488N6+1z7c+9pHEBAQEBCrGiC5teDU2fcPzc79/MDb6/5+Q0BAQHypAiS36nx0deHA7HEwHAQEBMTax8ol98Ybb/hogrXMfI05dubSq4dPrPs7DQEBAfElDJDcqnPw6Jl/Onhu3d9pCAgIiC9hEM/ZmJuba6fuBsm1ycHZ4y8eeG/d32kICAiIL2EQ6LdF9+/fv1zPeXvo2rVrs7Oze/bsQb+Tu2fPntnZ2WvXrrUpBo/M423Q5l4QH/3zte8VD3xbeuU70ivfkV75tvTK9uKBj/653aK25PDsEZhLCQEBAbEuQTxVf+VHtVf2HnwT1cjPPffc0aNH2/Gch4c++OCDZ599VrLx7LPPfvDBB+2IwSNz/OfnX3rpJfT74C+99BK+vp1d4Jx++8PHy68+Ufr1E6VfP1F69Y13riw3Bw9mZ2fX/W2GgICA+HIGkdp3ID55YPiZ3+w7+Obi4uJzzz23uLjYjufcPHTt2jVkuGazeerUqatXr169evXUqVPNZhN5rp32XPvdlfL0OXn6XJuJPfivRy98W3752/LLPz92sfPccEByEBAQEOsVxOLiIvnjAy8fPzs48creA7+1jM951N1uHpqdnUWG++DKR/lX3vxO49B3Gofyr7z5wZWPkOdmZ2dbiqFNyf18/nffax77XvPYz47/rp303qR/cjz9k+Od52PBLrnJV1/YShAEQRC3puRXr6CVwYfRqs2P77nS8m2Td24mCGIr65xykt1OEMQtO1vLNfiwWgZt7wTx8AuTe1K3EASeP3p1K3vFKLmWGC8PQt+vNbGWYTuHjw5BY3vw1SsrO2mOp0Jf2fJE6edn3W9UCAiIlQWxuLgYfP43i4uLv5h7a1djZvI11S4rltyePXskSTp16tRzs+f/4R+P6vGPRy6cOnVKkqQ9e/a0FEM7knv90pW/K89unzi6feLo35VnT178sOUmFlaj59OOl+T0Ot22xjv8lNzDLxgFuDUlv3pFl5xev1slZ6739Vf1XZvyNCnKrCuXw1cLoBk0+HBbW7V/KpYnOa0YEBAQN2MQi4uLg+P7hyb2B56dCT4383TtV6hqXrHkcrmcJElXr16V9v+WfvmMHtL+3169elWSpFwu11IMLSV35eq1b+Vee6h44NuNw99uHH6oeOCb8mtXri5vtojvc1gccZPcLbdu1mvYSXY7QWy+5dYuk5y2Cw/JWYSkJd78+B6T2OzrPQ4fHZ3VTCs6ad6nAiQHAbHhw/Q5ufDzM0Pj02i5c8n97MSlHx+7qMfPTlxCkisUCi3FsJE+QuDaknt4+1ZND/LOzcStqccfJhz76/RaGO8VVK2DVdO6+fCVuLE8et4cJHfr9q23qorykJxdt7qiTK03zIUtD18/dlw/Kztp6ql4eDveNnVsybV5oiAgIG6uMElueOJXA82X0XLn3ZXn3/t47vz7elx4/6q/3ZU3C+6SeyH4MHLA7OO36n9itbxelWPqQisN63hKTt/RXqcml0ORTJJLyXtStxDELTtn3cbktrJX7JKz7t3cKGzn8Pc6DfJ1dNJuTcmvGg1Eu+TaP1EQEBA3V5gkt7P20s7aS2i584knH3/88QdXf//Oh1ff+fDqB1d///HHH/s48cSXD7etb3cl8fALqJLdujN1C0FsZa/o9bVplEurc/GVjo02B8mZpm8QhHvd7Sw5tQ23fevyW3KYETUhWcbS3A/fkpWp83OZJ82hrYatXMGJgoCAuLnCJLmnyr94qvwLtLxiyXl/hKBarf7qV79qKYZ2WnKdf7htnSeePPwCNs6k9wr6KTnHwS3HcJOcZXzOYUwOaz+hcByTw1tULQ8fL5hVmcs8aW1Krv0TBQEBcXOFSXLfV372feVnaHnFklt0/zB4tVpFC9PT095iaLO70t8Pt/n1kTsLHpLbq0+CN5aNnjeLurCxLtQwat2HqSlKnfoxyaZcJ2i4SG4v1nPoObvSNCpm6mBUZ1RiZW51+PLO7Vqbz2gCruyk2bsr7S3dZZ0oCAiImytMkvsvuZ/+l9xP5+bmOvmcHOLatWuHDx9+7rnnFEVRFOW55547fPjwr371K1143p5rf0zOrw+3+fuROxxvyamdb8YkRq+JJ8an2QzrqPIgtJmHXhNP3GchOnxOTjOZPrTmJrm9LT4np5sDHdH2sd/8o/fhm+fXWDs5l3XSrP2Q2OZeE0/am+MKAQHR/WGS3Hbxxe3ii75Izo3p6el2PLfGX+vV+UfuPIBvPIGAgIBYryAeSPwjiv8nO/k98cePClNt1t0rngCpe+7IkSMryNz32SK+fOTOA5AcBAQExHoFsY3di+JRbt/j4tQ2dm+bdXcns/ynp6c9DNdh5t0GSA4CAgJivQJ+NHXVAclBQEBArFeA5FYdkBwEBATEegVIbtUByUFAQECsV4DkVh2QHAQEBMR6xcolB7QJSA4CAgJivQIkt+qA5CAgICDWK0Byqw5IDgICAmK9gpgF/MNNcgAAAMC6QFwAfGLWXXKr2VAEAAAAXAHJ+QZIDgAAoNsAyfkGSA4AAKDbAMn5BkgOAACg2wDJ+QZIDgAAoNsAyfkGSA4AAKDbIC5cuHC+sU3/ReRN4f2oyj6PryWIbY3zxsptDUv9vj+8iSA2hfefN+e2rXH+fDub2Dl/vrHN9ur5/eFNxKbw/vOOr647IDkAAIBugzjf2Gb4SdPIBbNmzje2YcbatGmTSTCaDjeF96MMtjXOn79w4cL5/eFwo/UmjsLw1hhIDgAAAGgHAklJr6l1S5kkpy2jhW3bNukNvgtIgdu2qQm0hMarrTZxFAZIbr34EQAAwAaC0BteiPPn94c3WbsEDcepS41tenNNTY9bkDD5rNUmF1Sz2vtFN4Ub6npL49JUNmNb04GsPRtGcksAAAAbBWKTteGlN+WwMTltRE23C1LWBeQYdYWpz9OqK/dNzmudoReso25qD6h9KM7Zdo1tuFzXHpAcAABAt9G6JWcaZsNXat2TmhHNo277w5sI00tum+D5X7hwwTFD6yambU3TY9ZQalZAcgAAAN1GW2NySE8XTB2G+8ObNoUbmhCdBsm0nFps0lJy5salq4DXHZAcAABAt0HoMycvaJMeHWZXunQPOoyWNcKWiZqtN7F2VxofPFBT2rxr2XZ9eyl1QHIAAADdhvVzcnqrztI4Q8qaPmdpYNm6MW0jebY2mXWTC6bJIyatbtu2yWE2iuvEE+iu9AGQHAAAGwn4xhPf6ERyCwtTOwiC2DFlXrOFnF/wTV/tYZec0ksQBEH0Kr9bmukjCKJvBntxpo/oVS6jBQO0asm82lhpTqzlZ898aWlp6bLSa2xqbIfStbGJA3qZLdvoB+KxLQAANxkgOd/oWHJbtmwhdkwt4Gu6QXJmk/X29uJaMb1kdcNMHyYbQyOmxDN9mLF6e3stmSCt9SqXUQbani8rykwbmzjjrTGQHABsKEByvtG55MgpcssWcn5hYbGLJafMKL2mlpqb5HApWVbgiU059PWZlTXTR/T1qQkc7NNqE2dAcgDwJQIk5xs+SG5e/W/RLLmpHVov3Y6pRdyI6rqFeXVR3XZxcdFYReyYWtAza63M1pK7bGmIuUjO5rilpcuaHp0yUJdm+oytUHpTj6h5Hy03Ufsubf2ivcqM3gvrfiDGtrYuUQAAbhJAcr7hi+TsCy5pCMvi4uLiwtQOVWnYtgtTOwx5+iQ5lwXzMNtlxdqPaHgPS2zowzCouk7NAdenqh2Trrw2MTpDzaNumtwchuKcbDfTB407ALhJIda7ABsHXySnumrHlHUNoTfVzA5zWsaacUb7r03ak9ySJpbOWnKmNNhKrXtSM6I9Z/NLbpuYy+CYoW0lvq3D9BgAAG4uQHK+4ZvkFubJLcSOKdxYqH02rw7ZtSW5HVNttNtWLjlVIJ2OyWHtPX3lZaUXH/lzGCTTcmq1SWvJ4Y1LDwEDAHCzApLzDb8kt2iMqG0h57FOynlyS5stuYWpHdj43CJqC/rZXbm0tKS3dbxnV+INNafZlW7NRHviGcU2UbPVJtbuSuODB4Zjrd71GAIEAODmAyTnGz5KbnFxcZ7cQmByIwiC2LJjR3stuUXTxBOC2DHVieTMn5MzVfvYJ9JcJiU6jr6ZEyNl/c7awLJ1Yzrk1XITvNfRpNW+vl6H2SiuE0+guxIAblZAcr4B33gCAADQbYDkfGPNJEe0opPMQXIAAGwkTJIzjaG0RdufnMW/72IFm98MQEsOAACg28Akd1nptX19RCs6tBRIrusAyQEAsJEwJIcmczt8hNcLkJwBSA4AAKDb0CWn2e2y7ZsJlT7L7DR91lmvoli+eFDt7nT7LqXLbptvBEByAAAA3YYmOcNtuOVmjJ8yMX1bvLpknkHu8MXyLl+bZN98I7BhJAcAALBhUCWHmw37qgenD+3am3oOny5y/5oJ5803AhtDcgAAABsJJDnTt+tivYwguWUAkgMAAOg2iKUlu2vsX+i31Kq/0ZLS8buUoLsSAAAAWFOIJa/v1nWUnNHws0w8sX2rofW7lNw33wiA5AAAALoN+MYT3wDJAQAAdBsgOd8AyXUJb5z/4MDc6UOzR2e/NByaPXrsxOkPP/xwvc89AHQdIDnfmAXJdQFvnP/g0OzcLw+enXrtg72vffQlianXPnjp4NkjR+bAcwBgASTnG2ssuXfffffFF1/M5XLZ7iCXy01MTIiiuL7FeOXgiV8ePLvu1lmXmJk9d+bMmdW42ADg5gUk5xtrKbnLly8LgjA7O/vFF1/8x3/8x3of+tLS0tK//uu/zs3NCYLw0UcfrWMxDs0e/VK14fCYeu2DY8eO+X6xAcBNDUjON9ZScj/+8Y8PHz78P7qP2dnZqamp9S3AustmHQP6xgHAAkjON9ZScrIs/+lPf/r37uO1117L5XLrWACQnO8XGwDc1IDkfGMtJZfNZv97VzI7O7u+ZQPJ+X6xAcBNDUjON9ZYcv/WlSDJrW8B1t00IDkA6B5Acr6xxpL7b10Jktz6FmDdTQOSA4DuASTnG2ssuT+b+eI30c2bN2/evLmnJ/qbL7748zqBJGdZ+cUXv4n29GjFe6x5sXXxvvjiN9H2UtoLgFf6k6++sBX73vFbdq66AidffWErsfnxPVdWnsOe1C0rzQEkBwAWQHK+scaS+wLj84vNR3uiv/78c7Tc/PXnX6wTSHKWlZ9//utoz6PNi59/8cUXF5uP9jzavPi5QwnxZPjycgvgphxVeA+/0OWS6yRAcgBgASTnG2ssuc8xPnsl2vNo48Jnn32+3iDJWVZ+ppXPsryyZC0L4KGcyT2pW4jtwVdX0UAgOQDoKkByvrHGkvsTxqefzkR6eh5tnDOtPNd4VOskjMx8qiV7tHHOtIwWIpFHe3oiM59++umn5xqPmrfS8nFLgIMkZ1npuN8//elPMxGtDzMygw7B/OejjRl11+jQvHetF8BLcq/OPn4rsZW9ogkPsT346hU1Jauu1Ds2nZPt3E64JLtlZ8poO7a57auzj9+qptvKXjG1Pq05mFKC5ACgJSA531hjyX1q5o9/PFt/tGfz5s3h/X/89NNP//jH/eGeHnX5bP3RnkfrZ//4xz/uD/c8Wj+rJ9BX9jxaP6tngpa1bLFN9ocfrZ/94/5wT3j/py4gydnKZmSil8X+qq14PVgBw/vRgvuu9QK0IzmTSNjtt+ycVTszb03Jr17RR8Vckz38AlqD2Uu1jrxzM7G8bWcfv9U0WKhv6JADu927uxUkBwAWQHK+scaS+xcnPnmr9khPT3j6k0/eqj3SE57+5BO0fjrcE57+5JNPpsM9j9Te+uRf/uVf9GXTSvNWeoabNXrC02jNI7W3HAuAJGct1SfTYWPiiZH/J9NhbaWtJI5F9dy1XoBWktv8+J4rWAuJIAiCePgFS8rgw8RWtkUyw0Z7UrfcmpJfta1sc1tzD6pXDntSt3hOnwHJAYAFkJxvrLHkPnHhzdojPaHpP6j//QGtnA71hKb/8Ic/TId6Hqm9+YdPPvlEXzatNG/luEbfy+bNm0PT1vVIcpaV+C7sOf/hD2/WHrGVxGXZY9d6AbwkpxnFQy2mBl+LZC0l1962XpJzGEGUd26G7koAaBOQnG+sseRuYFx/uVp94/qNGzeuX3+j+kjPI9U3rl9/OdTTE3r5+o0bN66/UX2kJ/Ty9evXtaUbN25cfznUgxJefznU84hlcyNnLd0NG29UH7GvR5KzrMR3gZU5pO5fL7KpJM7LHrvWC+AmObxTES3bOgnVNYYLnZPZROXaXdnOtt7dlc7tNnnnZsf1IDkAsACS8401ltx1jMXFXwb1/sDgL9WVZyrb1Akj2ypnFtWVvwxqyYLBnm2VM4uLi78M4gmwrIK/XMTzQZkbOfQEf7m4eN0MkpxlpWUX2sozlW09mzdv7tkWDG5TX/1lsEfdC7aJvuy9a70ANsnpmCY9mjoDtb7ErQ9vtkzrcExmEZU2xuYx8cRzW6yQ7hNPCOLhF/S9EC5zREFyAGABJOcbayw53/P0BSS59S2Ax7wMj1jfqf9+BUgOACyA5HwDJLcIklvvAMkBgAWQnG+A5BZBcusdIDkAsACS8w2Q3OLNLLmNESA5ALAAkvMNkNwiSG694+jRY7///e/X8fwDQLcBkvMNkNwiSG69Y/bYmQsXLqzj+QeAbgMk5xsguUWQ3HrHTw68O3tk7rdvXbj6z9CeA4DFRZCcj3QiuVkAAABgFQDJ+cZsZ5Jb90YABAQExMYLkJxvdCi5lmkAAACA5QKS8w2QHAAAQLcBkvMNkBwAAEC3AZLzDZAcAABAtwGS8w2QHAAAQLcBkvMNkBwAAEC3AZLzDZAcAABAtwGS8w2QHAAAQLcBkvMNkBwAAEC3AZLzDZAcAABAtwGS8w2QHAAAQLcBkvMNkBwAAEC3AZLzDZAcAABAtwGS8w2QXOecOHHi+eefrwMAsN5U6025+dOjb1x2u1vPnz/faDTkbqVQKPzsZz/76CP4FQL/AMl1zvPPP3/y5Mlr166td0EAYOMw9MzFFUTgmbfo5q9K9efdsq3X63Nzc1evXr3WlXz44YczMzMTExMgOd8AyXVOvV6/BoYDAF9ZmeRQ1Ot1t2wlSfr4449/393IsgyS8w2QXOd43FEAAKyM1ZPc1a4HJOcnILnOaSm5+L6vePwJAICdVZKcKIofdz0gOT8ByXVOS8k98+tv8z//PzIv/s/pF/8T97P/ffyV/3dtCgYANy+rJ7mPuh6QnJ+A5DrHW3LnLh9ITv1VfN9X9EhO/dWb77yyZsUDgJuR1ZPch10PSM5PQHKd4y25Z3/znfi+r/z2nf3IcGhh4tfQmAMAL1ZJcoIgfND1gOT8BCTXOd6SE3/xf5E/+WtLcD//G+88p3YQxI6p9suwsDC1g9hCzi+0TjlPbrGl9NjcUpKFhakdhM4Wcn5hYWGe3GL8ZaSc2kFgeeLb7Ziy792U5/KOCG1t3rsvXJouZfbOL1yaLmVK05d8zny5dFKMhYX5vZm98+q/C4uLiwvzezNOue3NZLIalgQLC5emS5lsNpvRMnEqobp5pjR9aWHBYY25JPN7M6XpS45lXj3JvdeKd9997jGCIB57zrymJ37g3Zbb+gJIzk/WQHJqFWarsufJLUSbtZhnfddmbYhVpDumFhbMFSuxhZy356ZW361k4/vsyoV5csuWHTu2tHVy1E3aVsKyNreXBE+p6XLBvjm5hSB27MBXzs9rZxhpE9dhe3k6pl/QslvZgXuwcGm6VJq+5Lc414WFhfm9pelLC5em905fWliYLmUye/fu9VSm6h/s8JHy8QXrJupDwYLXGnNJFrSzbM9tlSTH8/y7rbh8+dnHiJ6eHuKxZy/ja+KvXW65rS+A5PxkrSS3ZYu5yl7AHr/bzKETyS3Mk1u0inVhniSnFuwVJZIZvh4ttSye4x1V2/9gff83FxcX8dE4PD7653f1NBbmyS1byHn0b8u9qwe4OpKzl8R23pCRHDZ3FefC1A53yXnn6ZF+ZQfuAap9fc92XVhQpaKqZVFt23lJzt7GQr5adFKXupe2JGcryfxeR2U62uvda3+2V2LvXvvzsiT3u1a8884zjxK3xZ6J3XZb7NV33jHWvPpOy219ASTnJ2smOdQcMFZO7bA86bfMoSPJaTWn21a6BfX1aEU7B+h4RyGTLXpKTk9jPhzkFON/o7TkDmu70+gpJHE37NixRW2wagn0TkKTIWybt1uSDiRnP7Et8zQ3wrEm+BMhfRmdE7fjRSdk37WpHcQWckpNs2PKSG55nsBbGLgP5vdqnW975xe0Klx7L9SmD57GnKFDYr1DD/UBon3t3VvKZPYev/Y26h7MZrN75xfwYuDdgHvnsUJO70UrW+rZW3KOrxp7d9kWOxZrOR27Ro2tnFrMjpIrT1+xV2Ll6SvLktw7rbh0afwR4rbor9X/8DXvvPPOpV9Hb1MvsUfGL10af4R4ZPySFNmE4AAAFktJREFUQ5pHxlvuyA2QnJ+smeTIeeP5Xas1HWpbfMDGrQb3qA2xfOxtBVNFZpWcYTlNJ5gU7Y7E8VlymlF0t+jlV9uaWncf3lOn9/3iR4onWDD6AfHzZt28vZK01bXoeIYJp47rNvN0fsddui7Nx2s6Idhqbb1DDyo2fGWr0xdwoWkmQxvY02Dn05rY5C3UjaeNlVnSm3a6ML83gzeqjJUovfa652Oft+RsfZWLi4seJ8TCpemSpQD2NeaSOLzk1hVpaczZm3HekuM47lIr3n57/BHitsgrb3ssXLp06e3xR26LvPI2shz687bbbou8cunSpVci6sLKAMn5yRpKTu2lWjRqT4fa1lI3OdXgrpIzvTq1w/Zsrlay9gaN/qomOevkiLWUHN43qDd6nA/cqYFlU75Rd6tPGZ6bt1cSfAaJ6+au3ZXOY3JeeWKve0rO83jdTqNjUd0ktzC/F5+UoSfThpoc0tjz1BPjDTKtdWhtrultMkNy5j5AB1+2klDLNI7zQdrP3+OxwCmx87Ccm+QsjTl7M66l5C624sKFxjbitvD+CxcvXrzQ2EZsa+hrLuwP30ZgbGtc2B++7bbw/gsXGttuCzfQsrqq5Y7cAMn5yVpKTq9VHWpbe93Usga3Sw5rDjq2GBa1pp6l7lvEu+YW9B6tdkd6nMfkph+oTT+w6D0mp6UxnysLpk5Ux/Ppeoo6kFw7JbG/xS1Xuu/LdXOsJ9n8Hq255HS74PUyWtIH8BzT6LglNu/XtNWl6ZKlu3K1Jef2ktF/6zIm55FDq90toyWHN+Ycm3HekmNZ9kIrzp9vbCM2hfefv3Dhwvnz+8ObiG0NdY361/nzWOL94U2bwvsb2zaF95/fH960rYFWYGmWC0jOT9ZUcqiSmtI7wVZDcqYmgiNaqhZjcvYGhxvesyur0/fbDVf51T3O58rcZLR2ojoceMvGLt5ENh+gZ3dlOyUxEi+3JWduFreQHH75LK+70vX5wGNZ27vDmJx5IA2r8Ut795awqfm2NEa2lsRY56R+nu0y0Aat3LorjcG8FUsO/1PvAbW81HJ2pY728YQFjzXmc9LumJylMefYjGspuXOtOHu2/l1iU2j6rPrndGgTQRDEptD02bNn698liE2haTz9dGjTpk2b0Mrp0Kbvfve7aFnPx77gXQCQnJ+speQWtX4nbIDEsbvSY8BJfVnLymGQaYvTjMSFKVKrzvSa0qVydBwfWn53Jc4LB3bE933lyFvPnrzw0/i+r7xwYIdbSrQffI1dyY79eI7Dltr5NDr6Wm6+rJKou3D6nJypTb2FnF9YwNZYHx1aSM7I3/gwg9GnvKzjbVtyi9jsSovcstlsprR3r6FAdbxJK7ZDGuygTIkXF82fLbN0VxrdnjaN2ad4LEdy+nwW88fXTHLG31/b4TvrSs9WT2BfY2dZsyvxxpxbM85bcgzDnG3FW2/VvktsCr78lr7m5eAmQlvz1svBTfq1/N2atgZ/VVvW8rEveBcAJOcnay25hXlyi9Ogi61uWnSpgo1eNG1ypks+7h9hdhhbwvstTfUd0ubxqSfWRnJA96C3MNz604DOWfHn5MrTV9yacS0l92bXA5LzE/jGk85pKbnXzhTIn/z1xffm3vngBPmT/+XXr0trUzCgQ9S+QKephgDqNcW+HmUlzwGo49XxJW/JeYe35H7bCutgNEbLbX0BJOcnayA5jysG0U4m3Qz8ntxGBfUKenzGC1g9VklyNE2f6XpAcn4CLbnOAckBgO+snuROdz0gOT8ByXUOSA4AfKczyTXcsqUo6vWuJ5/Pg+R8AyTXOePj41euXFnvUgDAhmLFhktOHFYae92yFQRhbm7uZBczMzMzOTkJkvMNkFzn7Nu375VX4EdQAcBPVmy4WmNi+tVjbtn+/Oc//8lPfnKiW9m/f3+xWDx79ixIzjdAcp3z3nvvNRqNOgAA680zzzwzNzfncbd+9NFHExMTcleSz+cnJyfffPPNxcVFkJxvgOQAAAC6DZCcb4DkAAAAug2QnG+A5AAAALoNkJxvgOQAAAC6DZCcb4DkAAAAug2QnG+A5AAAALoNkJxvgOQAAAC6DZCcb4DkAAAAug2QnG+A5AAAALoNkJxvgOQAAAC6DZCcb4DkAAAAug2QnG+A5AAAALoNkJxvgOQAAAC6DZCcb4DkAAAAug2QnG/4LrlZAAAAoDNAcr4xuwqSW+9jAgAAuLkByfnGakjuf2xoJicn17sIAABscEByvrEakvvvG5rJycl///d/X+9SAACwkQHJ+cZqSO6/bWgmJyf/7d/+bb1LAQDARgYk5xurIbkvOuPzz3/xA8LgB7/4vMMM/WVycvLPf/7zepcCAICNDEjON1ZDcn/qjE8//fn3if+be+PTDvNZpWwnJyc///xzX4oEAADgCEjON1ZDcv/SGZ988tO/J77KnP6kw3xWKdvJyclPP/3UlyIBAAA4ApLzjdWQ3I3OuH79xSeJr9Inr2t/nqS/SnyVPnnjxg30yonFHz9JfJV+kf4qQRCE+tKNGzeun1TXEATx5IvX9ayefPKrBHHvvYTxWifFm5yc/OSTTzo7RAAAAC9Acr6xGpJb6Ixr16aeMIbknpi6du3atakniCem1H+vqQm2kMevXbt2nNyiLk09QRBPTF1bWFiwrNxCHtey3UIev9Zh8SYnJ2/cuNFhJgAAAB6A5HxjNST3z51x9erk48TmzNGrppWTjxME8fjkVXuCyceJxyevXj2a2Uw8PnnVvBJL6ZjtCpicnFxYWOgwEwAAAA9Acr6xGpL7qDOuXHlhO7E5NXvFtPKF7QRBbH/hiiXBlSuzqc3E9heM/1H6F7YT21+4Yk7pkO0KmJyc/P3vf99hJgAAAB6A5HxjNST3QWe8//7z3yN6EgffN6/53vPqv++///7z3yOInsTBDz744P2DiR5s5feef9+2Us3Knu3KmJyc/PjjjzvMBAAAwAOQnG+shuTe7YzLl599DPuc3G2xPfEeoif+2rvvvvtavIfoib/6u2ceI3oee6wHJXjs2cvqhq/F1VVET/y1y1pW6vK7776r5vvYs50Ub3Jy8sMPP+zoCAEAADwByfnGakjunVXm0qXxR4jbor++tNo7cmRycvL9999fl10DAPAlASTnG6shuYurzIULjW3EbeH9F1Z7RwAAAOsCSM43VkNy/98q84tfJB8g/uYHtV+s9o4AAADWBZCcb6yG5G4PvQ0BAQEBseIAyfkGSA4CAgKi2wIk5xsgOQgICIhuC5Ccb4Dk/Ir4vq94/AkBAQHRfoDkfAMk51f01f52bM/fRCb/U2Tv/zT6/P/2dP1b614kCAiImzRAcr4BkvMlHkz/Ir73r+L7vmLE3r/6Zuan614wCAiImzFAcr4BkvMl+up/G9/3lW9lX0SGQws7G99c94JBQEDcjAGS8w2QnC8ReP7/DL/wny0xtud/9d4qc25p6dzV9vfyteDVuaW/TOYvtk6Zv3HFltJjc0tJvha8OmdcI3+ZzF/8WvC9yetLS0tLS9dvPBk0cvjavs+WsDy/tu8zfbO5ffa9m/Jc3hGhnM179yWePPCXpXNXHc/Y2kcnxfha8Orc0mcZ9d+L9ndHD+yNWLIkMN5oLROnEmpcv/Fk8KLDGnNJMueWrhx4b31P7E0XIDnfAMmtV3wtf+PK9c/mri+jRmtfCcva3F4SPOWTB/6C1VymzSevLy2d+wxf+WRercu+tu8zSy3ZZp6O6ZEgLdb0713wX5zrEl8LXp27fuPJ4HuT5248Gbxof3ccNtn3meW5ASkfX3A4Y5Z31r7GXJKvBd+bXM51DnE7SM5HQHKdxK7mvbua990eets0GofFXdHX9TSWePLAX64ceA/92+buVkly9pLYBIMacw6bu4oTa08sN0+P9L6/g8s6/10eX1OloqqlnfNmb2NNXlcfJuzqUvfSluRsJdn32bI6LSBAcr4BkuskkMlu95ScngYP/dkWb0moVdIBtcfPUI7WHXTlwA3cDXPn/oJaS3h/kVpD4Yawbd5uSTqQnL0d0DLPzDntGM5dNfVtnv2DvozOidvxohOSHvt4bukvk/vUNHP7Lj554C+WU2o5dkvxzCV5T6/3b8eaPngac4YOibECf5YJXjSX9l2te3Bpbt9FxzfO+rbarhC38Jac46stHyywUtnL6b6vDdRiXpsAyfkGSK6TWLnktHveVs+qlabe3Yf31D154C9Lhhu0Gh9LoI/omC1i3by9krTVtWhZaYzo2B7b28zT0X9uXZfm4zWdEDX/fZ8t6eude1C14SuPkmCtkMw5U6+pw1a2xKbC7/vsyoH3TKU1N3Ec3zjLYVquEI/rs4XkbH2Vt4fe9jghlnjywF8sBbCvcTzVEO0ESM43QHKdxIolh/eS6Y0e57aOUwPL9rxvVB+WitWtfdZGSXS8aj3X531no3jliU1a8ZSc5/G6nUbHorpJzqkk2gPHdaz/DUtjz1NPbJqXsaS3U03NIHtH8bIO0y280zjOB2k/f4/HAqfEMCy3vADJ+QZIrpPY3dy6u7n1dk/J6Wn0MFf3CKMXay0l105JzImXNSbXuga01+lG9+k6Sc5ektttw5aOafRwS+xxKlCHqvWNW03Jub1ktOZdxuSW+xbbTzVEOwGS8w2QnC+xu3mP3XAD43c5JrZ0E+kDOe6jVo7dlW7ddyZLeXdXtlMSI/FyW3KWDxt4S840fLWs7krX5wOPZex4bSfcVhJ1R9c/m7uOTc23pTGytSTGOic9TgWSont3pddhuoWtM9mhx9jyUsvZlXpkzlk/0WFfYz4nMCa3jADJ+QZIzq/4YeXR+L6v/B1X/Fv62fi+r/yw8qhbSns3kfpRLbfaeZ8+0cA08cSovOxzATw3X1ZJ1F04fU5OnzGhr8fWWB/bW0jOyN/4MIM6ucNWnhbH27bkbsd6a71Loq7UKn3HNNZzhY+04T2Wljfa6Pa0aaztw3QM+7tjOUZH77p9INIhWy2BfY09YHblcgMk5xsgOb+ifclBdE9g826gP23VTjIMyC0/QHK+AZLzK7YJTPiF/3x/6lf3Jl8J/eNfPyJm171IEO2E2nh1mmoIYRu1XclzwHK/2QfidpCcj4DkIL7kofUKQlMDoosCJOcbIDkICAiIbguQnG+A5CAgICC6LUByvgGSg4CAgOi2AMn5xmpIbr2PCQAA4OYGJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbN5fkFhcXx8bG7m/F4ODg4uLi6hUDAABgVQHJ+cbNJbmxsbHf/e53LZO99957g4ODq1cMD67WFRRvff8761IAAAA2ACA537i5JHf//ff7ntJfQHIAAHQOSM43QHKd8Oyzzz777LPxeFxfWBPJzfQRvcplHzO8rPQSiL6ZFbzk+Iq/JQSALxcgOd8AyXWCXXLXf/EiindDP1q13fotuRlFzW2mz2os95cuK71ohb4AAIBfgOR8AyTXCd4tOeXoRygel6Z83a3vLbl2cra+ZKgNLAcAfgOS8w2QXCe8/PLLL7/8cq1W0xdwyb341iKKoX2/sW1q6wY0VujGmOkjevv6egmjxUQQBNGrKIZvrFuZhaOJaabPmrUzl5VeN8fZXsKcZ1ejsca2a/NBAQDgBEjON0BynbDSlpx9zArrDTRenOkj9GRGgstKL4ElsG4104dL0tL56NkE9GiRObyE5e0lOdsa/KAAAHAGJOcbILlOWKHk7MqwNcD6ZpZMqjA1pLT1rluhlTN9eFtLRd/Q2rKzj8cteb7UZkvOuutV7GsFgI0DSM43QHKd4D3xZJ0kp6Y1tjCSuXZHLq8Rt7S0tLRkZOWQwl5CfdcgOQBoDUjON0BynbBq3ZVaU8zUWmrZXamZ5rLS29vX14sP7SmXHXdrSWBf5f6S0+xKvE/SvLmpDxYkBwAtAMn5BkiuEzqYeGKbkGF0Ibp0A2pbuEw8wc1xWTFN7NCnrPT1ObXkjLkrRnnUXXu8hM+EsTYxHdLouwbJAUBrQHK+cXNJrtu+1mudPkLQ/dimvAAAsBxAcr5xc0luscu+oBkk5wy01gCgM0ByvnFzSQ7odtTuSVAcAHQESM43QHIAAADdBkjON0ByAAAA3QZIzjdAcgAAAN0GSM43QHIAAADdBkjON0ByAAAA3QZIzjdAcgAAAN0GSM43QHIAAADdBkjON0ByAAAA3QZIzjdAcp1wsP4Plvjg9C/Xu1AAANz0gOR8AyTXCXbJgecAAOgckJxvgOQ6wVFyjtFmhn3EEtFnXXlZWSKIpTa/KKvPM6X3qwAAdAkgOd8AyXXCakiut9fqoT4CJAcAXy5Acr4BkuuEdgTWMs1MnyGePmKpr2+pV8FfXiL6liGnm0hySu8S/BwPADgCkvMNkFwn6AJ7+9qnmZfOZF468/a1T93SODCzRBBL+A+vIQn1EUbtr/Sqa7RfSV3qJZYIwryhtrJXMVLiPnNYieVjMY3Sa87faY9umff1GRl65KPv0bF7FgAAkJxvgOQ6QRdY5qUzgRdPBF48kXnpjFsaE6jGt9XvSBgzfZgYepcuW0SCOcOyEh+985ac8eqMQ8PRUiTHPTpmrmel9Jqz9d6j2fQAAIDkfAMk1wl2yaX/qS3JzfQ5D7OpJtDcptvOWI81g9RXtcSmHLwlhzWqCItrLy/1Yq5y3mN7zUSTtjz2qLX5QHMAoAOS8w2QXCcY3ZW//zT9T2eyL73x9u+X0V1pr9x1Tyi9S8qMYa/VkJyHVFCLUM3cP8nZ94jOQPcMEwJAlwCS8w2QXCf4MvHEURioE09vUbl1V84smVbi3ZVKr5ZyxqEPE+9adOSyoiZw3KN35ksu3ZWWNYptHikAAAiQnG+A5DphNT5CgHtixr4e6/czDDGjrsEnnugr8cmZjvmYOg9njE5Fde+ee3TOXCuz28QTmGwCAN6A5HwDJNcJvksOAABgCSTnIyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkAAIBuAyTnGyA5AACAbgMk5xsgOQAAgG4DJOcbIDkA+P/bq0MCAAAAhkH9W7/ExQSUAGokdyM5gBrJ3UgOoEZyN5IDqJHcjeQAaiR3IzmAGsndSA6gRnI3kgOokdyN5ABqJHcjOYAayd1IDqBGcjeSA6iR3I3kAGokdyM5gBrJ3UgOoEZyN5IDqJHcjeQAaiR3IzmAGsndSA6gRnI3kgOokdyN5ABqJHcjOYAayd1IDqBmeUufsceueA4AAAAASUVORK5CYII=&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; width=&quot;400&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Screenshot 3: After adding Android SDK&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Hope this helps me the next time.</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/2875390623450426848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2014/05/adding-android-module-to-imported.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2875390623450426848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2875390623450426848'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2014/05/adding-android-module-to-imported.html' title='Adding android module to an imported android project in IntelliJ'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-7895481737575071771</id><published>2014-05-02T19:13:00.000+05:30</published><updated>2016-07-04T00:07:01.173+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Software"/><title type='text'>New version of Oracle Crystal Ball (Release 11.1.2.3.500) is out</title><content type='html'>Here is an excerpt from the official text:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Crystal Ball Users,&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;Release 11.1.2.3.500 is now Generally Available on the Oracle Software Delivery Cloud (eDelivery) and on the Oracle Technology Network. This release is available to new customers and customers under support.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;The following is a summary of what’s new in Crystal Ball 11.1.2.3.500:&lt;br /&gt;·         Correlation Definition Enhancements &lt;br /&gt;·         Bulk Constraint Handling for OptQuest &lt;br /&gt;·         Distribution Parameter Enhancements&lt;br /&gt;&lt;br /&gt;More information can be found in the online New Features Guide:&lt;div class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://docs.oracle.com/cd/E40248_01/epm.1112/cb_new_features_11123500/cb_new_features.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://docs.oracle.com/cd/E40248_01/epm.1112/cb_new_features_11123500/cb_new_features.html&lt;/a&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;In addition, I would like to remind everyone of the following resources:&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt; &amp;nbsp;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Oracle Crystal Ball home page: &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.oracle.com/us/products/applications/crystalball/overview/index.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.oracle.com/us/products/applications/crystalball/overview/index.html&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 10.0pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;                &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Oracle Technology Network:&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10.0pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.oracle.com/technetwork/middleware/crystalball/overview/index.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.oracle.com/technetwork/middleware/crystalball/overview/index.html&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 10.0pt;&quot;&gt;&lt;/span&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;CB Users LinkedIn Group:&lt;/div&gt;&lt;a href=&quot;http://www.linkedin.com/groups/Oracle-Crystal-Ball-120531?home=&amp;amp;gid=120531&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.linkedin.com/groups/Oracle-Crystal-Ball-120531?home=&amp;amp;gid=120531&lt;/a&gt; &lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;CB Solution Factory: &lt;a href=&quot;http://launch.oracle.com/&quot;&gt;http://launch.oracle.com&lt;/a&gt;  (Access URL/Page Token: cb4me) &lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;We appreciate your engagement and use of Crystal Ball in your businesses and organizations.&lt;/div&gt;&lt;/blockquote&gt;Enjoy!! </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/7895481737575071771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2014/05/new-version-of-oracle-crystal-ball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7895481737575071771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7895481737575071771'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2014/05/new-version-of-oracle-crystal-ball.html' title='New version of Oracle Crystal Ball (Release 11.1.2.3.500) is out'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-3104732286819165194</id><published>2014-03-27T14:25:00.000+05:30</published><updated>2016-07-04T00:14:00.412+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="GSON"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="MVEL"/><title type='text'>Parsing JSON strings in MVEL interactive shell</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;This is a pretty niche application - so I will get started without any introduction. Assumption here is that if you reach here, you are probably looking for this exact same thing in google or some other search engine.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I wanted to parse the following JSON string in MVEL interactive shell:&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;{&quot;f&quot;:{&quot;v&quot;:{&quot;dd&quot;:&quot;Windows-7~D~windows&quot;,&quot;tz&quot;:0,&quot;br&quot;:&quot;c~33.0.1750.154&quot;},&quot;p&quot;:{&quot;cp&quot;:&quot;http://247-demo.net/&quot;}},&quot;bsid&quot;:&quot;6fb4363f-5e06-4f10-b1ba-463a1f5e961f-1&quot;,&quot;it&quot;:0,&quot;vi&quot;:&quot;6fb4363f-5e06- 4f10-b1ba-463a1f5e961f&quot;,&quot;tseq&quot;:1,&quot;tp&quot;:&quot;1&quot;,&quot;vg&quot;:&quot;4&quot;,&quot;vt&quot;:&quot;1.3&quot;,&quot;as&quot;:&quot;1&quot;,&quot;idm&quot;:{&quot;lkp&quot;:&quot;email&quot;,&quot;lkv&quot;:&quot;myemail@email.com&quot;},&quot;vp&quot;:&quot;6.0&quot;,&quot;ec&quot;:&quot;10022&quot;,&quot;ti&quot;:&quot;t1&quot;,&quot;up&quot;:1395809903783,&quot;v&quot;:&quot;default&quot;,&quot;tnt&quot;:&quot;DEMO_C2C&quot;,&quot;rt&quot;:30.753,&quot;vc&quot;:&quot;v0.1&quot;,&quot;st&quot;:1395809906804,&quot;rv&quot;:69.864,&quot;bd&quot;:&quot;Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F33.0.1750.154%20Safari%2F537.36&quot;}&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I wanted to use the excellent &lt;a href=&quot;https://sites.google.com/site/gson/&quot; target=&quot;_blank&quot;&gt;Gson library&lt;/a&gt; from google. Here is a &lt;a href=&quot;http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html&quot; target=&quot;_blank&quot;&gt;link to the JavaDoc&lt;/a&gt; for the library. Of course, you can also use any other JSON parser library of your choice. I wanted an easy way to get to a value in a nested JSON string as shown above, e.g., &quot;f.v.br&quot;, and the JsonParser class in the Gson library is a great choice for that.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;First, in order to use Gson interactively from MVEL shell, we have to load both jars. As most of us MVEL users are aware, MVEL is notoriously poor on documentation - you have to scramble to do anything. Anyways, rants aside, here is how to load two jars and get the MVEL prompt:&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;$ java -cp &quot;gson-2.2.2.jar;mvel2-2.1.3.Final.jar&quot; org.mvel2.sh.Main&lt;br /&gt;&lt;br /&gt;MVEL-Shell (MVELSH)&lt;br /&gt;Copyright (C) 2010, Christopher Brock, The Codehaus&lt;br /&gt;Version 2.1.0&lt;br /&gt;&lt;br /&gt;Starting session...&lt;br /&gt;No config file found.&amp;nbsp; Loading default config.&lt;br /&gt;[01:28PM] mvel2$ import com.google.gson.JsonParser;&lt;br /&gt;class com.google.gson.JsonParser&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;This, of course, assumes that both the jars are located in the same folder from where the above command is executed. Once you are at the shell, it is reasonably straightforward. We will have to use JsonParser to parse the JSON string in a JsonObject, and then use get() calls to reach to the value. Here is the demo session. The output from the shell is in grey.&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;[01:29PM] mvel2$ a=&#39;{ &quot;f&quot;: { &quot;v&quot;: { &quot;dd&quot;: &quot;Windows-7~D~windows&quot;, &quot;tz&quot;: 0, &quot;br&quot;: &quot;c~33.0.1750.154&quot; }, &quot;p&quot;: { &quot;cp&quot;: &quot;http://247-demo.net/&quot; } }, &quot;bsid&quot;: &quot;6fb4363f-5e06-4f10-b1ba-463a1f5e961f-1&quot;, &quot;it&quot;: 0, &quot;vi&quot;: &quot;6fb4363f-5e06- 4f10-b1ba-463a1f5e961f&quot;, &quot;tseq&quot;: 1, &quot;tp&quot;: &quot;1&quot;, &quot;vg&quot;: &quot;4&quot;, &quot;vt&quot;: &quot;1.3&quot;, &quot;as&quot;: &quot;1&quot;, &quot;idm&quot;: { &quot;lkp&quot;: &quot;email&quot;, &quot;lkv&quot;: &quot;myemail@email.com&quot; }, &quot;vp&quot;: &quot;6.0&quot;, &quot;ec&quot;: &quot;10022&quot;, &quot;ti&quot;: &quot;t1&quot;, &quot;up&quot;: 1395809903783, &quot;v&quot;: &quot;default&quot;, &quot;tnt&quot;: &quot;DEMO_C2C&quot;, &quot;rt&quot;: 30.753, &quot;vc&quot;: &quot;v0.1&quot;, &quot;st&quot;: 1395809906804, &quot;rv&quot;: 69.864, &quot;bd&quot;: &quot;Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F33.0.1750.154%20Safari%2F537.36&quot; }&#39;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{ &quot;f&quot;: { &quot;v&quot;: { &quot;dd&quot;: &quot;Windows-7~D~windows&quot;, &quot;tz&quot;: 0, &quot;br&quot;: &quot;c~33.0.1750.154&quot; }, &quot;p&quot;: { &quot;cp&quot;: &quot;http://247-demo.net/&quot; } }, &quot;bsid&quot;: &quot;6fb4363f-5e06-4f10-b1ba-463a1f5e961f-1&quot;, &quot;it&quot;: 0, &quot;vi&quot;: &quot;6fb4363f-5e06- 4f10-b1ba-463a1f5e961f&quot;, &quot;tseq&quot;: 1, &quot;tp&quot;: &quot;1&quot;, &quot;vg&quot;: &quot;4&quot;, &quot;vt&quot;: &quot;1.3&quot;, &quot;as&quot;: &quot;1&quot;, &quot;idm&quot;: { &quot;lkp&quot;: &quot;email&quot;, &quot;lkv&quot;: &quot;&lt;/span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;myemail@email.com&quot; }, &quot;vp&quot;: &quot;6.0&quot;, &quot;ec&quot;: &quot;10022&quot;, &quot;ti&quot;: &quot;t1&quot;, &quot;up&quot;: 1395809903783, &quot;v&quot;: &quot;default&quot;, &quot;tnt&quot;: &quot;DEMO_C2C&quot;, &quot;rt&quot;: 30.753, &quot;vc&quot;: &quot;v0.1&quot;, &quot;st&quot;: 1395809906804, &quot;rv&quot;: 69.864, &quot;bd&quot;: &quot;Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F33.0.1750.154%20Safari%2F537.36&quot; }&lt;/span&gt;&lt;br /&gt;[01:40PM] mvel2$ p = new JsonParser();&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;com.google.gson.JsonParser@133e8c9&lt;/span&gt;&lt;br /&gt;[01:40PM] mvel2$ e = p.parse(a);&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&quot;f&quot;:{&quot;v&quot;:{&quot;dd&quot;:&quot;Windows-7~D~windows&quot;,&quot;tz&quot;:0,&quot;br&quot;:&quot;c~33.0.1750.154&quot;},&quot;p&quot;:{&quot;cp&quot;:&quot;http://247-demo.net/&quot;}},&quot;bsid&quot;:&quot;6fb4363f-5e06-4f10-b1ba-463a1f5e961f-1&quot;,&quot;it&quot;:0,&quot;vi&quot;:&quot;6fb4363f-5e06- 4f10-b1ba-463a1f5e961f&quot;,&quot;tseq&quot;:1,&quot;tp&quot;:&quot;1&quot;,&quot;vg&quot;:&quot;4&quot;,&quot;vt&quot;:&quot;1.3&quot;,&quot;as&quot;:&quot;1&quot;,&quot;idm&quot;:{&quot;lkp&quot;:&quot;email&quot;,&quot;lkv&quot;:&quot;&lt;/span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;myemail@email.com&quot;},&quot;vp&quot;:&quot;6.0&quot;,&quot;ec&quot;:&quot;10022&quot;,&quot;ti&quot;:&quot;t1&quot;,&quot;up&quot;:1395809903783,&quot;v&quot;:&quot;default&quot;,&quot;tnt&quot;:&quot;DEMO_C2C&quot;,&quot;rt&quot;:30.753,&quot;vc&quot;:&quot;v0.1&quot;,&quot;st&quot;:1395809906804,&quot;rv&quot;:69.864,&quot;bd&quot;:&quot;Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F33.0.1750.154%20Safari%2F537.36&quot;}&lt;/span&gt;&lt;br /&gt;[01:47PM] mvel2$ e.getClass()&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;class com.google.gson.JsonObject&lt;/span&gt;&lt;br /&gt;[01:49PM] mvel2$ e.get(&quot;f&quot;).get(&quot;v&quot;).get(&quot;br&quot;)&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&quot;c~33.0.1750.154&quot;&lt;/span&gt;&lt;/blockquote&gt;That is pretty much it - parsing a nested JSON string using MVEL shell. </content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/3104732286819165194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2014/03/parsing-json-strings-in-mvel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/3104732286819165194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/3104732286819165194'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2014/03/parsing-json-strings-in-mvel.html' title='Parsing JSON strings in MVEL interactive shell'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-2337666958922505990</id><published>2013-08-23T12:12:00.000+05:30</published><updated>2016-07-04T00:07:01.195+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><title type='text'>Moving on from Oracle Crystal Ball development team</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;As of August 16th, 2013, I am not part of the Oracle Crystal Ball development team any more. For questions related to Oracle Crystal Ball, please post in either our &lt;a href=&quot;http://www.linkedin.com/groups?home=&amp;amp;gid=120531&amp;amp;trk=anet_ug_hm&quot; target=&quot;_blank&quot;&gt;LinkedIn group&lt;/a&gt;, or our &lt;a href=&quot;http://tech.groups.yahoo.com/group/cbug2/&quot; target=&quot;_blank&quot;&gt;Yahoo group&lt;/a&gt; (but not both) - and the Crystal Ball community (of which I will continue to be a part) and the organization should be able to help you out.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Personally, I intend to continue my journey in Monte Carlo simulation, stochastic optimization and time-series forecasting, and hope to keep posting on some topics related to Crystal Ball as well, as time permits.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I will miss being part of the Oracle Crystal Ball development team.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/2337666958922505990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/08/moving-on-from-oracle-crystal-ball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2337666958922505990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2337666958922505990'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/08/moving-on-from-oracle-crystal-ball.html' title='Moving on from Oracle Crystal Ball development team'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-2106968459921449689</id><published>2013-07-29T09:28:00.000+05:30</published><updated>2016-07-04T00:14:00.436+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="editor"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>In search of a good code editor</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Every coder worth his/her salt is always looking for a better code editor. Why? Because, there is always something in a code editor you are currently using (or, are forced to use) that ... you don&#39;t like, or doesn&#39;t work, or is plain broken. But, why stick with it then? Well, might be for variety of reasons:&amp;nbsp;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Your organization mandates using it, and everyone in the team uses it&lt;/li&gt;&lt;li&gt;It is still the editor with least amount of nuisance&lt;/li&gt;&lt;li&gt;The editor has something special about certain software project you are working on&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Happens with everyone. Happens with me. Here are my set of editors:&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Visual Studio&lt;/li&gt;&lt;ul&gt;&lt;li&gt;C#, .NET&lt;/li&gt;&lt;li&gt;Javascript, HTML5 (mobile coding)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Eclipse&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Java&lt;/li&gt;&lt;li&gt;Perl (with the EPIC plugin)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.pspad.com/&quot; target=&quot;_blank&quot;&gt;PSPad&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;SQL&lt;/li&gt;&lt;li&gt;Text files&lt;/li&gt;&lt;li&gt;Everything else.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The features I value in a code editor, in no specific preference, are color coding/syntax highlighting, auto-completion of symbol names, method names and properties, code folding (in regions), line wrapping and split windows. I think Visual Studio does all this things perfectly, and would have been pathway to coding nirvana, had it not for the two problems:&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;The latest and greatest of it costs money (I know, there is an express version, and I think that is really really good)&lt;/li&gt;&lt;li&gt;It is not general purpose for all languages that I use.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The last one is big, so even if I have VS open almost all the time, I sill have to open bunch of other editors as well to get stuff done. Eclipse, on the other hand, doesn&#39;t give me that feel. It is very powerful and free, but always feels a little sluggish, weird, and what not. Eclipse also does not have auto-completion of symbol names (without doing CTRL+SPACE), which I find very helpful. But I stick with it, because it has special tooling for android development.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;PSPad, on the lower end, has been reasonably good to me. It doesn&#39;t have any auto-completion or code folding, but the files I work with in PSPad, I mostly don&#39;t need those features. I needed those features for perl, which is why moved perl from PSPad to Eclipse.&amp;nbsp; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;u&gt;Courting with Geany&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A few months back, I uninstalled PSPad after using it for more than five or so years, because I discovered another editor called &lt;a href=&quot;http://www.geany.org/&quot; target=&quot;_blank&quot;&gt;Geany&lt;/a&gt;. I read about it, installed it and it looked good. Not only was it small and fast, but it seemed to have all the features I need. I was even thinking I would be able to bring back perl, and even java [*shiver*] (with android). If I can replace Eclipse and PSPad with Geany - that would itself be pretty cool.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Unfortunately, the dating period wasn&#39;t too long. Here are a few reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The editor is based on GTK+. That means, in order to install it, you will have to install GTK+ first. I don&#39;t like to install too many things, and this didn&#39;t go well. Note: this wasn&#39;t a deal-breaker in itself, but accompanied with other ones, it was.&lt;/li&gt;&lt;li&gt;The autocomplete feature of Perl or java wasn&#39;t a true autocomplete - if you press CTRL+SPACE after typing one or ore letters, the editor would show any token in the file starting with those characters. It works as autocomplete, and is better than nothing, but isn&#39;t the same as I understand from VS.&lt;/li&gt;&lt;li&gt;Finally, interface was a bit old style ... for my taste anyways.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;Next in Line: Notepad++&lt;/u&gt;&lt;br /&gt;So, when I got my new laptop, I decided to look for another editor yet again. This time it was the turn for &lt;a href=&quot;http://notepad-plus-plus.org/&quot; target=&quot;_blank&quot;&gt;Notepad++&lt;/a&gt;. The feature set looked good (yes, it also supports autocomplete without having to press any extra keys), the interface looks good, so let&#39;s see how this goes.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Let me finish this post with some links to a few posts from coding horror by Jeff Atwood. If you are into programming, read his blog.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/2008/07/the-problem-with-code-folding.html&quot; target=&quot;_blank&quot;&gt;The problem with code folding&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html&quot; target=&quot;_blank&quot;&gt;Visualizing code to fail faster&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/2005/07/code-colorizing-and-readability.html&quot;&gt;Code Colorizing and Readability&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/files/pragmatic%20quick%20reference.htm&quot; target=&quot;_blank&quot;&gt;The Pragmatic Programmer Quick Reference Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Update (3rd Sep, 2015): After almost two years of publishing this post, I am still using Notepad++, and I have to say that I am very happy using it. If you have not tried this editor (on Windows) yet, check it out. &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/2106968459921449689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/07/in-search-of-good-code-editor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2106968459921449689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/2106968459921449689'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/07/in-search-of-good-code-editor.html' title='In search of a good code editor'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-8784967423599567551</id><published>2013-05-20T23:17:00.000+05:30</published><updated>2016-07-04T00:07:01.212+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Example models"/><category scheme="http://www.blogger.com/atom/ns#" term="Simulation"/><category scheme="http://www.blogger.com/atom/ns#" term="Soccer"/><category scheme="http://www.blogger.com/atom/ns#" term="Sports"/><title type='text'>Simulation Modeling for football (soccer) games</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;In the last few weeks, I have come across two posts and discussions on modeling football (soccer) games with Monte Carlo simulation. Thought it might be interesting for our readers. Yes, I am more used to calling this game football, but let&#39;s just skip that part, shall we?&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The first one is a blog post detailing a simple model which tries to simulate the number of goals scored by each competing team in a match. The blog discusses quite a bit on the inner details of finding out distribution parameters using optimization, which may not be that relevant, but the post is interesting. Find the &lt;a href=&quot;http://www.science4all.org/le-nguyen-hoang/a-model-of-football-games/&quot; target=&quot;_blank&quot;&gt;blog post here&lt;/a&gt;. The post models the world cup final of 2011. &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The second model is from our own Dave Hammal, who has posted the model in our &lt;a href=&quot;http://www.linkedin.com/groups?home=&amp;amp;gid=120531&amp;amp;trk=anet_ug_hm&quot; target=&quot;_blank&quot;&gt;LinkedIn group&lt;/a&gt;. He models the ongoing English Premier league, and predicts the match-by-match results. To access the post and the model, &lt;a href=&quot;http://lnkd.in/PkdY8U&quot; target=&quot;_blank&quot;&gt;use this direct link&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Both models are similar, in that, they try to use discrete distributions to model the number of goals that are going to be scored in the game, and they find out the parameters of the discrete distribution from the past data for that team. The first post also discusses a few interesting improvements to the model. Note that, the first post is a static analysis of an old event (something similar to what I mentioned about the &lt;a href=&quot;http://oraclecb.blogspot.com/2011/04/icc-world-cup-2011-statistical-analysis.html&quot; target=&quot;_blank&quot;&gt;World Cup Cricket final in this post&lt;/a&gt;), whereas the model in the second post is dynamic, in that the model predictions are updated with the new data as the league progresses.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Finally, here are two websites (I am sure there are more of these), which claim to contain stats related to soccer games: &lt;a href=&quot;http://www.squawka.com/&quot; target=&quot;_blank&quot;&gt;Squawka&lt;/a&gt; [link to &lt;a href=&quot;http://techcrunch.com/2012/09/25/ad-agency-bbh-grabs-significant-share-of-sports-companion-web-app-squawka/&quot; target=&quot;_blank&quot;&gt;TechCrunch coverage&lt;/a&gt;] and &lt;a href=&quot;http://www.ftbpro.com/&quot; target=&quot;_blank&quot;&gt;FTBPro&lt;/a&gt; [link to &lt;a href=&quot;http://techcrunch.com/2013/05/08/soccer-apps-get-hot-as-ftbpro-secures-5-8m-to-go-global-while-the-football-app-inks-e10m-from-earlybird/&quot; target=&quot;_blank&quot;&gt;TechCrunch coverage&lt;/a&gt;]. None of these websites contain predictive modeling though, just stats and user generated contents. &amp;nbsp; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/8784967423599567551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/05/simulation-modeling-for-football-soccer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/8784967423599567551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/8784967423599567551'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/05/simulation-modeling-for-football-soccer.html' title='Simulation Modeling for football (soccer) games'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-3353694297592257739</id><published>2013-05-02T04:03:00.000+05:30</published><updated>2016-07-04T00:07:01.231+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Software"/><title type='text'>New version of Oracle Crystal Ball (Release 11.1.2.3.000) is out</title><content type='html'>Here is an excerpt from the official text:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;i&gt;Crystal Ball Users,&lt;br /&gt;&lt;br /&gt;Crystal Ball 11.1.2.3 is released! The following is a summary of what’s new in Crystal Ball 11.1.2.3:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Redesigned Tornado Analysis Tool&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Integrated Correlation Matrix Tool&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Addition to Crystal Ball Developer Kit&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Expanded OptQuest Efficient Frontier Results View&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Support for Microsoft Excel 2013&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Support for Microsoft Windows 8&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Localization into Additional Languages&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Documentation Now Certified on Apple Mobile Devices&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;More information can be found in the online New Features Guide: &lt;a href=&quot;http://docs.oracle.com/cd/E40248_01/epm.1112/cb_new_features/cb_new_features.html&quot;&gt;http://docs.oracle.com/cd/E40248_01/epm.1112/cb_new_features/cb_new_features.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A trial version is downloadable from the Oracle Technology Network: &lt;a href=&quot;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&quot;&gt;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have not already done so, I also recommend visiting the Crystal Ball Solution Factory. Here you will find useful information about new releases in addition to presentations, discussions, and resources that cover different applications of Crystal Ball. &lt;br /&gt;&lt;br /&gt;Crystal Ball Solution Factory (&lt;a href=&quot;http://launch.oracle.com/&quot;&gt;http://launch.oracle.com&lt;/a&gt; Access URL/Page Token: cb4me)&lt;br /&gt;&lt;br /&gt;We appreciate your engagement and use of Crystal Ball in your business.&lt;/i&gt;&lt;/blockquote&gt;If there are questions about the  availability of the software or any other aspect, please get in touch.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A clarification/update&lt;/b&gt;: The link I posted for downloading the new version of CB is not yet active - sorry for the inconvenience. Please use the following sites:&lt;br /&gt;&lt;br /&gt;- If you want to download the trial version, please use: &lt;a href=&quot;http://www.oracle.com/technetwork/middleware/epm/downloads/crystal-ball-1112x-1939011.html&quot;&gt;http://www.oracle.com/technetwork/middleware/epm/downloads/crystal-ball-1112x-1939011.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Upgrades are only available for customers on support. In those cases customers should use the Oracle Software Delivery Cloud (&lt;a href=&quot;https://edelivery.oracle.com/&quot;&gt;https://edelivery.oracle.com/&lt;/a&gt;) to download. &lt;br /&gt;&lt;br /&gt;Update (05/02/2013): Updated with more download links.&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/3353694297592257739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/05/new-version-of-oracle-crystal-ball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/3353694297592257739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/3353694297592257739'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/05/new-version-of-oracle-crystal-ball.html' title='New version of Oracle Crystal Ball (Release 11.1.2.3.000) is out'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-6461455584916924731</id><published>2013-04-16T22:01:00.000+05:30</published><updated>2016-07-04T00:07:01.277+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Presentation"/><title type='text'>Demo video for Oracle Crystal Ball</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;We have a new demo video out, and it looks fantastic. This would be a great way to introduce someone to the methodology of &quot;thinking in ranges&quot; espoused by Oracle Crystal Ball. Available from &lt;a href=&quot;http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Eoracle%2Ecom%2Fgo%2F%3F%26Src%3D7618009%26Act%3D24%26pcode%3DWWMK12041343MPP024&amp;amp;urlhash=EaZ2&amp;amp;_t=tracking_anet&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt;, it needs a quick registration. Enjoy !!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/6461455584916924731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/04/demo-video-for-oracle-crystal-ball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6461455584916924731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/6461455584916924731'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/04/demo-video-for-oracle-crystal-ball.html' title='Demo video for Oracle Crystal Ball'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-519538240887266018</id><published>2013-04-16T08:58:00.000+05:30</published><updated>2016-07-04T00:07:01.292+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Example models"/><category scheme="http://www.blogger.com/atom/ns#" term="Presentation"/><category scheme="http://www.blogger.com/atom/ns#" term="Simulation"/><title type='text'>Monte Carlo simulation example in transportation</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I used to work &lt;span style=&quot;font-family: Calibri;&quot;&gt;on &lt;/span&gt;transportation services procurement auction in my doctoral days. Since graduation, I have moved away from that sector. But, recently I had a chance to work on a technical research presentation in the transportation sector.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In my dissertation, I mostly used mixed integer programming formulations for solving bidding problems. Although there was a little bit of predictive analytics in the model, I did not really explore much of the Monte Carlo simulation aspect of it, except generating random numbers from normal distributions. This time though, I was able to use MC simulation quite a bit. The problem was on determining the safety stocks of tractors/trailers/drivers for a small trucking company which wishes to maintain certain service level.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Although, network is an important part of transportation, I sidestepped that aspect by aggregating on the lanes in the transportation network. Agreed, that makes the model somewhat weak, but in my opinion, the model is still useful enough to get some mileage out of it.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Following is the title and abstract of the presentation. Please get in touch using the comments section if you are working on something similar.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Title: &lt;i&gt;Determining Safety Stock for a Small Trucking Operation&lt;/i&gt;&lt;br /&gt;      Abstract: &lt;i&gt;In this presentation, we will determine the safety stock of trucks       required by a small trucking operation to maintain a certain       service level. We will start off with a simple model and use Monte       Carlo simulation and stochastic optimization to determine the       safety stock. Next we will extend the model to include more       realistic situations and show that our approach still provides a       fast, efficient and reliable way to calculate the variables and       statistics of interest in the model.&lt;/i&gt;&lt;br /&gt;Presentation: &lt;a href=&quot;https://sites.google.com/site/samikr/home/research/Determining%20Safety%20Stock%20for%20a%20Small%20Trucking%20Operation.pdf?attredirects=0&amp;amp;d=1&quot; target=&quot;_blank&quot;&gt;Available here&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;My Ph.D. dissertation is also available &lt;a href=&quot;https://sites.google.com/site/samikr/home/research&quot; target=&quot;_blank&quot;&gt;on this page&lt;/a&gt;, just scroll to the 2006 entry.&amp;nbsp; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/519538240887266018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/04/monte-carlo-simulation-example-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/519538240887266018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/519538240887266018'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/04/monte-carlo-simulation-example-in.html' title='Monte Carlo simulation example in transportation'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-5163033239350399128</id><published>2013-03-13T04:54:00.000+05:30</published><updated>2016-07-04T00:07:01.320+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Crystal Ball UI"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips and tricks"/><title type='text'>Displaying statistic in assumption cells</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;This question often comes up in group discussions and support questions: although the assumptions and forecast cells in an Oracle Crystal Ball spreadsheet model change values while running a simulation, they revert back to the original values at the end of simulation. This often confuses new users. In this post, I will discuss the reasoning and some options to change this behavior (partially). For an example of such discussion, &lt;a href=&quot;http://lnkd.in/26Me3h&quot; target=&quot;_blank&quot;&gt;check this question&lt;/a&gt; in our &lt;a href=&quot;http://www.linkedin.com/groups?home=&amp;amp;gid=120531&amp;amp;trk=anet_ug_hm&quot; target=&quot;_blank&quot;&gt;LinkedIn group&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;First off, this is the default behavior of the software, and there is an explanation for this behavior. &lt;span class=&quot;comment-body&quot; data-li-comment-text=&quot;&quot;&gt;We can think about it this  way: a simulation is a series of automated what-if analysis. We are  trying out various input values in the assumption cells and then  recording the output values from the forecast cell(s). The objective of the  simulation is to get some statistical understanding of the output  values (your forecasts) for a range of input values (your assumptions). &lt;br /&gt;&lt;br /&gt;At the end of simulation, we are done with the series of what-if  analysis, and we just return back to the original value that was there  in the cells before we started the analysis. We consider these  original/starting values as base-case scenario. Since the modeler (you,  in this case) have started off with these values, that is where we  return to.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;But one can choose to see a different statistic in the assumption cells, extracted from the simulation results, after the simulation is complete. To do so, open the &quot;Cell Preferences&quot; dialog from the ribbon (it is the last one in the column left to the &quot;Start&quot; button, see Figure 1 below). There, choose your preferred statistic you wish to see after a simulation run for the assumptions in your model and apply this setting to your model using the &#39;Apply To..&#39; button. Since the forecast cells are linked to one or more assumption cells by a formula,  after the simulation they will automatically reflect the calculated values for the chosen statistic displayed in the assumption cells.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-cKMYg-qfD5I/UT-z7UM43dI/AAAAAAAAA9k/s_lsoI057rQ/s1600/cell+prefs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-cKMYg-qfD5I/UT-z7UM43dI/AAAAAAAAA9k/s_lsoI057rQ/s1600/cell+prefs.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1: Cell Preferences&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;For example, if you have chosen to  show the mean statistic in the assumption cells after the simulation, the  forecast cells will show the calculated value using the assumption  means. Note that, depending on the formula, this final value shown in  the forecast cell may or may not match with the corresponding statistic shown in&amp;nbsp; the assumption cell (mean in this case). If the forecast is non-linearly related to the assumption cells (i.e., the formula used in the forecast cell has nonlinear components like square, square root, log etc.), then the forecast mean would be different from the displayed value.&lt;br /&gt;&lt;br /&gt;Note, it is not possible to show certain statistic for a few assumption cells and certain other statistic or none for a few other ones, as that would lead to display problems. The same display preference has to be applied to all assumptions in the model.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Update (3/15/2013): Corrected statement.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/5163033239350399128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/03/displaying-statistic-in-assumption-cells.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5163033239350399128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5163033239350399128'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/03/displaying-statistic-in-assumption-cells.html' title='Displaying statistic in assumption cells'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-cKMYg-qfD5I/UT-z7UM43dI/AAAAAAAAA9k/s_lsoI057rQ/s72-c/cell+prefs.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-5820705755903177747</id><published>2013-02-06T23:35:00.000+05:30</published><updated>2013-02-06T23:35:10.725+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="programming language"/><title type='text'>A praise on C#</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;I am sure that there is no dearth of praises for the C# programming language, and you can say that I am a fan on the outset, but a paragraph I read today seem to summarize aspects of C# quite nicely. It was &lt;a href=&quot;http://www.drdobbs.com/testing/testing-python-and-c-code/&quot; target=&quot;_blank&quot;&gt;an article on testing C#&lt;/a&gt; (and Python) code appearing on drdobbs.com by Gigi Sayfan. The pragraph is quoted below:&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;C# is a wonderful programming language. It started out as a better Java,  and in each revision, it has added more and more good stuff (generics,  anonymous functions, attributes, LINQ, async support) with great  balance. For some reason (great language designers?), the power and  richness of C# never gave me a feeling of bloat  like other languages  do. When you throw in the .NET framework and Visual Studio, you get a  superb development and runtime environment.&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The only thing the author is missing here is mentioning the &lt;a href=&quot;http://www.mono-project.com/Main_Page&quot; target=&quot;_blank&quot;&gt;Mono engine&lt;/a&gt;, which makes C# cross-platform as well in the same sense as java is cross-platform, and that makes it really appealing. I hope to continue coding in C# for years to come.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/5820705755903177747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/02/a-praise-on-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5820705755903177747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5820705755903177747'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/02/a-praise-on-c.html' title='A praise on C#'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-7696460251016229269</id><published>2013-01-30T23:23:00.000+05:30</published><updated>2016-07-04T00:07:01.358+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Software"/><title type='text'>Try Oracle Crystal Ball Free for 30 Days</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Breaking my long-time silence (have been really busy developing the next release) to bring a nice news. We have changed our software trial policy - our evaluation license now allows you to try out Oracle Crystal Ball for thirty days. We definitely hope that you are going to come back for more after the end of your month-long trial :-)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here is the direct link for our download page: [&lt;a href=&quot;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&quot;&gt;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&lt;/a&gt;]&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Enjoy.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/7696460251016229269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2013/01/try-oracle-crystal-ball-free-for-30-days.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7696460251016229269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/7696460251016229269'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2013/01/try-oracle-crystal-ball-free-for-30-days.html' title='Try Oracle Crystal Ball Free for 30 Days'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-5441419702570903908</id><published>2012-06-04T05:08:00.000+05:30</published><updated>2016-07-04T00:14:00.478+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="google docs"/><category scheme="http://www.blogger.com/atom/ns#" term="web form"/><title type='text'>Embedding a google drive form in your website</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;If you do not want to embed the complete google form iframe in your webpage, you can bypass that and have some simple code instead. The following lines show a way where I create the input field myself and set up everything, but the response gets stored in a google drive spreadsheet.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;form method=&quot;post&quot; action=&quot;https://docs.google.com/spreadsheet/formResponse?formkey=xxxx&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;span style=&quot;font: 16px calibri&quot;&amp;gt;Enter email: &amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;input type=&quot;text&quot; name=&quot;entry.0.single&quot; value=&quot;&quot; style=&quot;font: 16px calibri&quot; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;input type=&quot;submit&quot; value=&quot;Submit Email&quot; style=&quot;font: 16px calibri&quot; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;Check it out - can be useful in certain circumstances.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here is a slightly longer version, with a form having four fields, where I take care of the form submission myself, using jQuery and jQuery Mobile (slightly dated version of both - for reference only). The jQuery .ajax(..) call is used here - works great. Note: do not use dataType: &quot;jsonp&quot; while POST-ing, since the call returns a complete HTML page which we have no use and can&#39;t process directly. While developing, use a tool like Firebug, so you are sure what is getting in and what is getting out.&lt;/div&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;ConferenceToGo&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta charset=&quot;utf-8&quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Load all required scripts. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;app-request&quot; data-role=&quot;page&quot; class=&quot;backdrop&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function formSubmit()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(&quot;Submitting form&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Collect form data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var formData =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;entry.0.single&quot; : $(&quot;#entry_0&quot;, $.mobile.activePage).val(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;entry.4.group&quot; : $(&quot;#req_form&quot;, $.mobile.activePage).find(&quot;input[type=&#39;radio&#39;][name=&#39;entry.4.group&#39;]:checked&quot;).val(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;pageNumber&quot; : 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;backupCache&quot; : &quot;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show the loading image.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#req_form&quot;, $.mobile.activePage).html(&quot;&amp;lt;img src=&#39;../common/images/progressbar.gif&#39; /&amp;gt;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.ajax(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: &quot;POST&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: &quot;https://docs.google.com/spreadsheet/formResponse?formkey=xxxx&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data: formData,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: function (data)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#req_form&quot;).html(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Thanks for your interest!! We will be in touch shortly.&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Regards,&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;ConferenceToGo Team&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failure: function (data)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#req_form&quot;).html(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Sorry !! Couldn&#39;t send your request.&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Can you please try again?&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Regards,&amp;lt;br /&amp;gt;&quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;ConferenceToGo Team&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-role=&quot;header&quot; style=&quot;height: 45px&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;#&quot; class=&quot;ui-btn-left top-btn&quot; data-icon=&quot;back&quot; data-rel=&quot;back&quot;&amp;gt;Back&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;!-- /header --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-role=&quot;content&quot; style=&quot;padding-top:5px;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2&amp;gt;ConferenceToGo for your Conference&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id=&quot;req_form&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for your interest in the ConferenceToGo app. Please fill out this short &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; form and one of our team members will get back to you shortly.&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style=&quot;color:Red&quot;&amp;gt;* Required&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form data-ajax=&quot;false&quot; onsubmit=&quot;formSubmit(); return false;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;text&quot; name=&quot;entry.0.single&quot; placeholder=&quot;Your Name (*)&quot; id=&quot;entry_0&quot; value=&quot;&quot; required /&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/blockquote&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fieldset data-role=&quot;controlgroup&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;legend&amp;gt;Typical number of attendees:&amp;lt;/legend&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;group_4_1&quot;&amp;gt;Less than 500&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;radio&quot; name=&quot;entry.4.group&quot; value=&quot;Less than 500&quot; id=&quot;group_4_1&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;group_4_2&quot;&amp;gt;500 to 1000&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;radio&quot; name=&quot;entry.4.group&quot; value=&quot;500 to 1000&quot; id=&quot;group_4_2&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;group_4_3&quot;&amp;gt;1000 to 5000&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;radio&quot; name=&quot;entry.4.group&quot; value=&quot;1000 to 5000&quot; id=&quot;group_4_3&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=&quot;group_4_4&quot;&amp;gt;More than 5000&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;radio&quot; name=&quot;entry.4.group&quot; value=&quot;More than 5000&quot; id=&quot;group_4_4&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fieldset&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; data-inline=&quot;true&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style=&quot;font-size:small&quot;&amp;gt;Powered by &amp;lt;a href=&quot;http://docs.google.com&quot; target=&quot;_new&quot;&amp;gt;Google Docs&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;!-- /content --&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;!-- /page --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;Update (3/15/2013): Added a longer example.</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/5441419702570903908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2012/06/embedding-google-drive-form-in-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5441419702570903908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5441419702570903908'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2012/06/embedding-google-drive-form-in-your.html' title='Embedding a google drive form in your website'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-1621274132445448928</id><published>2012-05-24T06:42:00.000+05:30</published><updated>2016-07-04T00:07:01.376+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Software"/><title type='text'>New version of Oracle Crystal Ball (Release 11.1.2.2.000) is out</title><content type='html'>Here is an excerpt from the official text:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;Crystal Ball Users,&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;Crystal Ball 11.1.2.2 is released! The following is a summary of what’s new in Crystal Ball 11.1.2.2:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Grouped Assumptions in Sensitivity Charts&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Data Filtering When Fitting Distributions&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Parameter Edits When Fitting Distributions&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Expanded Distribution Parameters&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Predictor Parallelization&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Localization into Additional Languages (Japanese, Spanish, French, German, Portuguese)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br /&gt;More information can be found in the online New Features Guide: &lt;a href=&quot;http://download.oracle.com/docs/cd/E17236_01/epm.1112/cb_new_features/cb_new_features.html&quot;&gt;http://download.oracle.com/docs/cd/E17236_01/epm.1112/cb_new_features/cb_new_features.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A trial version is downloadable from the Oracle Technology Network: &lt;a href=&quot;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&quot;&gt;http://www.oracle.com/technetwork/middleware/crystalball/downloads/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have not already done so, I also recommend visiting the Crystal Ball Solution Factory. Here you will find useful information about new releases in addition to presentations, discussions, and resources that cover different applications of Crystal Ball. &lt;/i&gt; &lt;i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://launch.oracle.com/?cb4me&quot;&gt;Crystal Ball Solution Factory&lt;/a&gt; (&lt;a href=&quot;http://launch.oracle.com/&quot;&gt;http://launch.oracle.com&lt;/a&gt;   Access URL/Page Token: cb4me)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;We appreciate your engagement and use of Crystal Ball in your business.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I will have a series of posts on some of the features in the days ahead. If there are questions about the  availability of the software or any other aspect, please get in touch.&lt;/div&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/1621274132445448928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2012/05/new-version-of-oracle-crystal-ball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/1621274132445448928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/1621274132445448928'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2012/05/new-version-of-oracle-crystal-ball.html' title='New version of Oracle Crystal Ball (Release 11.1.2.2.000) is out'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-5092201407309262960</id><published>2012-04-29T03:26:00.000+05:30</published><updated>2016-07-04T00:14:00.512+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="installation"/><category scheme="http://www.blogger.com/atom/ns#" term="Installatron"/><category scheme="http://www.blogger.com/atom/ns#" term="restore"/><category scheme="http://www.blogger.com/atom/ns#" term="Softaculous"/><category scheme="http://www.blogger.com/atom/ns#" term="web hosting"/><title type='text'>Restoring between Installatron and Softaculous</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Recently I changed my webhosts. On the positive side, both hosts use DirectAdmin based control panel, and have the same version of DirectAdmin software. But apparently, that was not enough. On my old hosting account, I had an installation of &lt;a href=&quot;http://www.mantisbt.org/&quot; target=&quot;_blank&quot;&gt;Mantis (a bug tracking software)&lt;/a&gt;, which was installed through an automated installation system called Installatron. The new host doesn&#39;t support Installatron, they only support another software installation system called Softaculous.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Softaculous has a page which talks about &lt;a href=&quot;http://www.softaculous.com/docs/How_to_Restore_a_Backup_on_a_New_Server&quot; target=&quot;_blank&quot;&gt;restoring the backup&lt;/a&gt; of an installation from a downloaded backup file. Unfortunately, these instructions do not work when the backup is made through Installatron installation system. But, irrespective of which installation system is used to install Mantis, the database structure of Mantis remains the same (if both installation systems install same version of Mantis). And since Mantis is completely database driven, it is possible to restore a Mantis installation by restoring the database. This is what I resorted to at the end.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Using the DirectAdmin control panel of the old hosting account, I downloaded the database backup corresponding to the Mantis installation. The database backup download link can be found at DirectAdmin control panel -&amp;gt; Your Account -&amp;gt; MySQL management. The screenshot below shows the links to backup the database downloads.&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-B6Nknkcnqw8/T5mXADKf0OI/AAAAAAAAA7o/U_m03hkyWJc/s1600/DirectAdmin.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-B6Nknkcnqw8/T5mXADKf0OI/AAAAAAAAA7o/U_m03hkyWJc/s1600/DirectAdmin.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Screenshot for downloading and uploading database backups&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;After I saved the downloaded backup in my computer, I used the DirectAdmin control panel of the new hosting account to upload the backup to the database corresponding to the Mantis installation there. Note: You have to have a new installation of Mantis in the new hosting account in order for this to work.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Once the database backup was uploaded and the data was restored, I got back all my data with the new hosting provider. Hope this helps someone.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/5092201407309262960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2012/04/restoring-between-installatron-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5092201407309262960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/5092201407309262960'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2012/04/restoring-between-installatron-and.html' title='Restoring between Installatron and Softaculous'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-B6Nknkcnqw8/T5mXADKf0OI/AAAAAAAAA7o/U_m03hkyWJc/s72-c/DirectAdmin.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4007926344299611504.post-785369698154138782</id><published>2012-03-23T04:41:00.000+05:30</published><updated>2013-02-06T23:36:49.224+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="natural language processing"/><category scheme="http://www.blogger.com/atom/ns#" term="NLP"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><category scheme="http://www.blogger.com/atom/ns#" term="programming language"/><category scheme="http://www.blogger.com/atom/ns#" term="Text mining"/><title type='text'>Text mining with perl: Resources</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;One of the exciting area of the analytics movement is text mining, where you mine relevant information from unstructured text. This is, hence, different from data mining, where you mine data for patterns. It is generally accepted that text mining is considerably harder than data mining, mostly because the source is unstructured. but the benefits are often substantial - for example, there is an investment fund which uses analysis of &lt;a href=&quot;http://www.nytimes.com/2010/12/23/business/23trading.html&quot; target=&quot;_blank&quot;&gt;twitter feeds for predicting stock movement&lt;/a&gt;. This &lt;a href=&quot;http://quant.stackexchange.com/q/2311/1442&quot; target=&quot;_blank&quot;&gt;question on a quant Q&amp;amp;A site&lt;/a&gt; discusses a few similar applications. This is just one example application. Another example is IBM&#39;s Watson, who famously won the jeopardy in February of 2011.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;Text mining and natural language processing&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Text mining has close association with natural language processing (NLP). Since you have to search for information in unstructured text which are mostly text in natural languages, you end up using quite a few of the algorithms used in NLP. Recently, I have been moving a bit deeper into text mining and NLP, for a side project of mine (maybe a later  blog post, but let me tell you, it is not for investment purposes :-).&amp;nbsp; Text mining and NLP is a good fit  for me (I am a developer of a Monte  Carlo simulation software called &lt;a href=&quot;http://www.oracle.com/us/products/applications/crystalball/index.html&quot; target=&quot;_blank&quot;&gt;Oracle Crystal Ball&lt;/a&gt; in my day job) - they use a lot of probabilities and modeling, similar to what I  do for Monte Carlo simulation. There isn&#39;t much optimization and O.R.  yet, but it is analytics all the way.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;To that end, I am learning the tricks of the game, and a suitable language to program.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;Perl for data extraction&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Although I mostly work in the .NET world, often times, for some processing jobs, I revert to perl. I  have used perl for many years, and love the language. Initially, I  learned perl to do some simple web-CGI programming when I was in &lt;a href=&quot;http://www.iitkgp.ac.in/&quot; target=&quot;_blank&quot;&gt;IIT Kharagpur&lt;/a&gt;,  in my undergraduate years. Then I used perl for heavy database  scripting at a job I did immediately following my undergraduate degree. I am by no means an expert in perl,  but I know decent amount to get by. Since then, I have used perl in a  variety of capacity: in my current work, in hobby web-CGI programming  and so on. Although, lot of people have moved on to php for web-CGI and  python for non-CGI scripting, I never could do so. There is nothing  wrong with perl anyway, why bother?&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I  also think perl is a great language for people who deal with data. As a  software developer for an analytic tools, I deal with data all the time, and lots of them. The  strength of perl comes from its rich feature set suitable for data  extraction (indeed, perl is, unofficially, an acronym for &lt;i&gt;Practical Extraction and Reporting Language&lt;/i&gt;).  I have used perl (along with unix shell e.g., bash, sed and awk)  scripts for extracting data and formatting the way I need with great  success.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Perl for text mining&lt;/u&gt;&lt;br /&gt;When you think about the strengths of perl, it naturally becomes a contender for the language of choice for NLP. Perl has strong but easy to use regular expressions, and various modules for extracting anything from anywhere. Given that, and my familiarity with perl, I decided to take a look at the resources available for this purpose. Not so surprisingly, there are quite a few. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;Resources for text mining&lt;/u&gt; &lt;br /&gt;Here is my compiled list of resources, with an obvious bias towards using perl.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Books: Let&#39;s start with books. There are no dearth of books on text mining and NLP, but I will list a few ones I thought are good.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Manning and Schutze. &lt;a href=&quot;https://www.amazon.com/dp/0262133601/ref=as_li_ss_til?tag=homepage0e4-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=0262133601&amp;amp;adid=1XQME8EF01H5CQ6F4PYY&amp;amp;&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;Foundations of Statistical Natural Language Processing&lt;/i&gt;&lt;/a&gt;. The MIT Press. 1st Ed. 1999. This book is a gem, sorta bible for modern NLP. It has got nothing to do with perl, but since text mining has lot of NLP stuff, this book is a great reference.&lt;/li&gt;&lt;li&gt;Manu Konchady. &lt;i&gt;&lt;a href=&quot;https://www.amazon.com/dp/1584504609/ref=as_li_ss_til?tag=homepage0e4-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=1584504609&amp;amp;adid=0EP43AYR39CVJ9NP5CMV&amp;amp;&quot; target=&quot;_blank&quot;&gt;Text Mining Application Programming&lt;/a&gt;.&lt;/i&gt; Charles River Media. 1st Ed. 2006. This is probably the best book out there to learn text mining using perl. Note that the book is not that heavy on perl code though, but stresses on developing the concepts and the models that are used in text mining. The book covers text mining by talking about various problems that appear in (and can be solved using) text mining. I liked that approach. It also helps that the author maintains an &lt;a href=&quot;http://textmine.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;open source library for text mining&lt;/a&gt; written in perl.&lt;/li&gt;&lt;li&gt;Roger Bilisoly. &lt;i&gt;&lt;a href=&quot;https://www.amazon.com/dp/0470176431/ref=as_li_ss_til?tag=homepage0e4-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=0470176431&amp;amp;adid=0Z4YPD2EGK0W0JEEFTXB&amp;amp;&quot; target=&quot;_blank&quot;&gt;Practical Text Mining with Perl&lt;/a&gt;.&lt;/i&gt; Wiley. 1st Ed. 2008. This is probably the only book that directly deals with both text mining and perl. This is also probably a pretty good book, but unfortunately it did not meet my exact needs. I found the topic covered somewhat lacking when compared to Konchady&#39;s book.&lt;/li&gt;&lt;li&gt;Weiss et. al. &lt;i&gt;&lt;a href=&quot;https://www.amazon.com/dp/1441929967/ref=as_li_ss_til?tag=homepage0e4-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=1441929967&amp;amp;adid=1G0RJYBHEVQGPP4PM3QW&amp;amp;&quot; target=&quot;_blank&quot;&gt;Text Mining: Predictive Methods for Analyzing Unstructured Information&lt;/a&gt;. &lt;/i&gt;Springer. 1st Ed. 2005 (Softcover - 2010). The contents of this book seemed interesting, similar to Konchady&#39;s book but the treatment more rigorous. I have put this in my &quot;to check out&quot; list.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Software: As with books, there are no dearth of software for text mining either. Since I was looking for perl related solutions, those are the only ones I list here.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://textmine.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Text mine&lt;/a&gt;: The open source perl library I mentioned earlier.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://search.cpan.org/%7Erogerhall/Text-Mining-0.08/lib/Text/Mining.pm&quot; target=&quot;_blank&quot;&gt;Text::Mining module on CPAN&lt;/a&gt;: This module seems comprehensive, but is rather poorly documented. It is not very clear from the documentation available in the module about how to use various sub-modules effectively. Hope the authors work on that.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Video learning: There are quite a few lectures available on Youtube. But the best one has to be an &lt;a href=&quot;https://www.coursera.org/nlp/class&quot; target=&quot;_blank&quot;&gt;online course from Stanford&lt;/a&gt;, which is going on right now. The course is from Prof. Manning, the author of the first book in my list. The online course instructs the assignments to be submitted in java or  python, and I understand their logic - those two being at the top of the  heap of popular languages, but I have decided to use perl for the  purpose of doing the assignments. I won&#39;t be graded then, but hey, I did  not want to be graded in the first place ;-). The reason for choosing perl: my  familiarity and knowledge of the strengths of perl in this area  (although, I am familiar with java too, at almost the same level), the  lure of being able to use the same code in my side project, and possibly  reuse some of that stuff in a web-CGI context at some point.&lt;/li&gt;&lt;/ul&gt;I will update this post if I come across more relevant resources. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predsdev.blogspot.com/feeds/785369698154138782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://predsdev.blogspot.com/2012/03/text-mining-with-perl-resources.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/785369698154138782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4007926344299611504/posts/default/785369698154138782'/><link rel='alternate' type='text/html' href='http://predsdev.blogspot.com/2012/03/text-mining-with-perl-resources.html' title='Text mining with perl: Resources'/><author><name>Samik R</name><uri>http://www.blogger.com/profile/08575567213510734030</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//4.bp.blogspot.com/-ebJR9XowwBM/V3lm_8n50TI/AAAAAAAAJAU/UNg2huNHhrkkYfIzCVuAfJeSxgTuieZGQCK4B/s113/SamikNew.jpg'/></author><thr:total>5</thr:total></entry></feed>