<?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-3200173307098688101</id><updated>2024-09-11T19:33:05.208-07:00</updated><category term="PACER"/><category term="backup"/><category term="chevy"/><category term="courts"/><category term="debugging software development tools editors debugger IDE integrated development environment C++ C multi-threaded"/><category term="python"/><category term="sugarsync"/><category term="volt"/><category term="web 2.0"/><category term="website"/><category term="&quot;Waterfall method&quot; process &quot;computer programming&quot; &quot;software development&quot;"/><category term="ABA"/><category term="Embedded Systems Conference Tools C/C++ programming"/><category term="GM"/><category term="Haskel Functional programming performance C/C++"/><category term="ISP"/><category term="MP$"/><category term="MPG"/><category term="Microsoft .net microframework C# embedded java AONIX"/><category term="Open Soruce Cisco FCC Software Defined Radio SDR"/><category term="Posner"/><category term="REST"/><category term="Software specification software devlopment waterfall model"/><category term="VMWare"/><category term="Visual Studio C++ _w64 crash microsoft"/><category term="WebOS"/><category term="airplanes"/><category term="api"/><category term="attorney"/><category term="back in time debuging"/><category term="back in time debuging replay c/c++ programming software"/><category term="boss office politics"/><category term="c/c++"/><category term="carnegie mellon"/><category term="china"/><category term="cloud computing"/><category term="community"/><category term="conficker"/><category term="copyright"/><category term="debugging race conditions c++ threads"/><category term="debugging software development tools editors debugger IDE integrated development environment"/><category term="democrat"/><category term="drones"/><category term="engineers"/><category term="geolocal"/><category term="google app engine"/><category term="hacking"/><category term="internet"/><category term="java jit c++ inferiority complex"/><category term="jobs"/><category term="law"/><category term="law school"/><category term="liability"/><category term="local"/><category term="lockheed martin"/><category term="marketing"/><category term="medical care"/><category term="microsoft Visual Studio C++ crash debugger"/><category term="miles per gallon"/><category term="military"/><category term="nonprofit"/><category term="obama"/><category term="pornography"/><category term="programming"/><category term="replay"/><category term="republican"/><category term="resource manager"/><category term="slogan"/><category term="smoke and mirrors"/><category term="software"/><category term="spyware"/><category term="swiss"/><category term="sync"/><category term="tech"/><category term="toothbrush"/><category term="trend micro"/><category term="virus"/><category term="web"/><category term="wifi"/><category term="windriver rtlinux fsmlabs linux embedded operating system real-time"/><category term="wirless"/><title type='text'>compXnonsense</title><subtitle type='html'>Complaints from an embedded software engineer, turned intellectual property lawyer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default?start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-911631628492126223</id><published>2019-05-12T01:45:00.000-07:00</published><updated>2019-05-12T01:45:06.017-07:00</updated><title type='text'>The Death of Moore&#39;s Law Is Changing The World</title><content type='html'>Moore&#39;s Law is dead. The effect of this event are far more significant than is commonly acknowledged, and has global implications that will fundamentally change our society. The rise of China as a superpower, the end of America&#39;s global dominance, rising inequality, and growing populist resentment can all be traced back to Moore&#39;s law. Looking even further ahead, the death of Moore&#39;s law may suggest that we are entering an extended period of extremely slow human development, a neo-dark age. Whether this period lasts 10 years, 100 years, 1000 years is anyone&#39;s guess, and is unpredictable.&lt;br /&gt;
&lt;br /&gt;
This dire prediction is a large leap, one that many are hesitant to make. But it follows from a careful understanding of the ramifications of Moore&#39;s law and how it has been baked into almost every facet of society.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;What is Moore&#39;s Law&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Moore&#39;s Law is not a law at all. It was an observation made in 1965 by Gordon Moore, co-founder of Intel, that the number of transistors on a computer chip doubles every 18 months. The number of transistors on a computer chip is loosely correlated to the speed of a chip. A computer chip with double the number of transistors, can often do roughly twice as much as the previous chip.&lt;br /&gt;
&lt;br /&gt;
Thus, Moore&#39;s Law implied that computer performance would grow exponentially. Roughly every 18 months, computer chips would double in performance. Moore did not provide much reason why this was the case, he just noticed an existing trend.&lt;br /&gt;
&lt;br /&gt;
What made this Law famous and well known, is that for 50 years, it turned out to be true. For decades since this &quot;Law&quot; or more precisely &quot;prediction&quot; was made, computer chip performance has indeed improved exponentially.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the last 50 years, this prediction has been working, but now it is&lt;br /&gt;
Many suspected that this doubling every 18 months could not continue indefinitely.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;What is Exponential Growth&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Exponential growth is something increases in size as a percentage of its current size. These curves grow exceedingly quickly, and while it&#39;s possible that they can exist over a certain period of time, they are inherently unsustainable. One of the better known examples of the extreme growth of exponential curves was illustrated by a 1000 year old wheat and chessboard problem.&lt;br /&gt;
&lt;br /&gt;
Many centuries ago, a chess player challenged a king at a game of chess. If the challenger won, all he would ask for is a single grain of race on the day that he won, and that every day after he would get double the previous day, for as many days as there are on a chess board. The first day, he would get a single grain, the second day he would receive 2, the third day 4, the fourth day 8, and so one. The King, rich by controlling large fields rice, laughed at the challenger, believing that the he could easily pay such a wager.&lt;br /&gt;
&lt;br /&gt;
As the story goes, the challenger won, and the King was obliged to pay. The first handful of days, paying the challenger was a triviality. However, the King foolishly underestimated the power of exponential growth, doubling over a fixed period of time. After just a few weeks, those handful of grains would turn into thousands of tons of rice. After the full 64 days, it word turn many billions of tons of rice, bankrupting the king.&lt;br /&gt;
&lt;br /&gt;
The moral of this well known story is two fold: First, exponential growth is exceedingly fast, faster than most people can intuitively comprehend. The second, is that it is unsustainable. Had the wager continued for 100 days instead of just 64, the King would need to give the challenger enough rice to equal the weight of the entire planet earth.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Exponential Growth in Computer Chips is Not Just about Computer Chips&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
Anyone who has lived through the years 1960 to roughly 2010 has experienced exponential growth. For many decades, society has marveled at the speed of innovation. Though everyone would grumble about having to replace their computer ever two years because their previous one had become obsolete, these complaints had an element of pride that technology was improving rapidly.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However, the exponential growth in computing power through the latter half of the 20th century was not just about appeasing computer enthusiasts marveling at the wonders of technology, it had significant real-world impact.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Computers have fundamentally changed how companies do business. Obvious examples are spreadsheet applications, which fundamentally changed accounting. However, computers effected every industry in existence. Airlines could become far more efficient by finding ways to pack more people on to a plane. Customer support operators could handle far more requests by more efficiently routing questions. Farmers could better predict crop outcomes using more advanced computer intensive weather models. Brands could create global reach almost instantly, in what would have previously been a major labor intensive effort.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In short, computer chips affected almost every facet of commercial business. A single person could do much more with a computer in front of them than on their own, they could be far more efficient.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;Why Efficiency Matters&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
A common measure of the power and wealth of a country is its Gross Domestic Product. One way of calculating a country&#39;s GDP is multiplying the number of people in a country with the average amount that they produce, often approximated by their take-home pay.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Thus, a country&#39;s GDP can be increased by either increasing the population, or by causing each person to produce more on average. Short term variations, i.e., 10 years, can occur due to cyclical credit cycles, but averaged out over decades, productivity and population largely determine GDP.&lt;br /&gt;
&lt;br /&gt;
The growth of the U.S. economy in the latter half of the 20th century is largely attributed to these two factors: the population increased, and the output per person also increased.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There aren&#39;t too many ways to make an individual output more. Sure, they can either work longer hours, but more commonly, they can use tools that allow them to do more in the same amount of time. A mechanic with a power drill can get things done much faster than one with a screw driver. An accountant with a spreadsheet can work much more quickly than one using pencil and paper.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;What has Historically Driven Increased Efficiency&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Two events have dramatically improved worker productivity over the last 150 years: the industrial&amp;nbsp; and information revolution. Trains allowed the same number of humans to move far more goods than guides on horseback. Instant global communications have allowed businesses to react far more quickly than relying on postal mail.&lt;br /&gt;
&lt;br /&gt;
Both the industrial revolution, which occurred roughly from 1850 to 1950, and the information revolution, which occurred roughly from 1960 to 2010, are called revolutions precisely because change occurred at an exponential rate.&lt;br /&gt;
&lt;br /&gt;
Coming Up:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Why exponential improvements allow everyone to improve;&lt;/li&gt;
&lt;li&gt;Why exponential improvements to computer chips were the bedrock of increased efficiencies over the last 50 years;&lt;/li&gt;
&lt;li&gt;Why these improvements are hitting a wall;&lt;/li&gt;
&lt;li&gt;How the market has responded to this wall;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;How capital and labor are affected to the end of exponential productivity growth;&lt;/li&gt;
&lt;li&gt;How developing countries are affected by the end of exponential growth, and what it means ofr the U.S.&lt;/li&gt;
&lt;li&gt;What does all this mean for long term human development.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/911631628492126223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/911631628492126223?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/911631628492126223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/911631628492126223'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2019/05/the-death-of-moores-law-is-changing_12.html' title='The Death of Moore&#39;s Law Is Changing The World'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-1461465792310364162</id><published>2019-05-12T01:31:00.003-07:00</published><updated>2019-05-12T01:31:41.710-07:00</updated><title type='text'>The Death of Moore&#39;s Law is Changing the World - Short Version</title><content type='html'>Moore&#39;s law has lead to exponential computational growth over the past 50 years, but it&#39;s been dead since roughly 2010. The consequences are incredibly important, and listed below in reverse chronological order (future events come first, past events come last):&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Increased global income inequality;&lt;/li&gt;
&lt;li&gt;The rise of China&#39;s influence at the expense of the U.S.&#39;s leadership hegemony;&lt;/li&gt;
&lt;li&gt;Increased tension between workers and capitalists;&lt;/li&gt;
&lt;li&gt;Worker productivity becoming flat;&lt;/li&gt;
&lt;li&gt;Stagnant technological innovation in computers and healthcare;&lt;/li&gt;
&lt;li&gt;More reliance on branding, advertising, and influence as a marker of value;&lt;/li&gt;
&lt;li&gt;Greater reliance on custom computer chips (ASICs) rather than general purpose processors;&lt;/li&gt;
&lt;li&gt;The transition to cloud computing;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
These issues, some which have already happened, and some which will happen, are a direct result of the death of Moore&#39;s law. I don&#39;t have space to put out an explanation right now, but will try to follow up.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/1461465792310364162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/1461465792310364162?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/1461465792310364162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/1461465792310364162'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2019/05/the-death-of-moores-law-is-changing.html' title='The Death of Moore&#39;s Law is Changing the World - Short Version'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-6756378071631915991</id><published>2017-07-14T11:45:00.003-07:00</published><updated>2017-07-14T11:45:50.969-07:00</updated><title type='text'>Moore&#39;s Law is Dead</title><content type='html'>My current laptop is three years old, a then &lt;b&gt;top-of-the-line &lt;/b&gt;Dell XPS 15. After three years, I felt I could use an upgrade, so naturally I went to dell.com to check out the latest and greatest XPS 15. The newer edition sports a nicer screen and the RAM is up-gradable to 32GB instead of 16, but the other specs are pretty similar.&lt;br /&gt;
&lt;br /&gt;
Perhaps &lt;b&gt;the most disappointing aspect of the newer XPS 15 laptop is the CPU&lt;/b&gt;. The new XPS 15 uses an Intel Core i7-7700HQ, whereas my three year old XPS 15 uses a i7-4702HQ. According to cpubenchmark.com, the&amp;nbsp;&lt;a href=&quot;http://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-7700HQ+%40+2.80GHz&quot;&gt;newer chip gets a speed score of 8987&lt;/a&gt;&amp;nbsp;whereas the older chip gets a &lt;a href=&quot;https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-4702HQ+%40+2.20GHz&quot;&gt;speed score of 7523&lt;/a&gt;. That&#39;s &lt;b&gt;less than a 20% improvement in speed &lt;/b&gt;after three years of R&amp;amp;D. Even worse, the newer chip uses a 45W of power whereas the older one used 37W, which is more than a &lt;b&gt;20% increase in power usage and battery depletion&lt;/b&gt;. Obviously, it&#39;s unclear whether we can rely on cpubenchmark.com as a linear description of performance, but that is ostensibly the purpose of the benchmark.&lt;br /&gt;
&lt;br /&gt;
I pretty saddened that after three years of developing the latest and greatest chips, it seems that Intel has only increased speed to the detriment of power usage.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/6756378071631915991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/6756378071631915991?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6756378071631915991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6756378071631915991'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2017/07/moores-law-is-dead.html' title='Moore&#39;s Law is Dead'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-7929579672592314125</id><published>2012-10-24T20:19:00.002-07:00</published><updated>2012-10-25T00:46:51.336-07:00</updated><title type='text'>Django + Google App Engine + MapReduce</title><content type='html'>If you&#39;re using Django-nonrel on Google App Engine, mapreduce will not work out of the box. I put a bit of work getting it running. Fortunately, I was not the first. &lt;a href=&quot;http://eatdev.tumblr.com/post/17983355135/using-mapreduce-with-django-nonrel-on-app-engine&quot;&gt;This blog post&lt;/a&gt;&amp;nbsp;suggests some code to get you started and allow you to run a mapper on all of our entities. &amp;nbsp;Unfortunately it only allows you to map app engine entities, not Django entities. &amp;nbsp;The code below fixes that issue. It works in a similar way, but performs a Django &quot;get&quot; before running the mapper to convert a key into a Django entity. This adds a bit more overhead; one more get per map.&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;class DjangoEntityInputReader(&lt;wbr&gt;&lt;/wbr&gt;AbstractDatastoreInputReader):&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;An input reader that takes a Django model (&#39;app.models.Model&#39;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;and&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;yields&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;entities for that model&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;span style=&quot;border: 0px; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;   &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;def _iter_key_range(self, k_range):&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;query = Query(util.for_name(self._&lt;/span&gt;&lt;wbr style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;entity_kind)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;).get_compiler(using=&quot;default&quot;&lt;/span&gt;&lt;wbr style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;).build_query()&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;raw_entity_kind = query.db_table&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;query = k_range.make_ascending_&lt;/span&gt;&lt;wbr style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;datastore_query(&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;raw_entity_kind, keys_only=True)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;for key in query.Run(config =&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;datastore_query.QueryOptions(&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;wbr style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;batch_size=self._batch_size)):&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;color: #222222; font-size: 13px;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;  &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; white-space: pre;&quot;&gt;&amp;nbsp;   &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;yield key, eval(self._entity_kind).&lt;/span&gt;&lt;wbr style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;/wbr&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;objects.get(pk=&lt;/span&gt;&lt;a href=&quot;http://key.id/&quot; style=&quot;border: 0px; color: #6611cc; cursor: pointer; font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; target=&quot;_blank&quot;&gt;key.id&lt;/a&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;())&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;@classmethod&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;def _get_raw_entity_kind(cls, entity_kind):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;A bit of a hack, returns a table name based on entity kind.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&#39;&#39;&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;return entity_kind.replace(&quot;.models.&quot;,&quot;_&quot;).lower()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12.727272033691406px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;To use code above, you would place the above class in your views.py and use the following in your mapreduce.yaml:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- name: My mapper&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; mapper:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; input_reader: myapp.views.DjangoEntityInputReader&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; handler: myapp.my_mapper&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; params:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;/span&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; - name: entity_kind&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #222222;&quot;&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; default: myapp.models.MyModel&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
That&#39;s all you need to get mapreduce up and running, but there is an additional problem. &amp;nbsp;Mapreduce uses a property called &quot;__scatter__&quot; to scramble up the entities and assign them to a proper map reduce shard. &amp;nbsp;However, Django does not have the __scatter__ property, so&amp;nbsp;what happens is that all of the entities get assigned to a single map reduce shard. You do not get to enjoy the massive parallelism of mapreduce. In order to make the change, you&#39;ll need some code of mine, which &lt;a href=&quot;http://code.google.com/p/appengine-mapreduce/issues/detail?can=1&amp;amp;start=0&amp;amp;num=100&amp;amp;q=&amp;amp;colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary&amp;amp;groupby=&amp;amp;sort=&amp;amp;id=3&quot;&gt;I posted here&lt;/a&gt;. Feel free to&amp;nbsp;please &lt;a href=&quot;mailto:mes65@cornell.edu&quot;&gt;contact me&lt;/a&gt; if you have any questions.&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/7929579672592314125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/7929579672592314125?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/7929579672592314125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/7929579672592314125'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2012/10/django-google-app-engine-mapreduce.html' title='Django + Google App Engine + MapReduce'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-6672903091156820600</id><published>2012-09-30T18:15:00.000-07:00</published><updated>2012-11-13T08:41:47.255-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="api"/><category scheme="http://www.blogger.com/atom/ns#" term="courts"/><category scheme="http://www.blogger.com/atom/ns#" term="PACER"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><title type='text'>PACER API with REST Interface Released</title><content type='html'>I had &lt;a href=&quot;http://compxnonsense.blogspot.com/2012/01/us-courts-pacer-accessible-open-source.html&quot;&gt;previously written a short blog entry&lt;/a&gt; on my open source PACER API. The open source project is ongoing, but I have recently devoted my efforts to &lt;a href=&quot;http://www.docketalarm.com/&quot;&gt;Docket Alarm&lt;/a&gt;&amp;nbsp;and its&amp;nbsp;online PACER REST API, which is now substantially complete.&lt;br /&gt;
&lt;br /&gt;
Docket Alarm&#39;s API allows users to search for docket information from Federal courts and pull the information using a simple REST interface. &amp;nbsp;The API has a wide variety of potential&amp;nbsp;applications, especially for due diligence. &amp;nbsp;For example, an application that assists in originating loans could use the API to&amp;nbsp;automatically&amp;nbsp;look up a&amp;nbsp;potential creditor&#39;s&amp;nbsp;bankruptcy or litigation history.&lt;br /&gt;
&lt;br /&gt;
The API can search by name, geographic location, date range and a number of other fields. &amp;nbsp;Additional fields can be added by request. &amp;nbsp;Once a search is complete, the API can access the case&#39;s&amp;nbsp;docket text and associated meta-data. The meta-data contains fields like the judge&#39;s name, all of the party names, and the lawyers associated with each party.&amp;nbsp;Finally, the API allows you to pull individual documents as PDFs. &amp;nbsp;Put together, it is a relatively complete set of features for a variety of applications.&lt;br /&gt;
&lt;br /&gt;
The API only exposes a small subset of the features the features available on the greater website&amp;nbsp;&lt;a href=&quot;http://www.docketalarm.com/&quot;&gt;Docket Alarm&lt;/a&gt;. &amp;nbsp;If requested, additional features can be added.&lt;br /&gt;
&lt;br /&gt;
The API specification is currently live and fully documented. Documentation is &lt;a href=&quot;http://www.docketalarm.com/site_media/api/DocketAlarmAPISpecificationV1.pdf&quot;&gt;located here&lt;/a&gt;. If you are interested in using this feature, please &lt;a href=&quot;mailto:michael@docketalarm.com&quot;&gt;let me know&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/6672903091156820600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/6672903091156820600?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6672903091156820600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6672903091156820600'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2012/09/pacer-api-released.html' title='PACER API with REST Interface Released'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-8724607293910587059</id><published>2012-04-10T20:58:00.001-07:00</published><updated>2012-04-10T20:58:07.454-07:00</updated><title type='text'></title><content type='html'>9th circuit rules that violating a website&#39;s terms of service is not criminal.&lt;br /&gt;&lt;a href=&quot;http://ping.fm/8Ei07&quot;&gt;http://ping.fm/8Ei07&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/8724607293910587059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/8724607293910587059?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8724607293910587059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8724607293910587059'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2012/04/9th-circuit-rules-that-violating.html' title=''/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-8635137268047352990</id><published>2012-01-23T18:50:00.000-08:00</published><updated>2012-02-19T16:05:36.557-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="courts"/><category scheme="http://www.blogger.com/atom/ns#" term="law"/><category scheme="http://www.blogger.com/atom/ns#" term="PACER"/><title type='text'>U.S. Courts PACER: An Accessible, Open-Source API</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Get Access to All Information on the U.S. Courts Docketing System&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
Anyone who has tried to look up a court case on a government website has run into the Public Access to Court Electronic Records system, or as everyone calls it: PACER.  I have developed and &lt;a href=&quot;https://gitorious.org/pacer-us-courts-api&quot;&gt;just released a new API&lt;/a&gt;, that gives programmers access to all public information on the U.S. Federal Courts docketing system.&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Features include:&lt;/div&gt;
&lt;div&gt;
1. Search for cases by party name, docket number, and filing date.&lt;/div&gt;
&lt;div&gt;
2. Retrieve the names of parties to a case, their attorneys, and law firms.&lt;/div&gt;
&lt;div&gt;
3. Download the entire docket of a particular case.&lt;/div&gt;
&lt;div&gt;
4. Download pdfs of individual filings and their attachments.&lt;/div&gt;
&lt;div&gt;
5. Keep track of costs of each PACER transaction.&lt;/div&gt;
&lt;div&gt;
Right now, there are hooks into all Federal District Courts, most Appeals Courts, most Bankruptcy Courts and also the I.T.C. I am not aware of any other service or API which offers something similar for the I.T.C.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This project does not make PACER free. It still costs $0.08 per page (which can add up quickly). Although the API works perfectly as stand-alone python, it can plug into Django (or any other python framework) very easily. There are also hooks (and some meager documentation) to make it work on google app engine.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Also note that this project is released under the AGPL, a free and open-source license, but one which requires you to open-source your code if you use it in a program or a web-app.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The project can be found:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://gitorious.org/pacer-us-courts-api&quot;&gt;https://gitorious.org/pacer-us-courts-api &lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
I am building a web-service which exposes a REST API to PACER and it will use this open-source API. If you are interested in learning more, &lt;a href=&quot;mailto:mes65@cornell.edu&quot;&gt;let me know&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/8635137268047352990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/8635137268047352990?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8635137268047352990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8635137268047352990'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2012/01/us-courts-pacer-accessible-open-source.html' title='U.S. Courts PACER: An Accessible, Open-Source API'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-4232183623364948059</id><published>2011-09-27T19:08:00.001-07:00</published><updated>2012-09-30T18:16:31.333-07:00</updated><title type='text'></title><content type='html'>Studying hard? Check out my friend&#39;s flashcard app: &lt;a href=&quot;http://www.kleio.info/&quot;&gt;www.kleio.info&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/4232183623364948059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/4232183623364948059?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/4232183623364948059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/4232183623364948059'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/09/studying-hard-check-out-my-friends.html' title=''/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-7330829767084933335</id><published>2011-09-14T22:09:00.001-07:00</published><updated>2011-09-14T22:09:34.518-07:00</updated><title type='text'></title><content type='html'>Found a mirror for android source despite kernel.org (and android.git.kernel.org) being down: &lt;a href=&quot;http://ping.fm/MXbba&quot;&gt;http://ping.fm/MXbba&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/7330829767084933335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/7330829767084933335?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/7330829767084933335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/7330829767084933335'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/09/found-mirror-for-android-source-despite.html' title=''/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-6368557738250061798</id><published>2011-09-09T13:17:00.001-07:00</published><updated>2011-09-09T13:17:52.001-07:00</updated><title type='text'></title><content type='html'>First time a hacking incident directly effected my productivity... kernel.org is down, no more android source.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/6368557738250061798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/6368557738250061798?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6368557738250061798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6368557738250061798'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/09/first-time-hacking-incident-directly.html' title=''/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-4707493742626192569</id><published>2011-07-21T09:11:00.000-07:00</published><updated>2011-07-21T09:15:33.938-07:00</updated><title type='text'>What is s.nsdsvc.com?</title><content type='html'>I have been getting a bunch of hits from http://s.nsdsvc.com/App/DddWrapper.swf?c=3. The hits seem like real people, not robots. But there&#39;s nothing on that website. Their whois information is private. If you go to that page you just get a blank flash script (is it blank?).  Some random post &lt;a href=&quot;http://forums.adobe.com/message/3735528&quot;&gt;mentions it&lt;/a&gt; and it seems to be related to adobe, but that may be just because it&#39;s a &quot;.swf&quot;. Anyone have any better ideas? &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My guess is that it&#39;s a script for bouncing people from one site to another, but I really have no idea.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/4707493742626192569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/4707493742626192569?isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/4707493742626192569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/4707493742626192569'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/07/what-is-snsdsvccom.html' title='What is s.nsdsvc.com?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-3993758308461849105</id><published>2011-04-14T11:29:00.001-07:00</published><updated>2011-06-15T15:07:48.171-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="spyware"/><category scheme="http://www.blogger.com/atom/ns#" term="trend micro"/><title type='text'>Trend Micro is Recording Your Every Mouse-Click</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Many of us use some sort of anti-virus protection. One of the more popular products is Trend Micro. After a bit of investigating, I have concluded that &lt;b&gt;once you install a Trend Micro anti-virus product, their software records every link that you click on the internet and sends that information back to Trend Micro servers&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Recommendation: Trend Micro is Spyware. Uninstall it immediately.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;u&gt;Investigation - Odd Website Behavior&lt;/u&gt;:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I run a small website. I am kind of obsessed at making sure my site is operating properly and I monitor the logs closely. I started noticing some unusual activity. &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;To access a large part of my site, you have to be logged in. However, I started noticing requests from users who were not logged in; it appeared they were clicking on links that required them to be logged in. &lt;/span&gt;For example, if someone wants to search the database on my site, they must first log in. I saw quite a bit of activity of people who were not logged in trying to search my database. A normal user would never normally do this because in order to get to the search page, you must first log in. When a user tries to search without logging in, the search fails and returns an error message. (Note: It could also happen if the user logs in, keeps their browser open until their session expires and does a searche. However, this is relatively uncommon and was not happening with the frequency I was seeing).&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;u&gt;A Possible Connection to Trend Micro&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;The strange activity got kept on happening over and over again and it got me suspicious. I checked the IP addresses of the users that did these types of searches. I found that several different IPs contributed to the vast majority of these types of errors. I did a reverse DNS on the IP address and I found that every single one of them comes from a Trend Micro server.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I thought that was strange and I wondered why or how Trend Micro was clicking around on my site. Then I noticed that every single one of the queries that came from Trend Micro, was done by a real logged-in person earlier. Sometimes a user would do it days earlier, sometimes hours. But there was no truly unique request coming from Trend Micro.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I then noticed that my site was getting requests to the administrator area. These areas are unexposed to the open internet and should only be accessed by me. I had an &quot;ah ha&quot; moment when I saw that Trend Micro is the installed anti-virus program on my work computer, where I occasionally view the administrator pages.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I have to conclude that Trend Micro is recording the requests from every user that has installed its software. The software must record the user’s internet requests and send them to Trend Micro. Then Trend Micro re-runs them again, probably to do some security analysis. &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;I have no idea what else Trend Micro is recording. The only thing I know for certain is that they record what you click on the internet. However, it is certainly possible, and based on Trend Micro&#39;s past behavior it is probable, that they are recording your every move on your computer.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;u&gt;&lt;b&gt;An Explanation?&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I searched the Trend Micro website and I could not find anything that actually discloses what they are doing. My guess however is that it is involved with the &lt;a href=&quot;http://us.trendmicro.com/us/trendwatch/core-technologies/smart-protection-network/&quot;&gt;Trend Micro Smart Protection Network&lt;/a&gt;.  The website says that it &quot;[l]everag[es] cloud computing across Trend Micro&#39;s security solutions and services.&quot; However it does not say that it is tracking everyone&#39;s click and movement on the internet.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;If Trend Micro is doing what it appears they are doing, it is a huge affront to your privacy and they may be violating the law. Users of any software should know what the software is doing and have an opportunity to turn it off. Trend Micro has not been upfront with their reprehensible behavior.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;u&gt;IP Addresses&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Below are some of the IP addresses where I noticed this traffic. All of them are registered to Trend Micro. The 150.70.x.x IPs are registered in Japan and the 216.104.x.x IPs are registered in Cupertino, California.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;150.70.172.107&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;150.70.64.195 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;150.70.75.27&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;216.104.15.130 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;216.104.15.138&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;216.104.15.142 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;216.104.15.134&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;There are probably more IPs than the ones listed above, these are only a snapshot from a couple of days. I am considering blacklisting them from my site.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/3993758308461849105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/3993758308461849105?isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/3993758308461849105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/3993758308461849105'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/04/trendmicro-is-recording-your-every.html' title='Trend Micro is Recording Your Every Mouse-Click'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-5268458989220096861</id><published>2011-03-21T07:35:00.000-07:00</published><updated>2011-03-21T07:49:16.845-07:00</updated><title type='text'>Lincoln Lawyer: Just a big law-school hypo?</title><content type='html'>I just saw Lincoln Lawyer this weekend. It seemed like a good movie but I was not really able to enjoy it. The entire time it brought me back to my professional responsibility class, which I&#39;m taking this semester. Throughout the two hour movie I could not stop analyzing the dozen or so legal ethics issues that popped up. Some of the issues are pretty clear cut: In the first five minutes, the lead protagonist intentionally delays his client&#39;s case because his client hadn&#39;t paid him. But other issues including attorney client privilege and conflicts are harder and the entire time my mind was racing through model rules of professional responsibility.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The movie is filled with plenty cliches and cheesy scenes (getting paid in cash by a motorcycle gang), but it also has some good ones too (&quot;There is no client as scary as an innocent man.&quot;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall a pretty good movie. But if you&#39;re a law student watching it, try to relax and enjoy rather than treating it like a law school exam.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/5268458989220096861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/5268458989220096861?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5268458989220096861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5268458989220096861'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/03/lincoln-lawyer-just-big-law-school-hypo.html' title='Lincoln Lawyer: Just a big law-school hypo?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-5894962421910751039</id><published>2011-02-14T08:09:00.000-08:00</published><updated>2011-02-14T10:46:54.690-08:00</updated><title type='text'>Addicted to Logs</title><content type='html'>I released my website just a week or two ago. Since then, I&#39;ve probably checked and rechecked the server logs a hundred times a day. I&#39;m totally addicted. I now check them more than email. When I&#39;m away from my computer I get nervous thinking about the activity I&#39;m missing.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I love the most is sitting there refreshing the logs watching a user&#39;s every move. I see what pages they click on and how long they stay on a page. I try to imagine them sitting there, reading the different blurbs and thinking about where to click next. When they inevitably navigate away from my site I wonder in agony why they would leave. Was the price too high? Does the site look too unprofessional or do they think it&#39;s a scam? Or is there some random browser bug on their system that caused it to be displayed improperly? I may never know. But I always blame myself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I continue hitting refresh. The unrelenting self-doubt wont stop me from eavesdropping on the next person who comes on the site. I&#39;ll change some text here tweak the layout there. I keep wanting to slash and burn whole areas of the site but I&#39;m also too scared to touch it because it works sort-of.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think I&#39;ll just stay here and keep watching.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/5894962421910751039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/5894962421910751039?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5894962421910751039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5894962421910751039'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/02/addicted-to-logs.html' title='Addicted to Logs'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-658025560945130733</id><published>2011-02-10T13:46:00.000-08:00</published><updated>2011-02-10T15:37:20.465-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="attorney"/><category scheme="http://www.blogger.com/atom/ns#" term="jobs"/><category scheme="http://www.blogger.com/atom/ns#" term="law school"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="website"/><title type='text'>New Website</title><content type='html'>It can be difficult to keep your programming teeth sharp while studying in law school, but I&#39;ve done  just that. I&#39;m happy to say that after learning a host of technologies (see previous post), my new website is largely complete.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The result is &lt;a href=&quot;http://www.resumelaunchpad.com/&quot;&gt;Resumé Launchpad&lt;/a&gt;. I got the idea for the website while applying to law firms during the end of my first year of law school. It&#39;s a tedious process. There are widely published databases containing the firm names, human resources representative names, and email addresses. So the process normally involves building a generic cover letter, copying and pasting the appropriate information into the cover letter, and blasting the email off.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you first start, you try to customize the cover letter to each firm.  It wouldn&#39;t be uncommon for me to spend a good twenty to forty minutes per cover letter. But after doing a dozen of these and receiving only form rejection letters, you begin to realize that quantity is more important that quality. Then you literally just modify the name of the firm and recipient and send the email blindly hoping for the best. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I ran into problems. I tried tracking everything in excel, but on several occasions I sent the my application to the same person twice. Worse than that, sometimes I would copy &amp;amp; paste incorrectly and get the firm&#39;s name, the recipient&#39;s name, or their gender wrong. After sending nearly a hundred cover letters like this, my programming instincts got the better of me and I decided to automate the process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I put together a database of legal employers from widely available sources (all legit). Then I wrote a python program which was kind of like a mail-merge on steroids; it could send hundreds of customized emails to various recipients stored in a local database. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, the day of reckoning came. I put together my cover letter, resumé, and other attachments and let my program do its thing.  I sent about three hundred emails in a couple of  minutes.  What would have taken me hours and days took only seconds.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was successful. I got a number of interviews at some very prestigious firms.  At the time, I didn&#39;t see it as a product, but more as a tool to make life easier for me. The idea to build a general-purpose web interface to my program started percolating.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The rest is programming history. I learned how to put together a modern complex site and two weeks ago I launched it to the world.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you&#39;re an attorney, law student, paralegal, or legal secretary and you&#39;re looking for legal work, check out &lt;a href=&quot;http://www.resumelaunchpad.com&quot;&gt;www.resumelaunchpad.com&lt;/a&gt;.&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/658025560945130733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/658025560945130733?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/658025560945130733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/658025560945130733'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2011/02/new-website.html' title='New Website'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-8409010541399730355</id><published>2010-11-20T15:32:00.001-08:00</published><updated>2010-11-20T19:48:35.249-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google app engine"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="web 2.0"/><category scheme="http://www.blogger.com/atom/ns#" term="website"/><title type='text'>Websites....</title><content type='html'>I consider myself a pretty competent programmer. I can pick up a new language / programming environment in a day and hammer out a cool prototype within three or four days. So when I had an idea for a website, I jumped right in.&lt;br /&gt;&lt;br /&gt;Let me start of at the end... the website works! It&#39;s in private beta right now and I hope to release it to all in a month.&lt;br /&gt;&lt;br /&gt;But it&#39;s been a long hard slog; far more work than I imagined. The last website I built was circa 2001. It was really advanced for its time: simple javascript and flash animations! Now, in this Web 2.0 world, &quot;simple&quot; anything won&#39;t cut it. It&#39;s not just that javascript has changed and flash  has been dropped. Today, the list of technologies to choose from to build a site is staggering.&lt;br /&gt;&lt;br /&gt;But even if you don&#39;t want to learn everything, say you just want to learn enough to put something decent together; well you&#39;re still in for a steep learning curve. Here&#39;s the list of mandatory technologies I&#39;ve had to either know or learn to jump into the Web 2.0 world:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Advanced Javascript&lt;/span&gt; - learning object oriented programming the javascript way is definitely something new. It isn&#39;t bad, there&#39;s a lot to like about javascript, just different.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;HTML&lt;/span&gt; - Remember the days when tags like &quot;center&quot; and &quot;table&quot; were your friend? Forget it, you&#39;re just using div and span now.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;CSS&lt;/span&gt; - I hate CSS. It isn&#39;t a programming language at all. It&#39;s fine for colors and sizes. But once you use it to do layout, your headaches will begin. It&#39;s an art more than a science and nothing feels deterministic:&lt;br /&gt;Do you use the &quot;top&quot; or &quot;margin-top&quot; attribute? Who knows, try both.&lt;br /&gt;Why do we have both  inline and inline-block? Because we can.&lt;br /&gt;Unfortunately, CSS is the only thing out there that does what you want. You just have to swallow it.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;python&lt;/span&gt; - Admittedly, I was  already pretty well versed in python (i luv python). If you don&#39;t want python, you&#39;re  going to have to learn PHP or one of the other web-programming  languages.&lt;/li&gt;&lt;/ul&gt;And those are just the languages you&#39;ll need to learn. The fun really begins when you include all the libraries:&lt;ul&gt;&lt;span&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;jQuery&lt;/span&gt; - Very cool, I must admit. But for the uninitiated, it&#39;s totally different from anything you&#39;ve done before.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;jQuery Plugins&lt;/span&gt; - There&#39;s a jQuery plugin for everything. Great. Unfortunately, its a new API you have to learn to do anything.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Django&lt;/span&gt; - The web-backend. Cool technology but pretty massive and you have to learn quite a bit of it to do anything. Oh, did I mention that to use Django you have to learn its own special html-markup language too? It can easily take a day of tutorials to get familiar with the system. I&#39;ve been working with it for a month now and I&#39;ve only started becoming comfortable.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Google App Engine&lt;/span&gt; - It isn&#39;t necessary to learn google app engine. But they&#39;re a ridiculously cheap web-hosting solution... actually, for most cases it&#39;s totally free. But they do things so totally different, that there is a nice learning curve. To start with, there is no file system. Enjoy.&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span&gt;And perhaps I forgot the biggest pain: compatibility between different browsers. Just when you think you put the final touches on your beautiful site, you check it out on a different browser and it looks like crap. I&#39;m not a Microsoft-hater, but this experience has definitely left a sour taste in my mouth for IE and I haven&#39;t even tried the mobile browsers.&lt;br /&gt;&lt;br /&gt;Moral of the story is that making a website is pretty complicated involving nearly a dozen technologies. But websites are the future (ahem, present) and it feels pretty gratifying being able to put a real-life site online.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/8409010541399730355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/8409010541399730355?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8409010541399730355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8409010541399730355'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2010/11/websites.html' title='Websites....'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-8995865593035828071</id><published>2010-11-20T15:02:00.000-08:00</published><updated>2010-11-20T15:06:23.107-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="airplanes"/><category scheme="http://www.blogger.com/atom/ns#" term="china"/><category scheme="http://www.blogger.com/atom/ns#" term="drones"/><category scheme="http://www.blogger.com/atom/ns#" term="engineers"/><category scheme="http://www.blogger.com/atom/ns#" term="military"/><title type='text'>More Employed U.S. Engineers!</title><content type='html'>I saw &lt;a href=&quot;http://online.wsj.com/article/SB10001424052748703374304575622350604500556.html?mod=WSJ_hp_mostpop_read&quot;&gt;this article&lt;/a&gt; about China&#39;s new UAV drones, some of which are superior in some ways than America&#39;s. Most patriots probably have a knot in their stomach, concerned that China just beat us in one more thing.&lt;br /&gt;&lt;br /&gt;Don&#39;t fret! Rejoice!&lt;br /&gt;&lt;br /&gt;This is the beginning of a new arms race! No U.S. chief of staff will let some other country have something that flies faster, harder, or longer than our overly expensive aircraft. They&#39;re going to have to make something better. That in turn, means more big expensive projects and more employed engineers. Looking forward to it!</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/8995865593035828071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/8995865593035828071?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8995865593035828071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8995865593035828071'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2010/11/more-employed-us-engineers.html' title='More Employed U.S. Engineers!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-6020854393601544016</id><published>2010-02-26T11:01:00.000-08:00</published><updated>2010-02-26T11:02:46.416-08:00</updated><title type='text'>Bloom Energy Hype</title><content type='html'>&lt;b&gt;There has been quite a bit of hub-ub about Bloom energy. Probably overly hyped. People have been making SOFC fuel cells for years. I don&#39;t know why he thinks he can make them so cheap.&lt;br /&gt;&lt;br /&gt;If you want to see Blooms patents, everything is online:&lt;br /&gt;&lt;br /&gt;http://tinyurl.com/BloomEnergyPatent&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/6020854393601544016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/6020854393601544016?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6020854393601544016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/6020854393601544016'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2010/02/bloom-energy-hype.html' title='Bloom Energy Hype'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-3985090450758001536</id><published>2009-11-02T18:59:00.000-08:00</published><updated>2011-02-10T15:41:32.442-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="medical care"/><category scheme="http://www.blogger.com/atom/ns#" term="Posner"/><category scheme="http://www.blogger.com/atom/ns#" term="swiss"/><title type='text'>Posner off his Rocker</title><content type='html'>I usually enjoy reading the &lt;a href=&quot;http://www.becker-posner-blog.com/index.html&quot;&gt;Posner-Becker blog&lt;/a&gt; for its great analysis of current events. But a &lt;a href=&quot;http://www.becker-posner-blog.com/archives/2009/10/should_the_swis.html&quot;&gt;recent post&lt;/a&gt; has really amazed me in its stupidity. The article is generally &lt;span style=&quot;font-style: italic;&quot;&gt;ok&lt;/span&gt;, but Posner makes two extremely ridiculous arguments.&lt;br /&gt;&lt;br /&gt;First, Posner rants about how American&#39;s health care system is a result of &quot;&lt;span style=&quot;font-style: italic;&quot;&gt;a large &#39;underclass&#39; (corresponding to the residents of our inner cities) that is poor and has a very high murder rate and high infant mortality and a high incidence of AIDS and other diseases.&lt;/span&gt;&quot; As a federal judge, you would think that Posner would support his argument with some facts. As it turns out &lt;a href=&quot;http://www.sullivan-county.com/nf0/dispatch/pov_myths.htm&quot;&gt;less than a quarter of the United State&#39;s poor live in cities&lt;/a&gt;. Most live in rural areas. Look a bit harder before blaming America&#39;s health problems on the urban areas.&lt;br /&gt;&lt;br /&gt;Posner&#39;s next argument is that Europeans expect worse medical care than Americans because they are more &quot;fatalistic.&quot; Posner has no idea what he is talking about and is totally speculating. Well I thought I would add my own counter-speculation... American&#39;s are far more religious than Europeans and are much more likely to accept their &quot;fate&quot; and refuse further medical procedures than Europeans. Because Europeans are less devout they are  are more likely to do a rational analysis of their medical situation. Also, Europeans are on average more educated and are probably more informed of their medical options. Of course my facts (at least pertaining to the second paragraph) are just as unsubstantiated as Posners.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/3985090450758001536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/3985090450758001536?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/3985090450758001536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/3985090450758001536'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/11/posner-off-his-rocker.html' title='Posner off his Rocker'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-5899914136658466147</id><published>2009-09-19T11:07:00.000-07:00</published><updated>2009-09-19T11:16:19.154-07:00</updated><title type='text'>Iqbal Strikes Orly Tatz!</title><content type='html'>Last May the Supreme Court of the United States issued its decision &lt;a href=&quot;http://www.google.com/url?q=http://www.supremecourtus.gov/opinions/08pdf/07-1015.pdf&amp;amp;sa=U&amp;amp;ei=CB61StKSIqmy8QaLqZTPCw&amp;amp;ct=res&amp;amp;cd=1&amp;amp;sig2=Ak5XEzZNuCXrPd5nJiKeEg&amp;amp;usg=AFQjCNEjFvJvR3UIBHMPi_Go5UQyC87c8g&quot;&gt;Ashcroft v. Iqbal&lt;/a&gt;. The case concerned Iqbal who was the unwitting victim of the post-9/11 round-up of suspected terrorists. Even though there was little evidence that Iqbal was a terrorist, the government used a variety harsh interrogation tactics on him and kept him in jail for many months. Iqbal sued the government and the case went to the supreme court. The court threw out Iqbal&#39;s case. What was special in this case is that they threw out the case at a very early stage of the litigation, at the pleading stage. Previously, it was very easy to get passed the pleading stage.&lt;br /&gt;&lt;br /&gt;Now, the holding in Ashcroft v. Iqbal has now been used against Orly Tatz, who claimed that Barack Obama was not born in the United States and therefore is ineligible to be President. Citing Iqbal, the court said that &quot;To state a claim upon which relief may be granted, Plaintiff must allege sufficient facts to state a claim to relief that is plausible on its face.&quot;&lt;br /&gt;&lt;br /&gt;It will be interesting to see if this holds up on appeal.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/5899914136658466147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/5899914136658466147?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5899914136658466147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/5899914136658466147'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/09/iqbal-strikes-orly-tatz.html' title='Iqbal Strikes Orly Tatz!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-114096140017588528</id><published>2009-03-30T12:32:00.001-07:00</published><updated>2009-03-30T12:53:28.609-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ABA"/><category scheme="http://www.blogger.com/atom/ns#" term="democrat"/><category scheme="http://www.blogger.com/atom/ns#" term="republican"/><title type='text'>Is the ABA biased or are republicans?</title><content type='html'>A &lt;a href=&quot;http://www.nytimes.com/2009/03/31/us/31bar.html?hp&quot;&gt;recent newstory by the New York Times&lt;/a&gt; questions the ABA&#39;s neutrality on advising the president on the qualifiactions of federal judges. The story brings to light evidence that the ABA is more likely to favor judges nominated by democratic presidents than republican presidents. It then goes on to make the claim that the ABA favors liberal judges over conservative judges.&lt;br /&gt;&lt;br /&gt;The New York Time&#39;s logic is flawed and they ommit several other considerations which may also account for the disparity. Below are several other reasons why the ABA may favor judges by democratic presidents rather than republican presidents.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Republicans are more likely to nominate right-wing judges than democrats are to pick left-wing judges&lt;/li&gt;&lt;/ul&gt;Republicans have been in power longer than democrats and they may feel that it may be easier to push more ideological candidates through Congress than democrats. Furthermore, there is something about the liberal-tone which is more concilatory. Democrats are therefore more likely to pick centrist judges than extreme ones.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ideologically liberal judges are, on average, more qualified than ideologically conservative judges.&lt;/li&gt;&lt;/ul&gt;Law professors tend to be liberal. It is clear that they have a strong influence on their students. There are probably more liberal lawyers than conservative ones. Therefore there is probably a larger candidate pool to choose from for democratic judges, and thus better qualified judges.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The ideals of the ABA are better matched to liberals.&lt;/li&gt;&lt;/ul&gt;The ABA highly value equal protection and compassion, ideals that are much more associated with liberal values than conservative ones.&lt;br /&gt;&lt;br /&gt;The New York Times article jumps over all of these other factors. The reporting reeks of bias.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/114096140017588528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/114096140017588528?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/114096140017588528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/114096140017588528'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/03/is-aba-biased-or-are-republicans.html' title='Is the ABA biased or are republicans?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-8046230986504100873</id><published>2009-03-30T07:36:00.000-07:00</published><updated>2009-03-30T07:48:15.766-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="conficker"/><category scheme="http://www.blogger.com/atom/ns#" term="virus"/><title type='text'>Conficker Day is Coming</title><content type='html'>On April 1, 2009 the Conficker virus will activate and start unleashing its malware on the internet. The virus is already running on over &lt;a href=&quot;http://www.cbc.ca/technology/story/2009/03/27/f-conficker.html&quot;&gt;ten million&lt;/a&gt; computers, silently awaiting orders. No one knows what those new orders will be, but it can potentially be devastating. Some have hypothesized that Conficker could launch a national cyber-attack or even take down the entire internet.&lt;br /&gt;&lt;br /&gt;Up &lt;a href=&quot;http://www.channelregister.co.uk/2009/03/30/conficker_signature_discovery/&quot;&gt;until today&lt;/a&gt;, Conficker has been undetectable by anti-malware software and it seems unlikely that a mainstream fix will be available before April 1st. The virus is incredibly powerful: it uses multiple attacks to infect a computer, a genious encryption system to protect itself, and a p2p network to spread its malicous code. Read more about this amazing worm &lt;a href=&quot;http://mtc.sri.com/Conficker/addendumC/index.html&quot;&gt;here&lt;/a&gt;, and hope that on April 1st the internet keeps on running.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/8046230986504100873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/8046230986504100873?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8046230986504100873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/8046230986504100873'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/03/conficker-day-is-coming.html' title='Conficker Day is Coming'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-281507168323955875</id><published>2009-03-06T10:06:00.000-08:00</published><updated>2009-03-06T10:16:31.583-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="carnegie mellon"/><category scheme="http://www.blogger.com/atom/ns#" term="chevy"/><category scheme="http://www.blogger.com/atom/ns#" term="GM"/><category scheme="http://www.blogger.com/atom/ns#" term="volt"/><title type='text'>I had the right idea....</title><content type='html'>In a very strange coincidence, Carnegie Mellon &lt;a href=&quot;http://www.cmu.edu/me/ddl/publications/2009-EP-Shiau-Samaras-Hauffe-Michalek-PHEV-Weight-Charging.pdf&quot;&gt;released a report&lt;/a&gt; last month that basically did the same analysis that I did in my &lt;a href=&quot;http://compxnonsense.blogspot.com/2009/02/mpg-vs-mp.html&quot;&gt;previous post&lt;/a&gt; (with significantly more robust analysis). They basically came up with the same conclusion... that the Volt won&#39;t really save you money. Without too much explanation, they took it further doubting that the Volt will significantly reduce emissions too. Read the paper. When you&#39;re done, read &lt;a href=&quot;http://fastlane.gmblogs.com/archives/2009/03/our_real-world_learnings_differ_from_cmu_study.html&quot;&gt;GM&#39;s response&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/281507168323955875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/281507168323955875?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/281507168323955875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/281507168323955875'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/03/i-had-right-idea.html' title='I had the right idea....'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-2851184984843214318</id><published>2009-02-17T22:20:00.000-08:00</published><updated>2009-02-17T23:16:11.343-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chevy"/><category scheme="http://www.blogger.com/atom/ns#" term="miles per gallon"/><category scheme="http://www.blogger.com/atom/ns#" term="MP$"/><category scheme="http://www.blogger.com/atom/ns#" term="MPG"/><category scheme="http://www.blogger.com/atom/ns#" term="volt"/><title type='text'>How the Chevy Volt doesn&#39;t save you money</title><content type='html'>Everyone discusses the MPG of cars and for good enough reason. If you&#39;re interested in reducing our dependence on foreign oil then you want to reduce the number of gallons you use. However the MPG metric breaks down when you try to compare normal gasoline cars with electric vehicles (like the forthcoming Chevy Volt).  A much more relevant metric is Miles per Dollar rather than Miles per Gallon.&lt;br /&gt;&lt;br /&gt;So lets work out the Miles per Dollar for a standard car and also for the Chevy Volt. First we have to make some assumptions about gasoline cars. Lets say gas costs $1.95 a gallon. Lets also assume that your average sedan gets about 27 miles per gallon. &lt;br /&gt;&lt;br /&gt;Now we have to make some assumptions about the cost of electricity and figure out how much the Volt uses. According to wikipedia, the Volt &lt;a href=&quot;http://www.blogger.com/en.wikipedia.org/wiki/Chevrolet_Volt&quot;&gt;uses only electricity&lt;/a&gt; for its first 40 miles. To run those first 40 miles, it uses up 8kWH of electricity. Depending on where you live, electricity in the US costs as little as &lt;a href=&quot;http://gm-volt.com/chevy-volt-reasons-for-use-and-cost-of-operation/&quot;&gt;6 cents/kWH&lt;/a&gt; in places like Washington and Idaho and up to 1&lt;a href=&quot;http://gm-volt.com/chevy-volt-reasons-for-use-and-cost-of-operation/&quot;&gt;7 cents/kWH&lt;/a&gt; in New York and California. After the first 40 miles, the Volt operates like a normal car running at 50MPG.&lt;br /&gt;&lt;br /&gt;I&#39;ll omit the math, but we get the following result:&lt;br /&gt;Normal Sedan MP$: &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;13.8 miles per dollar&lt;/span&gt;&lt;br /&gt;Chevy Volt first 40 miles MP$ (cheap electricty): &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;83 miles per dollar&lt;/span&gt;&lt;br /&gt;Chevy Volt first 40 miles MP$ (expensive electricty): &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;29 miles per dollar&lt;/span&gt;&lt;br /&gt;Chevy Volt after 40 miles MP$: &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;26 miles per dollar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So depending on where you live and how much you drive, &lt;span style=&quot;font-weight: bold; font-style: italic;font-size:130%;&quot; &gt;the Volt will be anywhere from 100% to 500% cheaper&lt;/span&gt; to run compared to an average Sedan.&lt;br /&gt;&lt;br /&gt;That sounds a whole lot cheaper, right! &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Wrong!&lt;/span&gt; To see why, we have to take the calculation a step further.&lt;br /&gt;&lt;br /&gt;Suppose you drive 50 miles round trip to work every day and you live in a state with average gas prices, like Texas. In your sedan the daily commute should cost you about $3.61. But in a Volt it will only cost $1.19. Thats a savings of $2.42 every day. Now say you&#39;re a workaholic and you make trips like this 7 days a week for 52 weeks a year. Thats a yearly mileage of 18,200 miles, which is pretty high for most people. Driving a Volt you&#39;ll get a savings of $881.28 per year! But lets assume that GM engineers are even better than we expect and instead of saving $881.28 a year, we actually save $1000 a year.&lt;br /&gt;&lt;br /&gt;Still with me? Good.&lt;br /&gt;&lt;br /&gt;Now here comes the big question: much more do you think the Volt costs compared to a similar gasoline car? Lets compare it to a Chevy Malibu which gets about 27MPG and costs about $22,000. The final sticker price on the Volt is not set yet, but everyone says GM wants to get it down to around $32,000 (thats including all of the tax breaks). But lets give GM some credit (even though they&#39;re already getting enough from our government!) and assume that in a couple of years they will be able to bring it down further to $28,000.&lt;br /&gt;&lt;br /&gt;So a Volt will certainly cost at least $6,000 more than a Malibu. Suppose that instead of putting that six grand into your car, you have the option of putting it into savings earning 5% interest. Therefore, in order for the Chevy Volt to win out over the Malibu, you will have to drive the Volt for ten years!&lt;br /&gt;&lt;br /&gt;Thats right. &lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;If you want to make back your initial investment in a Volt, you have to drive the car for ten years!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunatly, GM says that the Volt battery is only expected to last ten years.&lt;br /&gt;&lt;br /&gt;There are plenty of reasons to buy a Volt, but saving money isn&#39;t one of them.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/2851184984843214318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/2851184984843214318?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/2851184984843214318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/2851184984843214318'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/02/mpg-vs-mp.html' title='How the Chevy Volt doesn&#39;t save you money'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3200173307098688101.post-2448585146231320907</id><published>2009-01-01T14:42:00.000-08:00</published><updated>2009-01-03T09:10:13.389-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="toothbrush"/><category scheme="http://www.blogger.com/atom/ns#" term="wifi"/><category scheme="http://www.blogger.com/atom/ns#" term="wirless"/><title type='text'>Wireless Protocol for a Toothbrush</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.oralb.com/en-US/assets/images/products/overview/pc9900.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 116px; height: 170px;&quot; src=&quot;http://www.oralb.com/en-US/assets/images/products/overview/pc9900.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The most interesting gift I received this holiday season was a toothbrush. You&#39;ve probably seen advanced toothbrushes before but this one really takes the cake. I&#39;m talking about &lt;a href=&quot;http://www.oralb.com/en-US/products/pc9900/&quot;&gt;OralB&#39;s Triumph  &quot;smart&quot;  toothbrush&lt;/a&gt;. Like most advanced toothbrushes, the Triumph has a powerful mechanical head and also a timer that vibrates when you brush for long enough. However, the Triumph goes further by adding a wireless communication link with a base station. The base station displays your elapsed brushing time, the current brushing mode, a low battery warning, and tells you if you&#39;re brushing too hard. There are a few modifiable options and if someone else sticks on their own toothbrush head, it loads up their saved options. I can&#39;t go into all the features here... the manual is ten pages long. This may be toothbrush technology overkill... but who cares, its really cool!&lt;br /&gt;&lt;br /&gt;The the real kicker here is the wireless technology. I wonder what wireless protocol OralB uses. The communication is fairly simple and the data rate is minuscule so I would bet that it is just an in-house protocol. But if it uses a WiFi connection, it would be fun to be able to log into your toothbrush&#39;s embedded web server and upload toothbrush mods. You could create your own brushing modes and customize their vibration pattern. By modulating the vibration pattern you could even make the toothbrush emit simple tones. Using a more complex pattern you could make your brush play songs while you brush.&lt;br /&gt;&lt;br /&gt;Of course any wireless protocol does raise security concerns. A hacker could break into the toothbrush, and modify it to give you a sub-par brushing experience.  A hostile country could attack our toothbrushing infrastructure to increase our national rate of cavities or gingivitus. OralB should know that any time you open up your device to the airwaves you have to protect it from malicious users.&lt;br /&gt;&lt;br /&gt;...And I&#39;m only half-joking about all of this.</content><link rel='replies' type='application/atom+xml' href='http://compxnonsense.blogspot.com/feeds/2448585146231320907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/3200173307098688101/2448585146231320907?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/2448585146231320907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3200173307098688101/posts/default/2448585146231320907'/><link rel='alternate' type='text/html' href='http://compxnonsense.blogspot.com/2009/01/wireless-protocol-for-toothbrush.html' title='Wireless Protocol for a Toothbrush'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>