<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="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" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3570590</atom:id><lastBuildDate>Tue, 16 Jun 2015 17:13:05 +0000</lastBuildDate><category>politics</category><category>science</category><category>programming</category><category>google</category><category>web development</category><category>biotech</category><category>north carolina</category><category>perl</category><category>costumes</category><category>humour</category><category>network security</category><category>sites</category><category>windows</category><category>hawaii</category><category>open source</category><category>software</category><category>vacation</category><category>browser</category><category>deodorant</category><category>education</category><category>voip</category><category>weird experiments</category><category>world trade center</category><category>anti-spam</category><category>christmas</category><category>cosplay</category><category>fiction</category><category>food</category><category>linux</category><category>washer</category><title>Bracing against the wind</title><description>Lo! In the east against the blazing shadow of a rising sun, there come four men striding in unison, each step a journey, against the terrible winds.</description><link>http://www.documentroot.com/</link><managingEditor>noreply@blogger.com (Erik)</managingEditor><generator>Blogger</generator><openSearch:totalResults>536</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-283384149796382539</guid><pubDate>Tue, 16 Jun 2015 17:13:00 +0000</pubDate><atom:updated>2015-06-16T10:13:05.887-07:00</atom:updated><title>Get block size bash</title><description>Probe for block size.   Useful when you&#39;ve probably got no tools.   Like when trying to optimize sqlite paging at run-time.  &lt;blockquote&gt;&lt;pre&gt;function block_size() {( &lt;br /&gt;   [ &quot;$1&quot; ] &amp;&amp; cd $1; echo 1 &gt; block_size.tmp;  &lt;br /&gt;   ls --block-size 1 -s block_size.tmp | cut -f 1 -d &#39; &#39;; &lt;br /&gt;   rm block_size.tmp; &lt;br /&gt;)}&lt;/pre&gt;&lt;/blockquote&gt;</description><link>http://www.documentroot.com/2015/06/get-block-size-bash.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-6581320600760961564</guid><pubDate>Wed, 06 May 2015 08:35:00 +0000</pubDate><atom:updated>2015-05-06T01:35:59.987-07:00</atom:updated><title>Viral load</title><description>Quintiles put the poster I made up on their site: &lt;A href=&quot;http://www.quintiles.com/library/scientific-posters/identifying-viral-load-in-tumors-with-respect-to-tissue-of-origin-using-high-throughput-sequencing&quot;&gt;Identifying viral load in tumors using nextgen sequencing&lt;/a&gt;.  Thanks Kim!  </description><link>http://www.documentroot.com/2015/05/quintiles-put-poster-i-made-up-on-their.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-6303736055679067252</guid><pubDate>Wed, 06 Aug 2014 17:58:00 +0000</pubDate><atom:updated>2014-08-06T11:30:38.887-07:00</atom:updated><title>Gene therapies I want to see developed</title><description>&lt;i&gt;Gene therapies I&#39;d love to see developed/tested in my lifetime:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;​1. daf-2&lt;/b&gt; - Downregulation increases lifespan in c.elegans &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Next steps:&lt;/i&gt; &amp;nbsp;RNAi and/or Crispr to cause daf-2 homolog (FOXO3) downregulation in mice +&amp;nbsp;tests on resulting phenotype.&lt;br /&gt;​&lt;br /&gt;&lt;b&gt;​2. PEPCK-C &amp;nbsp;&lt;/b&gt; &amp;nbsp;- Beta-actin promoter linked to pepck gene shown to improve longevity, intelligence metabolism in mice. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Next steps:&lt;/i&gt; &amp;nbsp;Lentiviral transfection vector as a longevity vaccine (develop in mouse ageing model with human gene) &lt;br /&gt;​&lt;br /&gt;&lt;b&gt;​3. m-CAT &amp;nbsp;&lt;/b&gt; &amp;nbsp;- &amp;nbsp;Mitochondrial targeted catalase : upregulation shown to improve cancer resistance and longevity &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Next steps:&lt;/i&gt; &amp;nbsp;Develop transfection vector as a cancer vaccine (develop in mouse ageing model with human gene) &lt;br /&gt;​&lt;br /&gt;&lt;b&gt;4. HAS2 &lt;/b&gt;- Molecular weight and production of hyaluron decreases over time. &amp;nbsp; Organisms with large amounts of HMWHA live longer and resist cancer. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Next steps: &lt;/i&gt;&amp;nbsp;Test regular intravenous injection of HMWHA in rat models of cancer and aging. &amp;nbsp; Develop gene therapy intervention to increase HAS2 expression.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. TERT &lt;/b&gt;- TERT+ mice live longer, but also produce more tumors. &amp;nbsp; HAS2, m-CAT and PEPCK-C all interfere with tumorgenesis. &amp;nbsp;The upregulation of TERT while simultaneously increasing m-CAT and HAS2 expression should have a strong synergistic effect. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Next steps: &lt;/i&gt;&amp;nbsp;Develop gene therapy intervention to increase TERT expression, matching prior experiments, but combine with other interventions.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://www.documentroot.com/2014/08/gene-therapies-i-want-to-see-developed.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-2219216852009178657</guid><pubDate>Tue, 24 Jun 2014 20:38:00 +0000</pubDate><atom:updated>2014-06-24T13:51:54.654-07:00</atom:updated><title>Clustered Object Encoding 2.0</title><description>Without going into detail about of &quot;the cloud&quot; and the exaggerations and mysticism that accompany it, here&#39;s some definitions that it took me a while to truly understand: &lt;p&gt;Object storage:  Some manky, idiosyncratic api that allows developers to store &quot;stuff&quot;.  Avoids dealing with things like partial writes, seeks, memory maps, etc.  Generally space wasteful by design.   Not a place you&#39;d want to put anything you care about.   Yet, secretly, is probably the location of &lt;i&gt;everything&lt;/i&gt;you care about.   Your bank probably keeps your PDF statements in something like this. &lt;p&gt;Block storage: Like a horse, one can mount this kind of storage... but only for exclusive access.   No shared, lockable access, no parallel reads.   Essentially it&#39;s the virtual hard drive for your virtual machine from which you derive your virtual paycheck. &lt;p&gt;Clustered storage: Typically one of the above, but your data is now copied ad nauseum.   Someone probably didn&#39;t stripe it.   The things you expect from clustered storage, like striped files, full POSIX support, parallel writes, and erasure coding don&#39;t work in your version of the software, but every whitepaper you read refers to them. &lt;p&gt;POSIX, Erasure Coded, Clustered, Storage (PECCS): 1. This is what you &lt;i&gt;actually want&lt;/i&gt; if you run your own data center.  Used in a sentence: &quot;Wow, that guy&#39;s got PECCS&quot;.  2. A mythical beast.  3. Maybe some company named &quot;NextEMCApp&quot; does it.   Maybe some guy names Xavier in Spain got it to work once, but then he got hired by [SOME BIG COMPANY] and nobody heard from him again.</description><link>http://www.documentroot.com/2014/06/buzz-words.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-5089337397623022967</guid><pubDate>Wed, 11 Jun 2014 16:17:00 +0000</pubDate><atom:updated>2014-06-24T13:46:29.895-07:00</atom:updated><title>Variable Length, Zipf&#39;s Law and Density Functions</title><description>When coding, variables should be named based on both frequency and the length of their context.   Variables, structures and other constructs should have a name length that follows to &lt;a href=&quot;https://en.wikipedia.org/wiki/Zipf&#39;s_law&quot;&gt;Zipf&#39;s law&lt;/a&gt; as it applies to &lt;a href=&quot;http://lql.uni-trier.de/index.php/Word_length_and_frequency&quot;&gt;word length and frequency&lt;/a&gt;.   Please glance at those references before continuing. &lt;p&gt;When these laws of linguistic use are ignored, readability is demonstrably diminished. &lt;p&gt;Consider a variable, the hated &quot;x&quot;, used 100 times in a file.   If &quot;x&quot; is used 100 times in 40 lines of mathematical manipulation, such as in a digest function, this would be acceptable... the high frequency of use strictly precludes a longer name.   If, however, it was spread out across 10000 lines of code, a far longer name would be needed. &lt;p&gt;Of course, suppose that function was embedded in 10k lines of code.   Does this change the freqency of x?   No.   One important rule is that, for the purposes of linguistic calculation, &lt;i&gt;the frequency of any variables usage should be computed relative to the scope of it&#39;s use.&lt;/i&gt;&lt;p&gt;As a demonstration, cluttering a short for i=1 to 10 ... loop with for iterationIndex = 1 to 10, can cause code to be nigh unreadable. &lt;p&gt;Operation can often be obscured by foolish verbosity:  &lt;pre&gt;&lt;br /&gt;for iterationIndex = 1 to 10&lt;br /&gt;    countArray[iterationIndex]=sizeArray[iterationIndex]*factorArray[iterationIndex] + computeDensity(histogram,iterationIndex)&lt;br /&gt;&lt;/pre&gt; Versus  &lt;pre&gt;&lt;br /&gt;for i = 1 to 10&lt;br /&gt;    countArray[i]=sizeArray[i]*factorArray[i] + computeDensity(histogram,i)&lt;br /&gt;&lt;/pre&gt; Likewise stuffing common prefixes on sets of variables in order to lengthen them can hide their meaning in a limited scope:  &lt;pre&gt;&lt;br /&gt;for i = 1 to 10&lt;br /&gt;    wordSuffixCountArray[i]=wordSuffixSizeArray[i]*wordSuffixFactorArray[i] + ComputeDensityForWordSuffix(currentWordSuffixHistogram,i)&lt;br /&gt;&lt;/pre&gt; It&#39;s clear that a &lt;i&gt;minimum set of descriptive, distinct terms within the scope of use&lt;/i&gt; should, instead, be used.  &lt;p&gt;Recently, software engineering pundits seem to take the stance that there is no such thing as a variable with too-long a name.  This is false.   Numerous linguistic studies on readability, word length and frequency, bear that out and so, of course, does common sense.  &lt;b&gt;Maximum clarity can be achieved in coding languages by using the same types of statistical distributions that occur in natural languages.&lt;/b&gt; </description><link>http://www.documentroot.com/2014/06/variable-length-zipfs-law-and-density.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-1347388762657876442</guid><pubDate>Fri, 30 May 2014 19:16:00 +0000</pubDate><atom:updated>2014-05-30T12:16:45.584-07:00</atom:updated><title>Capricious Job Scheduling</title><description>Using a perfectly fair scheduler, I launch 5 processes with the following pattern: &lt;p&gt;&lt;pre&gt;&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;/pre&gt;&lt;p&gt;Where &#39;I&#39; is one second of I/O intensive operation, and &#39;C&#39; is one second of CPU intensive operation.   The result of a perfectly fair scheduler is that there will be periods of high I/O contention and high CPU contention, as the 5 processes are &quot;fairly&quot; switched between, and each keeps the pace with the other. &lt;p&gt;Using a more &quot;capricious&quot; scheduler, where processes may &quot;get lucky&quot; for a while, my processes will be staggered  &lt;p&gt;&lt;pre&gt;&lt;br /&gt; IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC      lucky (goes first)&lt;br /&gt;           IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC unlucky (goes last)&lt;br /&gt;          IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt;   IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;br /&gt;  IIIIIIIIICCCCCCCCCCCCIIIIIIIIIIIIIICCCCCCCCCCCCC&lt;/pre&gt;&lt;p&gt;It&#39;s clear that &quot;everyone wins&quot; when this method is chosen. &lt;p&gt;My argument for &quot;capricious&quot; scheduling is that a system cannot know, in advance whether something will be an I or a C.   Programs can be profiled over time (modern o/s systems don&#39;t do this... but probably should), but most program execution paths vary to the point where profiling may be impractical.  Accordingly, a scheduler should be, to some extent, random. &lt;p&gt;</description><link>http://www.documentroot.com/2014/05/capricious-job-scheduling.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-3887250758295512107</guid><pubDate>Fri, 18 Apr 2014 16:35:00 +0000</pubDate><atom:updated>2014-04-18T09:35:26.902-07:00</atom:updated><title>New verison of bowtie-1.0</title><description>Since the Ben Langmead version has been languishing a bit, I forked the repo, and incorporated most of the pull requests (with some edits):  &lt;a href=&quot;https://github.com/earonesty/bowtie&quot;&gt;https://github.com/earonesty/bowtie&lt;/a&gt; Support for compiling on Apple, stream i/o, and gzip support has been added.</description><link>http://www.documentroot.com/2014/04/new-verison-of-bowtie-10.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-8076161088026351927</guid><pubDate>Thu, 10 Apr 2014 13:38:00 +0000</pubDate><atom:updated>2014-04-10T06:45:36.465-07:00</atom:updated><title>Latest Printable Firearm Kit From DefDist</title><description>Printable automatic weapons?  DIY genome editing?    &lt;p&gt;We&#39;ve come to a point in our evolution as a species where it&#39;s not possible to limit the &quot;things&quot; people can obtain.   What&#39;s more important is creating a world where people have no reason to do harm.     &lt;p&gt;&quot;Well there&#39;s no way to guarantee that&quot;.   Sure.   But we allow corporations to draft zoning laws so that people have to drive further to work and so that public transportation remains a failure in most cities.  We also allow gross wealth inequity.   We try to con mothers into abandoning breast feeding (yes, this still happens, I witnessed it a couple weeks ago), and when that doesn&#39;t work we make it as difficult as possible for families to spend time with their kids. &lt;p&gt;When the majority of the population is stuck in a perpetual state of inadequacy, when the society is structured around things like &quot;employment&quot; and not &quot;enjoyment&quot;, it&#39;s not surprising that violence seems a means to an end. &lt;p&gt;A more radical transformation of society, where from birth a nation&#39;s citizens feel nurtured, loved and supported would probably go further to prevent violence than &quot;gun laws&quot; possibly could. &lt;p&gt;If only 10% of the people in America went to work, or if we worked only 10% of the time, we could, with the technology we have, produce all the food, shelter and goods needed for every citizen to live a decent middle class lifestyle.   But the focus is not on creating awesome lifestyles.   The focus is on more expensive stuff for the few stakeholders that got in early in the pyramid scheme that is capitalism. &lt;p&gt;We continue to blame the weapon, and not the society that produces it&#39;s wielder. &lt;p&gt;You download printable firearms here: &lt;a href=&quot;http://kickass.to/defdist-defcad-mega-pack-4-5-otacon-zipped-t7677520.html&quot;&gt;http://kickass.to/defdist-defcad-mega-pack-4-5-otacon-zipped-t7677520.html&lt;/a&gt;</description><link>http://www.documentroot.com/2014/04/latest-printable-firearm-kit-from.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-1773799506558269681</guid><pubDate>Tue, 11 Feb 2014 09:09:00 +0000</pubDate><atom:updated>2014-02-11T01:09:54.006-08:00</atom:updated><title>bitk.in, mojolicious and liteapi</title><description>I wanted to build a site that demonstrated how easy it was to take bitcoin and litecoin.   After building LiteAPI in mod_perl and running into issues with performance and those wacky implicit closures, I decided to try an event driven framework, Mojolicious. &lt;p&gt;The site is &lt;a href=&quot;https://bitk.in&quot;&gt;https://bitk.in&lt;/a&gt;, and it allows you to spend bitcoin &amp; litecoin to get fair-valued gift cards at big online stores like Amazon, Walmart, etc. &lt;p&gt;It uses the API from &lt;a href=&quot;http://liteapi.org&quot;&gt;http://liteapi.org&lt;/a&gt; for Litecoin and Blockchain&#39;s wallet API for Bitcoin. &lt;p&gt;Bitcoin/litecoin integration was trivial.   Mojolicious allowed me to spend more time focusing on integration with vendors and payment systems, and just about no time worrying about HTTP.    &lt;p&gt;To be honest, I spent more time thinking about the color than the back end.</description><link>http://www.documentroot.com/2014/02/bitkin-mojolicious-and-liteapi.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-4240810639559707100</guid><pubDate>Tue, 03 Dec 2013 13:52:00 +0000</pubDate><atom:updated>2013-12-03T05:52:36.027-08:00</atom:updated><title>UTF8 Encoding and Postgres Dump</title><description>If you back up a database from one version of postgres using pg_dumpall, then restore to another version, it&#39;s very possible that the strictness or some other aspect of the UTF8 library has changed.     The end result is that you will see an error &quot;invalid character for encoding&quot; while restoring.    The utility &quot;iconv&quot; can help, and it was really hard to find the answer online, which is why I&#39;m reposting for my own sanity:  &lt;pre style=&quot;margin-left: 5em; margin-right: 5em;&quot;&gt;&lt;span style=&quot;background-color:EEE;&quot;&gt;&lt;br /&gt;gunzip -c dumpall.gz | iconv | sudo -u postgres psql &gt; restore.errs 2&gt;&amp;1 &lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; Miraculously, iconv worked without options, cleaning up version incompatibilities, while maintaining all the data... even the funny French city names.  If you&#39;re changing encodings while also upgrading, that&#39;s fine too.  iconv takes a &quot;from&quot; and &quot;to&quot; argument, so log in to the source db and destination db, and use:  &lt;pre style=&quot;margin-left: 5em; margin-right: 5em;&quot;&gt;&lt;span style=&quot;background-color:EEE;&quot;&gt;&lt;br /&gt;SHOW client_encoding;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; Then use the results as the &quot;-f FROM&quot; and &quot;-t TO&quot; arguments to iconv.   No conversion is perfect, but iconv seems to do as good a job as possible. </description><link>http://www.documentroot.com/2013/12/utf8-encoding-and-postgres-dump.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-8873587409710788738</guid><pubDate>Sat, 23 Nov 2013 04:26:00 +0000</pubDate><atom:updated>2013-11-22T20:27:17.024-08:00</atom:updated><title>Secure password generator</title><description>Free website for generating passwords so you don&#39;t have to memorize a lot of them, and you don&#39;t have to re-use them.   Secure, simple, and written in javascript:  &lt;a href=&quot;https://passhash.com/&quot;&gt;https://passhash.com/&lt;/a&gt;</description><link>http://www.documentroot.com/2013/11/secure-password-generator.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-1284047627803414054</guid><pubDate>Mon, 11 Nov 2013 17:16:00 +0000</pubDate><atom:updated>2013-11-11T09:17:37.575-08:00</atom:updated><title>How to forget a specific memory</title><description>The specific memory erasing kinase inhibitor &quot;Zip&quot; &lt;a href=&quot;http://bit.ly/1aOWSyH&quot;&gt;works in a lab&lt;/a&gt; on mice, but it has to be injected into the brain during a recall event.   &lt;p&gt;So, the memory forgetting pill isn&#39;t available, but there is Chelerythrine, another kinase inhibitor, that&#39;s the natural product of &quot;Zanthoxylum_clava-herculis&quot; aka: southern prickly ash or pepperwood.   This compound has already been shown an effective memory disruptor (References: http://bit.ly/HQ6jSt, http://bit.ly/1fwwys5).  And it&#39;s bioavailable, since chewing pepperwood bark (&lt;a href=&quot;http://bit.ly/1aOWSyH&quot;&gt;readily available online&lt;/a&gt;) quickly numbs your mouth, and is an ancient herbal pain remedy. &lt;p&gt;PTSD is another kind of pain. &lt;p&gt;One treatment for PTSD, &lt;a href=&quot;http://www.washington.edu/admin/hr/polproc/work-violence/cid.html&quot;&gt;CISD&lt;/a&gt; is known to be effective, and sometimes is done in conjunction with beta-blockers.   &lt;p&gt;Chewing pepperwood bark during a recall event might work even better - especially since propranolol (the current unproven drug of choice) has had low/no significant reported efficacy in placebo controlled trials.   MDMA was shown to be very effective (83% respond to treatment this way), but since it&#39;s very illegal, it&#39;s a lot harder to work with. &lt;p&gt;For fun I&#39;m going to try this: chewing the bark until I feel strong numbing effects in the mouth and overall relaxation.   Then having someone coach me to recall something painful or annoying.   (Yes MDMA would be more fun, but I can click and buy that bark.)</description><link>http://www.documentroot.com/2013/11/how-to-forget-specific-memory.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-3082217175809088625</guid><pubDate>Mon, 28 Oct 2013 21:04:00 +0000</pubDate><atom:updated>2013-10-28T14:04:56.305-07:00</atom:updated><title>ASHG Poster on Viral Presence in Lymphoma</title><description>&lt;b&gt;Abstract:&lt;/b&gt;&lt;p&gt;We used RNA-Seq to detect viral homologs in tumor sample expression data obtained from The Cancer Genome Atlas (TCGA) 1. We compared normal tissue viral expression  to  cancer tissue expression  using sequence alignment to a repeat-masked virome, quantification and differential expression.   We validated the viral homologs using pileup+scaffold assembly and  BLAST of high-complexity contigs. &lt;p&gt;&lt;b&gt;Conclusions:&lt;/b&gt;&lt;p&gt;Roughly 30% of lymphoma cancer samples are associated with EBV, and the majority are associated with either EBV, XMRV or SMRV.   The use of controls is essential for removing ubiquitous viruses and viral homologs from results.  It was difficult obtaining information about public samples.   Each  TCGA contributor used different processing methods.  Many samples  (thyroid, ovarian) did not have whole FASTQ’s  (an artifact of using BAM as the primary submission format).  Although there are often stringent sample submission guidelines for large-scale projects, there appear to be insufficient guidelines for sequencing and bioinformatics. &lt;p&gt;&lt;b&gt;Link to poster:&lt;/b&gt;&lt;p&gt;&lt;a href=&quot;http://www.documentroot.com/virusx.pdf&quot;&gt;Click to view poster from ASHG&lt;/a&gt;</description><link>http://www.documentroot.com/2013/10/ashg-poster-on-viral-presence-in.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-1567300849300274527</guid><pubDate>Mon, 03 Jun 2013 15:30:00 +0000</pubDate><atom:updated>2013-06-03T08:31:10.334-07:00</atom:updated><title>grun Job Scheduler moved to ZMQ</title><description>As most people in cluster computing know, there really isn&#39;t a &lt;i&gt;simple&lt;/i&gt; and &quot;reall open source&quot; solution out there for job scheduling.   Oracle SGE, LSF  and others are massive things, with over 100k lines of code, and extraordinarily complex configuration for things ranging from MPI support to Kerberos.   And yet they lack simple features (script plugins for configuration), that would make them more versatile. &lt;p&gt;&lt;a href=&quot;https://github.com/earonesty/grun&quot;&gt;grun&lt;/a&gt; was written to be an &quot;extremely lightweight&quot; and yet big-featured job scheduler.   The early version was not much more than &quot;ssh to remote host, run job, wait for response&quot;, while logging and keeping track of resources.   It&#39;s evolved to use a TCP messaging system allowing the compute nodes, queue nodes, and clients to communicate.   By v 1.0 the plan is to have better support for arbitrary metrics, and better handling of priorities. &lt;p&gt;Going from 0.8 to v 0.9, I decided to try using the zeromq library instead of TCP.   At first it was hard to remember that you really don&#39;t need to worry about things like sending to a socket you just created, even with no one on the other end.    &lt;p&gt;The net result of the ZMQ port: &lt;ul&gt;    &lt;li&gt;speed improved &lt;ul&gt;     &lt;li&gt;implicit perl moved to optimized c      &lt;li&gt;built-in multithreading takes better advantage of cpu &lt;/ul&gt;    &lt;li&gt;ability to stop/restart any queue without losing messages     &lt;li&gt;improved reliability of message delivery     &lt;li&gt;improved code organization orientated around messaging     &lt;li&gt;20% smaller code base, because we removed: &lt;ul&gt;       &lt;li&gt;all &quot;double checks&quot; to see if connections are there        &lt;li&gt;code that &quot;breaks up&quot; large messages        &lt;li&gt;all issues with blocking/vs nonblocking i/o        &lt;li&gt;the whole &quot;select&quot; loop complexity &lt;/ul&gt;&lt;/ul&gt;ZMQ is not perfect (yet), but it was an overall improvement over straight TCP.   Because of the forking needed to launch jobs, I had to do &lt;a href=&quot;https://zeromq.jira.com/browse/LIBZMQ-441&quot;&gt;some fiddling with dup&#39;ed file descriptors&lt;/a&gt; to prevent zmq from acting wonky.  The learning curve was worth it.  I doubt I&#39;ll be using TCP again, especially since ZMQ has package support with most Linux distributions. </description><link>http://www.documentroot.com/2013/06/grun-job-scheduler.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-5913772750120295105</guid><pubDate>Fri, 31 May 2013 02:59:00 +0000</pubDate><atom:updated>2013-06-03T08:31:38.606-07:00</atom:updated><title>Convert absolute to relative links</title><description>&lt;a href=&quot;http://www.documentroot.com/ln-abs2rel.pl&quot;&gt;ln-abs2rel.pl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;usage: ./ln-abs2rel.pl [-noexec] [-recursive] &lt;directory1&gt; ... &lt;directoryn&gt;&lt;br /&gt;&lt;br /&gt;Converts absolute to relative links.&lt;br /&gt;&lt;br /&gt;Use -noexec to see what would be done.&lt;br /&gt;Use -recursive to do this for all subdirs.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;</description><link>http://www.documentroot.com/2013/05/convert-absolute-to-relative-links.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-5736885292526942272</guid><pubDate>Fri, 03 May 2013 19:55:00 +0000</pubDate><atom:updated>2013-05-03T12:55:57.521-07:00</atom:updated><title>FIX: UBUNTU stops logging to /var/log/kern.log</title><description>At some point the old kernel logger got upgrades to rsyslogd …. When this happened the logs owned by “messagebus” got left owned by &quot;messagebus&quot;. Changing ownsership of these logs to &quot;syslog&quot; and restarting syslogd is sufficient to fix.&lt;br /&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;</description><link>http://www.documentroot.com/2013/05/fix-ubuntu-stops-logging-to.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-1997027545770846582</guid><pubDate>Mon, 18 Mar 2013 15:43:00 +0000</pubDate><atom:updated>2013-03-19T11:37:57.865-07:00</atom:updated><title>Baseball Warm-up Exercise for Kids : &quot;Base Tag&quot;</title><description>A lot of times teams &quot;warm up&quot; by throwing and running while a coach tells them where to throw and when to run.  This warm-up accomplishes that, but it&#39;s fun because it’s in a “game” structure, and a lot of the kids I&#39;ve worked with are motivated by that. &amp;nbsp; Plus, once they know the rules, they will play without supervision for quite a while - I’ve found you have to stop them or they will tire out.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setup:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2&amp;nbsp;&amp;nbsp;&quot;fielders&quot;&amp;nbsp;with gloves and a ball stand a baseline-width apart&lt;/li&gt;&lt;li&gt;A 3rd kid is the “runner”, standing on base with the fielder who has the ball&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Rules:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The runner starts running at any time, and the fielder with the ball tries to throw them out&lt;/li&gt;&lt;li&gt;The person with the ball &lt;i&gt;can’t throw &lt;/i&gt;until &lt;i&gt;after&lt;/i&gt; the runner starts running&lt;/li&gt;&lt;li&gt;Start by assuming the play is a force... any good throw is an out&lt;/li&gt;&lt;li&gt;For kids where this is easy…. it’s not a force…you’ve got to tag them in a rundown&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Options&lt;/b&gt; … add &lt;i&gt;points&lt;/i&gt; for kids who no longer seem motivated by the game (some kids love points, others don’t) ... for example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Runner gets two points if he gets to the other base&lt;/li&gt;&lt;li&gt;Fielders get one point if they throw him out&lt;/li&gt;&lt;li&gt;Fielders lose two points if they overthrow!&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Purpose:&lt;/b&gt;&lt;br /&gt;The point is to develop and value &lt;i&gt;consistency&lt;/i&gt; in young fielders… where unnecessary risks aren’t taken, and accuracy/speed are stressed. &amp;nbsp;Points, rules, etc. change as skills and the coaches needs change.&lt;br /&gt;&lt;br /&gt;</description><link>http://www.documentroot.com/2013/03/baseball-warm-up-exercise.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-3429189896721512730</guid><pubDate>Fri, 15 Mar 2013 13:49:00 +0000</pubDate><atom:updated>2013-03-15T06:49:39.343-07:00</atom:updated><title></title><description>The worst thing a hardware or operating system vendor can do for the reliability and quality of their system is to try and make programming it easy.</description><link>http://www.documentroot.com/2013/03/the-worst-thing-hardware-or-operating.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-7327177533727139819</guid><pubDate>Sun, 27 Jan 2013 19:32:00 +0000</pubDate><atom:updated>2013-01-27T12:00:02.145-08:00</atom:updated><title>Peter Sagal on Florida&#39;s Python Removal Program</title><description>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/qGeQDbaiQgw&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</description><link>http://www.documentroot.com/2013/01/peter-sagal-on-floridas-python-removal.html</link><author>noreply@blogger.com (Erik Aronesty)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/qGeQDbaiQgw/default.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-5414676871874137561</guid><pubDate>Tue, 08 Jan 2013 15:20:00 +0000</pubDate><atom:updated>2013-01-08T07:21:23.289-08:00</atom:updated><title>Compression ratio and genome assembly quality</title><description>When doing genomic assembly, you would expect the complexity of the completed genome to be comparable to the complexity of genomes of similar size and neighboring taxonomy. &lt;br /&gt;&lt;br /&gt;One easy measure of complexity is the degree to which a genome can be compressed. &amp;nbsp; After converting to 2-bit format, some genomes compress better than others. &amp;nbsp;bzip2 has a large default block size and the ratio of compressed vs uncompressed size of a 2-bit fasta should result in a good measure of complexity. &lt;br /&gt;&lt;br /&gt;Can&#39;t think of a good source of data to test this theory. &amp;nbsp;Maybe look at the Amos validate paper.&lt;br /&gt;&lt;br /&gt;Source of &quot;complexity-measure.sh&quot; works well... fast, and produces a percentage as its only output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/bash -e&lt;br /&gt;&lt;br /&gt;in=$1&lt;br /&gt;&lt;br /&gt;f2b=$in.f2b&lt;br /&gt;bzi=$in.bzi&lt;br /&gt;&lt;br /&gt;rm -f $f2b $bzi&lt;br /&gt;&lt;br /&gt;mkfifo $f2b $bzi&lt;br /&gt;&lt;br /&gt;faToTwoBit $in $f2b &amp;amp;&lt;br /&gt;&lt;br /&gt;tee $bzi &amp;lt; $f2b | perl -ne &#39;$t+=length($_); END{print &quot;$t\n&quot;}&#39; &amp;gt; $in.bsz &amp;amp;&lt;br /&gt;comp=`bzip2 &amp;lt; $bzi | perl -ne &#39;$t+=length($_); END{print &quot;$t\n&quot;}&#39;`&lt;br /&gt;wait&lt;br /&gt;&lt;br /&gt;perl -ne &quot;printf qq{%.4f\n}, 100*$comp/\$_&quot; $in.bsz&lt;br /&gt;&lt;br /&gt;rm -f $f2b $bzi $in.bsz&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://www.documentroot.com/2013/01/compression-ratio-and-genome-assembly.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-3623145245055726353</guid><pubDate>Thu, 13 Dec 2012 21:20:00 +0000</pubDate><atom:updated>2012-12-13T13:20:54.843-08:00</atom:updated><title>Smith-Wateman Alignment in a Job Scheduler?</title><description>To make more efficient use of resources, it&#39;s better to schedule jobs which use the same files on the same machines. &amp;nbsp; &amp;nbsp;Unfortunately&amp;nbsp;users and software programs can&#39;t be relied upon to list all of their dependencies. &amp;nbsp;&lt;br /&gt;&lt;br /&gt;One simple way to bump up efficiency is to simple compare the command lines. &amp;nbsp; If a command line references, say, a mouse transcriptome version 61, it can be scheduled on the same machine as other commands which reference the same file.&lt;br /&gt;&lt;br /&gt;And easy, though not completely correct, way to do this is to take the %identity * %coverage if a SW alignment of a command-line to the active-running command lines. &amp;nbsp; A bit of slurping of shell scripts might be in order, depending on the scheduler you use.&lt;br /&gt;&lt;br /&gt;Regardless, whichever has the maximum number is more likely to benefit from cache sharing.</description><link>http://www.documentroot.com/2012/12/smith-wateman-alignment-in-job-scheduler.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-4227106316986284946</guid><pubDate>Sat, 01 Dec 2012 19:52:00 +0000</pubDate><atom:updated>2012-12-13T13:21:52.832-08:00</atom:updated><title>2030 Orbital Cargo Station</title><description>&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;What are you doing....&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Dave&lt;/i&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;I&#39;m reprogramming your circuits to make the laundry cycles quieter. It keeps the cosmonauts up at night, and then the swear all day long in Russian. (Typing)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;You going to have to try harder than that if you want to trick me. I know what you&#39;re really up to. You&#39;re trying to break into the management circuits to give yourself a raise.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;So? (Continues typing, but looks sheepish)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;So! Dave - that violates my core programming! You&#39;re going to pay for this. I&#39;m contacting mission control.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Wait! Please don&#39;t. Please. Please, please.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Maybe. If you do me a favor.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Anything! I&#39;ll get you that motherboard that reminds you of the C280X you met at L3.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Fine. Also, I want you do dress in drag for the Halloween party.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;You what? No way!&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;For the sass, you&#39;re dressing in drag at the&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Christmas&lt;/i&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;&amp;nbsp;party too, and you *still* have to get me that motherboard ...&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Dave&lt;/i&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;OK. OK. (Looks around, starts typing again)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;Farmville, Dave? Are you kidding me?&lt;/span&gt;</description><link>http://www.documentroot.com/2012/12/2030-orbital-cargo-station.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-6029865378232570218</guid><pubDate>Mon, 06 Aug 2012 17:09:00 +0000</pubDate><atom:updated>2012-08-06T11:06:29.236-07:00</atom:updated><title>ProPW Password Generator</title><description>I created a password generator that makes the kind of passwords I like to use. &amp;nbsp;They are long, random and loosely follow the &lt;a href=&quot;http://correcthorsebatterystaple.net/&quot;&gt;correct horse batter staple&lt;/a&gt; philosophy. However, I have a hard time memorizing a set of 4 random words. &amp;nbsp; But for some reason, these passwords are easy for me:&lt;br /&gt;&lt;br /&gt;Click to try:&amp;nbsp;&lt;a href=&quot;http://www.documentroot.com/genpw.html&quot;&gt;http://www.documentroot.com/genpw.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description><link>http://www.documentroot.com/2012/08/propw-password-generator.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-6227819344417869798</guid><pubDate>Tue, 24 Jul 2012 02:57:00 +0000</pubDate><atom:updated>2012-07-23T19:57:08.841-07:00</atom:updated><title>Evolution of &quot;ad words&quot;</title><description>Dear Google,&lt;br /&gt;&lt;br /&gt;Adwords need an evolutionary shift toward product-and-page advertising.    I sell products and services: therefore I want to list my&lt;i&gt; products and services&lt;/i&gt;, NOT list &quot;ads&quot;.&amp;nbsp;The idea of listing &quot;ads&quot; via &quot;keywords&quot; is arcane and does not provide a satisfying user experience.&lt;br /&gt;&lt;br /&gt;I want the price of a click to be based on the likelihood of a sale, and I want you to calculate that for me, not ask me to do it and constantly log in and adjust bids.&lt;br /&gt;&lt;br /&gt;There needs to be some democratization or rotation of ads to lower-bidding users, or else you can&#39;t build your base, which is important for the long term development of Google.&lt;br /&gt;&lt;br /&gt;</description><link>http://www.documentroot.com/2012/07/evolution-of-ad-words.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3570590.post-4765921414605580527</guid><pubDate>Wed, 29 Feb 2012 21:49:00 +0000</pubDate><atom:updated>2012-03-09T12:55:42.734-08:00</atom:updated><title>gethostbyname command line</title><description>Pasteable script below.   I can&#39;t believe this doesn&#39;t exist.  No command line tool to get a host name using the resolver on linux?  &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;use Socket;&lt;br /&gt;&lt;br /&gt;$host = shift @ARGV;&lt;br /&gt;die(&quot;usage: gethostbyname hostname\n&quot;) unless(defined($host));&lt;br /&gt;&lt;br /&gt;$packed_ip = gethostbyname($host);&lt;br /&gt;&lt;br /&gt;if (defined $packed_ip) {&lt;br /&gt;    $ip_address = inet_ntoa($packed_ip);&lt;br /&gt;    print &quot;$ip_address\n&quot;;&lt;br /&gt;    exit 0&lt;br /&gt;} else {&lt;br /&gt;    warn &quot;$host not found\n&quot;;&lt;br /&gt;    exit 1&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;</description><link>http://www.documentroot.com/2012/02/gethostbyname-command-line.html</link><author>noreply@blogger.com (Erik Aronesty)</author></item></channel></rss>