<?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: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-2737134012695770386</id><updated>2012-01-31T06:30:00.939-08:00</updated><category term='flash'/><category term='cli'/><category term='finance'/><category term='books'/><category term='gentoo'/><category term='latex'/><category term='gnucash'/><category term='sage'/><category term='canon'/><category term='svd'/><category term='firefox'/><category term='cython'/><category term='quaternions'/><category term='ati'/><category term='printer'/><category term='wrt54g'/><category term='alsa'/><category term='probability'/><category term='c++'/><category term='opera'/><category term='ampache'/><category term='cvoicecontrol'/><category term='opencourseware'/><category term='aa1'/><category term='aircrack'/><category term='information theory'/><category term='rip'/><category term='camera'/><category term='knowledge representation'/><category term='pychecker'/><category term='aop'/><category term='cd'/><category term='pdf'/><category term='beamer'/><category term='pyytdl'/><category term='festival'/><category term='$.02'/><category term='optimization'/><category term='potrace'/><category term='pyflakes'/><category term='mp3'/><category term='ubuntu'/><category term='olympus'/><category term='avr'/><category term='hp'/><category term='svn'/><category term='google'/><category term='thin client'/><category term='cryptography'/><category term='tex'/><category term='officejet'/><category term='admin'/><category term='pylint'/><category term='grandcentral'/><category term='9130'/><category term='youtube'/><category term='plplot'/><category term='ica'/><category term='mplayer'/><category term='xming'/><category term='scraping'/><category term='python'/><category term='enthought'/><category term='redsox'/><category term='movie15'/><category term='windows'/><category term='zaurus'/><category term='apache'/><category term='linux'/><category term='math'/><category term='emacs'/><category term='cad'/><category term='cygwin'/><category term='rage'/><category term='programming'/><category term='cell phone'/><category term='sympy'/><category term='abcde'/><category term='music'/><category term='games'/><category term='gphoto2'/><category term='mach64'/><category term='linksys'/><category term='electronics'/><category term='kindle'/><category term='u3d'/><category term='appengine'/><category term='antenna'/><category term='wireless'/><category term='eth1'/><category term='flac'/><category term='quotes'/><category term='grip'/><category term='article'/><category term='project management'/><category term='data'/><category term='gmail'/><category term='investing'/><title type='text'>Duhctaep's Lab</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default?start-index=101&amp;max-results=100'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>328</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4756105228676346896</id><published>2012-01-31T06:20:00.000-08:00</published><updated>2012-01-31T06:30:00.948-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><title type='text'>Funding beyond discounting: collateralagreements and derivatives pricing</title><content type='html'>apparently ground-breaking article by vladimir piterbarg, the head of barcap quantitative research and author of a well-known 3 volume series on interest rate modeling.&lt;br /&gt;&lt;a href="http://www.scribd.com/doc/34328165/Risk-Magazine-Piterbarg-Funding-Beyond-Discounting-Collateral-Agreements-and-Derivatives-Pricing"&gt;http://www.scribd.com/doc/34328165/Risk-Magazine-Piterbarg-Funding-Beyond-Discounting-Collateral-Agreements-and-Derivatives-Pricing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;important for correctly valuing derivatives, and what the 'risk-free' rate really is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4756105228676346896?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4756105228676346896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4756105228676346896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4756105228676346896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4756105228676346896'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2012/01/funding-beyond-discounting.html' title='Funding beyond discounting: collateralagreements and derivatives pricing'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6490995371825477846</id><published>2012-01-11T04:37:00.001-08:00</published><updated>2012-01-11T04:40:11.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>debugging c++ extensions to python</title><content type='html'>trying to debug a python extension module written in c++ (wrapped with swig). i think this would be so much easier if i were using gcc, but python is built with msvc... setup.py wants the debug versions of python libs, but i don't have them and don't really want to try to build python from scratch right now.&lt;br /&gt;&lt;br /&gt;these refs seem relevant:&lt;br /&gt;http://www.velocityreviews.com/forums/t677466-please-include-python26_d-lib-in-the-installer.html&lt;br /&gt;http://vtk.org/gitweb?p=VTK.git;a=blob;f=Wrapping/Python/vtkPython.h;h=9d01ac21bafae0a24252398f268b6b3563df62cd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6490995371825477846?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6490995371825477846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6490995371825477846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6490995371825477846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6490995371825477846'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2012/01/debugging-c-extensions-to-python.html' title='debugging c++ extensions to python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1156243203446543187</id><published>2012-01-10T08:14:00.000-08:00</published><updated>2012-01-10T08:15:48.503-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>design patterns</title><content type='html'>co&lt;span&gt;&lt;span&gt;mment from duffy on most useful from gof (gang of four) book of object-oriented design patterns: "GOF is useful but should not become an objective in itself. The most useful ones in general (dependent on the domain of course) are Visitor, Strategy, Facade and Template Method pattern. Singleton and Observer can best be avoided."&lt;/span&gt;&lt;/span&gt;&lt;a name="top" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); font-size: medium;"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1156243203446543187?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1156243203446543187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1156243203446543187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1156243203446543187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1156243203446543187'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2012/01/design-patterns.html' title='design patterns'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4857950174652000007</id><published>2012-01-10T07:30:00.000-08:00</published><updated>2012-01-10T07:32:00.380-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>most relaxing music</title><content type='html'>&lt;p style="margin: 0px 0px 14px; padding: 0px; font-family: Georgia,Times,'Times New Roman',serif; font-size: medium; line-height: 1.5em; color: rgb(96, 97, 99); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);"&gt;&lt;/p&gt;&lt;a href="http://www.shortlist.com/entertainment/music/scientists-discover-most-relaxing-tune-ever"&gt;The top 10 most relaxing tunes&lt;/a&gt; were: 1. Marconi Union - Weightless 2. Airstream - Electra 3. DJ Shah - Mellomaniac (Chill Out Mix) 4. Enya - Watermark 5. Coldplay - Strawberry Swing 6. Barcelona - Please Don't Go 7. All Saints - Pure Shores 8. AdelevSomeone Like You 9. Mozart - Canzonetta Sull'aria 10. Cafe Del Mar - We Can Fly&lt;br /&gt;&lt;br /&gt;Stream it from SoundCloud &lt;a href="http://soundcloud.com/justmusiclabel/marconi-union-weightless/s-kttxT"&gt;right here&lt;/a&gt;&lt;p style="margin: 0px 0px 14px; padding: 0px; font-family: Georgia,Times,'Times New Roman',serif; font-size: medium; line-height: 1.5em; color: rgb(96, 97, 99); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);"&gt;&lt;a href="http://soundcloud.com/justmusiclabel/marconi-union-weightless/s-kttxT" target="_blank" class="link-external" style="text-decoration: underline; color: rgb(0, 0, 0);"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4857950174652000007?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4857950174652000007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4857950174652000007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4857950174652000007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4857950174652000007'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2012/01/most-relaxing-music.html' title='most relaxing music'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6989049019808901592</id><published>2012-01-10T02:14:00.000-08:00</published><updated>2012-01-10T02:16:38.950-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Malliavin calculus</title><content type='html'>saw a reference to Malliavin calculus. used in financial math to take derivatives of stochastic processes. looks interesting, might be useful to learn some day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6989049019808901592?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6989049019808901592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6989049019808901592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6989049019808901592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6989049019808901592'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2012/01/malliavin-calculus.html' title='Malliavin calculus'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8801540374437512991</id><published>2011-10-14T01:38:00.001-07:00</published><updated>2011-10-14T04:02:44.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>trading strategies</title><content type='html'>here's an idea: delta hedge triple-leveraged etfs. want to have (price of underlying)/(price of hedge) as high as possible, with high vol on underlying. take advantage of the fact that leveraged etfs rebal their derivative guts daily, so their delta changes with the underlying price. hold the hedge, buy/sell the underlying to match delta, make $$ every time the underlying price bounces up, with very low risk as long as you adjust the hedge daily. if you have too much cash, buy more hedge when the price goes up instead of selling the underlying. look for 3x etfs at &lt;a href="http://3xetf.com/"&gt;http://3xetf.com/&lt;/a&gt; this is very similar to the way people delta hedge options, but very simple to manage and with no trader-type restrictions. another way to do it could be to hold the underlying and buy/sell the hedge. i'll need to check into liquidity/trading cost issues there.&lt;br /&gt;&lt;br /&gt;for example:&lt;br /&gt;  long term treasuries: hedge tlt (or maybe vglt?) with sbnd.&lt;br /&gt;  financials: hedge sef with fas.&lt;br /&gt;  real estate: hedge schh with drv.&lt;br /&gt;  russia: hedge ? with rusl&lt;br /&gt;  s&amp;amp;p500: hedge spy, ivv with spxu&lt;br /&gt;&lt;br /&gt;or maybe the factorshares spread etfs?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8801540374437512991?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8801540374437512991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8801540374437512991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8801540374437512991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8801540374437512991'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/10/trading-strategies.html' title='trading strategies'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-654049471660459726</id><published>2011-09-14T03:08:00.000-07:00</published><updated>2011-09-14T03:33:57.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python/c++ with microsoft visual c++</title><content type='html'>finally got a 64 bit pyd python extension working, compiled with ms visual c++ and visual studio for epd on windows. figured out that the version string in python (MSC v.1500 64 bit (AMD64)) was for visual c++ 2008 == v9.0, and the express edition only builds 32 bit. so i had to get the sdk (&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=3138"&gt;version 7&lt;/a&gt; works with 2008) and make sure the amd64 stuff got installed with it.&lt;br /&gt;&lt;br /&gt;some notes say to install the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=10986"&gt;service pack&lt;/a&gt; before the 64 bit stuff, but i didn't find this necessary.&lt;br /&gt;&lt;br /&gt;i ran the 'Windows SDK Configuration Tool' from the start menu, since it sounded logical, and ticked the box to link the sdk with VC 2008. not sure if that was necessary or not.&lt;br /&gt;&lt;br /&gt;one change i had to kludge manually was changing the references in C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat under the amd64 label. originally they were pointing to "%~dp0bin\amd64\vcvarsamd64.bat"; they need to be "%~dp0bin\vcvars64.bat". at that point, running vcvarsall.bat amd64 should work and a simple use of weave passes:&lt;br /&gt;&lt;br /&gt;import scipy.weave as w&lt;br /&gt;c = w.inline(r'printf("hi.");',verbose=2)&lt;br /&gt;&lt;br /&gt;now that the compiler, etc., are set up i can use swig and distutils to build bigger extensions (like in the &lt;a href="http://www.swig.org/Doc1.3/Python.html#Python_nn6"&gt;swig docs&lt;/a&gt;), and it Just Works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-654049471660459726?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/654049471660459726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=654049471660459726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/654049471660459726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/654049471660459726'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/09/pythonc-with-microsoft-visual-c.html' title='python/c++ with microsoft visual c++'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2170191111425053653</id><published>2011-09-01T03:02:00.000-07:00</published><updated>2011-10-19T07:01:24.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>thinking in c++</title><content type='html'>lots of versions out there, but &lt;a href="http://www.planetpdf.com/developer/article.asp?ContentID=6634"&gt;this one&lt;/a&gt; seems to be the best one of volume 1 i can find. (get the non-landscape one.)  don't get that version of volume 2. it is old and incomplete.&lt;br /&gt;&lt;br /&gt;the 27 dec 2003 version of volume 2 is the print version; i can't find any electronic version other than the html. i think the quality and depth is bettern than vol 1, but it's too long for me to go through right now. c++ is definitely a language that has a vast landscape to explore. i think i would need to read the 'design and evolution' book to understand the rationale and really get at how things work, and i will eventually need to read the templates book and the gang of four design patterns book to know how to use it properly. maybe the 'effective' and 'exceptional' books, too. for now i will prioritize the parts of vol 2 that i haven't read yet.&lt;br /&gt;&lt;br /&gt;1: Exceptions: p. 53-75&lt;br /&gt;9: Multiple inheritance &lt;br /&gt;10: Design patterns &lt;br /&gt;6: Generic algorithms &lt;br /&gt;7: Generic containers  &lt;br /&gt;8: Runtime type identification &lt;br /&gt;2: Defensive Programming&lt;br /&gt;5: Templates: template programming idioms - end (p.  252 in html imported to word doc)&lt;br /&gt; 11: Concurrency  (might skip, focuses on specific library)&lt;br /&gt;&lt;br /&gt;a few tips to remember:&lt;br /&gt;&lt;br /&gt;-- return value optimization: return a constructor call; it saves a copy-ctor and dtor&lt;br /&gt;-- it's ok to throw in a ctor, as long as you clean up resource allocations first&lt;br /&gt;-- never throw in a dtor, since the dtor could have been called due to a previous exception and c++ requires 2 unhandled exceptions to crash the program&lt;br /&gt;-- throw by value, catch by reference: allow the exception handling to deal with the memory management&lt;br /&gt;-- deal with errors and catch exceptions at the nearest handler that has enough information to deal with them&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2170191111425053653?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2170191111425053653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2170191111425053653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2170191111425053653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2170191111425053653'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/09/thinking-in-c.html' title='thinking in c++'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7164529514891101416</id><published>2011-07-20T07:38:00.000-07:00</published><updated>2011-07-20T07:49:51.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='aa1'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>wireless on suspend/resume</title><content type='html'>had a problem with some ubuntu upgrades hosing my ath5k wifi after resuming from a sleep. something was messed up with the power getting turned back on, i think, and it seemed to be something that would get fixed and rebroken judging from the dmesg errors and bugposts on kernel.org. downgrading my kernel didn't fix the problem.&lt;br /&gt;&lt;br /&gt;fortunately, i found that turning it off and on with rfkill avoided the problems, so i put it into a script to do it automatically.&lt;br /&gt;&lt;br /&gt;/etc/pm/sleep.d/50_wireless:&lt;br /&gt;&lt;blockquote&gt;#!/bin/sh&lt;br /&gt;case "${1}" in&lt;br /&gt;         suspend)&lt;br /&gt;        #date &amp;gt;&amp;gt; /tmp/pm.log&lt;br /&gt;        #echo '  suspend' &amp;gt;&amp;gt; /tmp/pm.log&lt;br /&gt;        /usr/sbin/rfkill block wlan&lt;br /&gt;        ;;&lt;br /&gt;        resume)&lt;br /&gt;        #date &amp;gt;&amp;gt; /tmp/pm.log&lt;br /&gt;        #echo '  resume' &amp;gt;&amp;gt; /tmp/pm.log&lt;br /&gt;        /usr/sbin/rfkill unblock wlan&lt;br /&gt;        ;;&lt;br /&gt;        hibernate)&lt;br /&gt;        # nothing&lt;br /&gt;                ;;&lt;br /&gt;    thaw)&lt;br /&gt;        # nothing&lt;br /&gt;                ;;&lt;br /&gt;esac&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7164529514891101416?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7164529514891101416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7164529514891101416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7164529514891101416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7164529514891101416'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/07/wireless-on-suspendresume.html' title='wireless on suspend/resume'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2254887754237254698</id><published>2011-07-07T07:08:00.000-07:00</published><updated>2011-07-07T07:09:54.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>cygwin-ports</title><content type='html'>&lt;a href="http://sourceware.org/cygwinports/"&gt;cygwinports&lt;/a&gt; seems to be just what i was looking for to get packages that don't come with the standard set. they have rtmpdump and mplayer, and i'll check back there before trying to compile stuff again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2254887754237254698?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2254887754237254698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2254887754237254698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2254887754237254698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2254887754237254698'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/07/cygwin-ports.html' title='cygwin-ports'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4413661868270535117</id><published>2011-07-07T07:02:00.000-07:00</published><updated>2011-07-07T07:06:34.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>android sdk, avd, !*&amp;$!$%^</title><content type='html'>tried to get android emulator working on my admittedly underpowered netbook. it works... sort of. the 3.1 platform was _really_ slow. i tried the snapshot method to make it at least boot faster; no dice. maybe 2.2 would be better, but i think what i'll really try (if i do again) is the &lt;a href="http://www.howtogeek.com/howto/22665/run-android-on-your-netbook-or-desktop/"&gt;android-x86 iso on a flash drive&lt;/a&gt;. or just wait -- google and/or intel seems to be coming out with x86 native android later this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4413661868270535117?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4413661868270535117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4413661868270535117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4413661868270535117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4413661868270535117'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/07/android-sdk-avd.html' title='android sdk, avd, !*&amp;$!$%^'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8162286078843858755</id><published>2011-07-07T07:00:00.001-07:00</published><updated>2011-07-07T07:02:33.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>kindle on linux</title><content type='html'>followed &lt;a href="http://ubuntuforums.org/showthread.php?t=1326044&amp;amp;page=10"&gt;these instructions&lt;/a&gt; to get kindle for pc running on my ubuntu netbook with wine:&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,Arial,Tahoma; font-size: 12px;"&gt;&lt;pre class="alt2" dir="ltr" style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); margin: 0px; padding: 6px; border-width: 1px; border-style: inset; width: 640px; height: 98px; text-align: left; overflow: auto;"&gt;&lt;b&gt;sudo add-apt-repository ppa:ubuntu-wine/ppa&lt;br /&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;&lt;br /&gt;sudo apt-get install wine1.3&lt;/b&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;after installation, just run wine on the installed Kindle.exe in ~/.wine/drive_c/ etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8162286078843858755?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8162286078843858755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8162286078843858755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8162286078843858755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8162286078843858755'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/07/kindle-on-linux.html' title='kindle on linux'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2449979598958474378</id><published>2011-05-07T03:37:00.001-07:00</published><updated>2011-05-07T03:39:22.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>karnickel: macros in python</title><content type='html'>not sure when exactly a macro would be useful in python. i remember seeing such a thing in some cython code, to deal with a c++ template, though karnickel deals with the python ast so probably not useful for that. but,&lt;a href="http://pypi.python.org/pypi/karnickel"&gt; there it is&lt;/a&gt;, if the need arises.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2449979598958474378?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2449979598958474378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2449979598958474378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2449979598958474378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2449979598958474378'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/05/karnickel-macros-in-python.html' title='karnickel: macros in python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4216696172023106184</id><published>2011-05-05T07:55:00.000-07:00</published><updated>2011-05-05T07:57:41.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python embedded in gdb</title><content type='html'>version &amp;gt;=7 of gdb has an embedded python interpreter. &lt;a href="http://sourceware.org/gdb/wiki/PythonGdbTutorial"&gt;here's a tutoria&lt;/a&gt;l on it. very handy if i need to debug c or c++. i'm guessing a million new debugger guis will be built on top of this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4216696172023106184?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4216696172023106184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4216696172023106184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4216696172023106184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4216696172023106184'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/05/python-embedded-in-gdb.html' title='python embedded in gdb'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2491667873021534342</id><published>2011-04-26T02:32:00.000-07:00</published><updated>2011-04-26T03:37:41.338-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='information theory'/><title type='text'>compressive sampling</title><content type='html'>just came across a new take on an old problem: compressed sensing. here's a &lt;a href="http://www.ams.org/samplings/math-history/hap7-pixel.pdf"&gt;gentle introduction&lt;/a&gt; to the subject. looks like youtube has some interesting lectures on this, too, especially linking compressive sensing or sampling to information theory.&lt;br /&gt;&lt;br /&gt;one thing that occurred to me is that the sparseness object expressed by the '0-norm' requires the part of the domain where the function goes to zero to do so faster than the norm parameter. otherwise, the 0^0 would be 1, just like x^0==1 for x!=0. so, something like lim x-&amp;gt;0  exp(-1/x)^x. maybe i can think of it as an epsilon-norm, where epsilon is infinitessimal for all non-zero quantities but not exactly zero for the norm of zero.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2491667873021534342?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2491667873021534342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2491667873021534342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2491667873021534342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2491667873021534342'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/04/compressive-sampling.html' title='compressive sampling'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1836968251184654071</id><published>2011-03-29T02:39:00.000-07:00</published><updated>2011-03-29T03:16:31.872-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>trading optimization</title><content type='html'>i've been thinking about how to optimize trades for some algorithmic trading. i need to define objective functions, obviously, but how exactly? risk vs. return, but risk (for a liquid asset) depends on a portfolio state between transactions, and returns are realized upon the transaction.&lt;br /&gt;&lt;br /&gt;it just occurred to me that i can reduce it to simple shift and scaling operations on a (somewhat unknown) pdf. if i have a certain unhedged amount, x, of a risky asset, and i buy or sell to end up with a*x, then that scales the pdf f(x) to f(a*x)/a. the trade should give me a return, r, so the pdf of my total return after the trade would be something like f(a*x-r)/a. so i know what the shift and the scale are, even though i don't exactly know what f(x) is. now it's a question of whether f(a*x-r)/a is better than f(x), and i trade if it is (i.e., maximize whatever metrics to find the optimal r,a).&lt;br /&gt;&lt;br /&gt;does this answer the question of how to place limit orders away from the market prices? i'm not sure yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1836968251184654071?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1836968251184654071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1836968251184654071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1836968251184654071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1836968251184654071'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/03/trading-optimization.html' title='trading optimization'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6458128379333549176</id><published>2011-03-17T08:00:00.000-07:00</published><updated>2011-03-29T03:47:02.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='investing'/><title type='text'>factor shares</title><content type='html'>ib is offering its customers commision-free trades on factorshares spread etfs. this looks really interesting: diy hedge fund with asset classes. trying to figure out how the funds operate, based on the holdings info from their website...&lt;br /&gt;&lt;br /&gt;each of the 5 has basically $3m in treasuries, $2m in cash, and a thousand in a treasury fund. each one then takes a position in nearest future contract (long and short) for the two spread assets, for 2x the nav/share * 100k shares/unit * 2 units (currently). the treasuries are probably to offset the time discount on the futures contracts, and that and the cash are for margin, obviously. the fund is probably for a little bit of liquidity during the daily rebalance. i'm guessing the nav comes from the $5m risk free + net market value of the futures. the nav/share doesn't exactly match the price, probably given the constraints of the contract sizes and maybe the lower liquidity of the etf at the moment. the futures holdings are updated daily, to restore dollar neutrality (same forward contract dollar amounts). for the current number of shares and risk-free holdings, the funds basically started at $25/share. the s&amp;amp;p e minis are apparently for lots of 50. the 30yr tbill futures are for lots of 100.&lt;br /&gt;&lt;br /&gt;the 5 etfs are s&amp;amp;p/tbill, tbill/s&amp;amp;p, s&amp;amp;p/usd, oil/s&amp;amp;p, gold/s&amp;amp;p, where each is bull/bear. 2x leverage on each leg, for a 4x total leverage (but still just 2x on the spread).&lt;br /&gt;&lt;br /&gt;right now the volume is pretty light, around 10k/day, since they just lauched a few weeks ago. i wonder if there is any arbitrage opportunity for these, knowing their methodology. especially for s&amp;amp;p/tbill vs. tbill/s&amp;amp;p.&lt;br /&gt;&lt;br /&gt;does the rebalance accumulate anything based on independent underlying price movements? no, because all the money gained from selling an advancing future is put into the one that declined, and the same thing will happen at the end of the next day. but if i rebalance between these, it will. i'm just not sure if it's any better than just rebalancing among 2x single asset funds, unless you think they're anticorrelated instead of just uncorrelated. maybe it has the advantage of not needing to rebalance with cash, like single funds would.&lt;br /&gt;&lt;br /&gt;one thing maybe i can try is to arb the s&amp;amp;p/tbill vs. tbill/s&amp;amp;p like this: right now fse has 139 emini and -71 tbill, and fsa has -177 emini and 91 tbill. closing for fse was $22.57 and fsa was 28.18. if i could buy 177/139 fse it would cost 28.74, or 91/71 would cost 28.92. so if i had some of each, i could have sold fse and bought fsa near the end of the day, eg sell 9 fse for 203.13 and buy 7 fsa for 197.26. that would be selling a share of 1251 emini, -639 tbill and buying a share of -1239, 637. so the net would be 42, -2.&lt;br /&gt;&lt;br /&gt;nav calculation time is based on the first of the futures contracts to settle:&lt;br /&gt;s&amp;amp;b/tbond 3pm (ET)&lt;br /&gt;tbond/s&amp;amp;p 3pm&lt;br /&gt;s&amp;amp;p/usd 3pm&lt;br /&gt;oil/s&amp;amp;p 2:30pm&lt;br /&gt;gold/s&amp;amp;p 1:30pm&lt;br /&gt;the nav must depend on the price of the futures and what exposure they can be rebalanced to.&lt;br /&gt;&lt;br /&gt;futures prices might not be as easy to come by, so maybe i could compare to other leveraged etfs like sso, sds, dgl (or iau/gld (not leveraged) or dgp/dzz (monthly, not daily)), dbo (or dig?, uso, oil), tlt (not leveraged), tbt (or pst? no), udn (not leveraged) (or uup, not leveraged and bull instead of bear but much higher volume) (these only use dx contracts, not front month). this wouldn't necessarily be perfect since nav can deviate from price, but it should be close for the heavily traded ones.&lt;br /&gt;&lt;br /&gt;here's a good &lt;a href="http://etf.stock-encyclopedia.com/category/leveraged-etfs.html"&gt;ref list&lt;/a&gt; for leveraged etfs&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6458128379333549176?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6458128379333549176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6458128379333549176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6458128379333549176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6458128379333549176'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/03/ib-is-offering-its-customers-commision.html' title='factor shares'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3186625572994287878</id><published>2011-03-12T07:30:00.000-08:00</published><updated>2011-03-12T07:31:49.148-08:00</updated><title type='text'>aptitude tests</title><content type='html'>seems like a lot of companies are using tests by their hr department to screen applicants. &lt;a href="http://www.shl.com/default.aspx"&gt;shl &lt;/a&gt;is one that is mentioned a lot.&lt;a href="http://www.assessmentday.co.uk/"&gt; this one&lt;/a&gt; was referred to as having good practice tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3186625572994287878?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3186625572994287878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3186625572994287878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3186625572994287878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3186625572994287878'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/03/aptitude-tests.html' title='aptitude tests'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5021612895110998004</id><published>2011-03-11T06:07:00.000-08:00</published><updated>2011-08-13T08:43:19.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='redsox'/><title type='text'>audio + video</title><content type='html'>figured out how to get an alternate audio into a video file:&lt;br /&gt;&lt;br /&gt;# take mp3 out of audio flv&lt;br /&gt;ffmpeg -i altAudio.flv -acodec copy altAudio.mp3&lt;br /&gt;# take the video only out of the video&lt;br /&gt;mencoder -ni -ovc copy -nosound -o noAudio.mp4 origVideo.mp4&lt;br /&gt;# put the audio and video together&lt;br /&gt;mencoder -ovc copy -oac copy -audiofile altAudio.mp3 -o out.avi noAudio.mp4&lt;br /&gt;&lt;br /&gt;might not need both the ffmpeg step and -ni on the video extraction, but at least one of them is necessary. i tried without both and the video played at double speed while the audio was normal speed in the out.avi. might also be able to use a different format out with -of. not sure if avi transcodes it.&lt;br /&gt;EDIT: tried without -ni, still works fine.&lt;br /&gt;&lt;br /&gt;might need to adjust delay with - and +.&lt;br /&gt;&lt;br /&gt;also, i found that rtmpdump has very handy -e and -o options. i dropped the -A option with -e and it seems to work (kind of), not sure if that is absolutely necessary.&lt;br /&gt;&lt;br /&gt;now i'm trying to get mencoder on a file to let me playback faster. tried -vf filmdint and filmdint=io=2:1, and it doesn't hurt but doesn't seem to be essential. so far, best results are with just -fps 30000/1001 -ofps 20000/1001 and speed it up with ']'. -oac copy doesn't work; have to use something else like pcm (uncompressed) or mp3lame. the original audio is 48000Hz aac, which i can encode with -oac lavc -lavcopts acodec=aac, but that makes encoding really slow and messes up a/v sync, even when i try to compensate by changing -srate.&lt;br /&gt;&lt;br /&gt;so far this version looks promising, but the avi has no idx:&lt;br /&gt;mencoder -ovc copy -oac mp3lame -fps 30000/1001 -ofps 20000/1001 -o out.avi  infile.mp4&lt;br /&gt;&lt;br /&gt;could try -of mpeg or lavf, with a lavf format=mp4 for example, since the original is mp4 and plays pretty well (except when i speed it up too much).&lt;br /&gt;&lt;br /&gt;ok, this one seems to work pretty well:&lt;br /&gt;mencoder -ovc copy -oac mp3lame -fps 30000/1001 -ofps 20000/1001 -of lavf -lavfopts format=mp4 -o out.mp4 infile.mp4&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5021612895110998004?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5021612895110998004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5021612895110998004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5021612895110998004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5021612895110998004'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/03/audio-video.html' title='audio + video'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7773557881466291379</id><published>2011-03-02T04:31:00.000-08:00</published><updated>2011-03-02T04:34:07.654-08:00</updated><title type='text'>national review online audio</title><content type='html'>outloudopinion.com has apparently been posting audio files of select nro articles for at least a year now, much to my surprise. even have a convenient &lt;a href="http://podcast.outloudopinion.com/nro/nro.xml"&gt;rss feed&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7773557881466291379?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7773557881466291379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7773557881466291379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7773557881466291379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7773557881466291379'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/03/national-review-online-audio.html' title='national review online audio'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2541603547381796833</id><published>2011-02-23T01:12:00.000-08:00</published><updated>2011-02-23T01:21:09.461-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>REMINISCENCES OF A STOCK OPERATOR</title><content type='html'>by Edwin LeFevre. recommended by more than one trader, to give an accurate feel of what being a trader is really like. one trader i talked to described trading as a spiritual experience, that you have to do a gut check every day when you have that much on the line.&lt;br /&gt;&lt;br /&gt;amazon has a nice annotated copy available that gives good historical background information and explanation of some of the things that are harder to understand now. but gutenberg has &lt;a href="http://ebooks.gutenberg.us/WorldeBookLibrary.com/confessstock.htm"&gt;the original&lt;/a&gt; up.&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: rgb(128, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2541603547381796833?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2541603547381796833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2541603547381796833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2541603547381796833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2541603547381796833'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/02/reminiscences-of-stock-operator.html' title='REMINISCENCES OF A STOCK OPERATOR'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2630962639929316618</id><published>2011-02-16T06:34:00.000-08:00</published><updated>2011-02-16T06:35:36.156-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>pybtex</title><content type='html'>if i ever need to mess around with beastly bst (bibtex style) files, i won't. i'll switch to pybtex, which looks like it's a lot more fun to use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2630962639929316618?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2630962639929316618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2630962639929316618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2630962639929316618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2630962639929316618'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/02/pybtex.html' title='pybtex'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8493745985761053612</id><published>2011-02-01T06:12:00.000-08:00</published><updated>2011-02-01T06:42:34.401-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>quant topics i should learn</title><content type='html'>looked through a big glossy from wilmott's certificate in quantitative finance. saw some terms that i wasn't sure i knew about. so here's a list, so i can make sure i learn about them and i don't need to take any of their classes.&lt;br /&gt;&lt;br /&gt;fokker-planck and kolmogorov&lt;br /&gt;the radon-nikodym derivative&lt;br /&gt;girsanov's theorem&lt;br /&gt;yield, duration, and convexity&lt;br /&gt;stochastic and spot-rate models&lt;br /&gt;affine stochastic models&lt;br /&gt;heath, jarrow and morton&lt;br /&gt;reduced-form model and the hazard rate&lt;br /&gt;structural default models&lt;br /&gt;cds pricing, market approach&lt;br /&gt;synthetic cdo pricing&lt;br /&gt;risk of default, structural and reduced form&lt;br /&gt;copulas&lt;br /&gt;brownian bridge (monte carlo?)&lt;br /&gt;sobol' (quasi monte carlo?)&lt;br /&gt;crank-nicolson&lt;br /&gt;black-litterman (portfolio management)&lt;br /&gt;levy copulas (cdo pricing)&lt;br /&gt;fixed income: bgm, black 76&lt;br /&gt;variance gamma&lt;br /&gt;vg le'vy&lt;br /&gt;stochastic monetary policy models for interest rate derivatives&lt;br /&gt;gram-schmitdt process&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8493745985761053612?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8493745985761053612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8493745985761053612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8493745985761053612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8493745985761053612'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/02/quant-topics-i-should-learn.html' title='quant topics i should learn'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2919775562660148890</id><published>2011-02-01T06:08:00.001-08:00</published><updated>2011-03-02T01:23:58.026-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>how i became a quant</title><content type='html'>very good book to get a feel for the kind of personalities in the quant world and peeks into the various places that quants work. also small glimpses into the types of problems quants work on.&lt;br /&gt;&lt;br /&gt;neil chriss has some interesting refs for using binomial and trinomial tree to match price/volatility of all available options simultaneously for european and american options. also, some other work he did on optimization of portfolio transition/liquidation combining transaction cost/liquidity with risk of holding a position too long. probably worth a look.&lt;br /&gt;&lt;br /&gt;peter j\"{a}ckel makes some interesting comments about (not surprisingly) the monte carlo method with low-discrepancy sequences in finance, in particular about getting good results with sobol' numbers in high dimensions.&lt;br /&gt;&lt;br /&gt;andrew weisman, big shot at merrill lynch, gives some warnings about the silicon ceiling: don't appear too nerdy or academic or people will think you can't make decisions. other aspects of the culture are more like a dog pack than a meritocracy. also, information-free performance enhancements: smoothing, selling volatility, and doubling up. use cvar to help with nonsymmetric hedge fund returns, resampled optimization to deal with difficult error estimation. risk metrics are ordinal, not cardinal, quantities.&lt;br /&gt;&lt;br /&gt;chapter 23 has an interesting reference to market microstructure -- using supply and demand curves on the level of bid/ask spread and probabilities of tick movements. also, a ref to a publisher that prints classic biographicals on turn-of-the-century market operators.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2919775562660148890?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2919775562660148890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2919775562660148890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2919775562660148890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2919775562660148890'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/02/how-i-became-quant.html' title='how i became a quant'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6528261872007838118</id><published>2011-01-29T03:21:00.000-08:00</published><updated>2011-01-29T03:31:54.076-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>cape -- cyclically adjusted price/earnings</title><content type='html'>i saw an interesting quote from page 3 of the money pull-out section of the january 8, 2011 issue of the financial times. 'eleven reasons to worry - but two reasons to invest' by merryn somerset webb. i thought the identification of the 'only really reliable long-term indicator' was interesting. i wonder if the assumption that predicted returns can come from either price adjustments as well as earnings depends on a dividend-paying stock.&lt;br /&gt;&lt;br /&gt;'as societe generale's albert edwards points out, on a cyclically adjusted price/earnings (cape) ratio, the us market remains seriously overvalued. so, unless this time really is different (and i'd bet a good deal that it is not), we can expect to revert to mean at some point.&lt;br /&gt;&lt;br /&gt;let's not forget, as edwards put it, that while the history of the last 130 years or so has been both remarkable and appalling -- "the deaths of empires, the birth of nations, periods of deregulation, periods of re-regulation, world wars, revolutions, plagues and huge technological and medical advances -- "none of these events mattered from the perspective of value" the long run average cape remained much the same.&lt;br /&gt;...&lt;br /&gt;i'm not worried about valuation in the short term. the cape is -- so far -- just about the only really reliable long-term indicator of stock market returns we have. but it is rarely much use to anyone in the shorter term. som, while we need to watch it, we don't need to panic every time it flashes at us.'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6528261872007838118?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6528261872007838118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6528261872007838118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6528261872007838118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6528261872007838118'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/cape-cyclically-adjusted-priceearnings.html' title='cape -- cyclically adjusted price/earnings'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7030366850274781846</id><published>2011-01-25T03:11:00.000-08:00</published><updated>2011-01-25T03:12:44.640-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>rotation, quaternions, etc.</title><content type='html'>i always have to look this stuff up when i need it, so i found a great ref &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=5F5145BE25D61F87478B25AD1493C8F4?doi=10.1.1.110.5134&amp;amp;rep=rep1&amp;amp;type=pdf&amp;amp;ei=QcetSefqF4GEsQPnx4jSBA&amp;amp;sig2=HjJILSBPFgJTfuifbvKrxw&amp;amp;usg=AFQjCNFbABIxusr-NEbgrinhtR6buvjaYA"&gt;here&lt;/a&gt;. from the abstract:&lt;br /&gt;&lt;br /&gt;We present the three main mathematical constructs used to represent the attitude of a rigid body in three-&lt;br /&gt;dimensional space. These are (1) the rotation matrix, (2) a triple of Euler angles, and (3) the unit quaternion. To&lt;br /&gt;these we add a fourth, the rotation vector, which has many of the bene¯ts of both Euler angles and quaternions, but&lt;br /&gt;neither the singularities of the former, nor the quadratic constraint of the latter. There are several other subsidiary&lt;br /&gt;representations, such as Cayley-Klein parameters and the axis-angle representation, whose relations to the three main&lt;br /&gt;representations are also described. Our exposition is catered to those who seek a thorough and uni¯ed reference on&lt;br /&gt;the whole subject; detailed derivations of some results are not presented.&lt;br /&gt;Keywords{Euler angles, quaternion, Euler-Rodrigues parameters, Cayley-Klein parameters, rotation matrix, di-&lt;br /&gt;rection cosine matrix, transformation matrix, Cardan angles, Tait-Bryan angles, nautical angles, rotation vector,&lt;br /&gt;orientation, attitude, roll, pitch, yaw, bank, heading, spin, nutation, precession, Slerp&lt;br /&gt;1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7030366850274781846?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7030366850274781846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7030366850274781846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7030366850274781846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7030366850274781846'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/rotation-quaternions-etc.html' title='rotation, quaternions, etc.'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1055059904080796149</id><published>2011-01-19T05:38:00.000-08:00</published><updated>2011-01-19T05:43:49.639-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>fifty years in wall street</title><content type='html'>a highly recommended book on the history of us finance and some of the big names and players during the latter half of the 19th century is out of copyright and available for free online. it's a heft tome (~1000 pages) but you can get plain text, pdf with scanned images, or djvu files &lt;a href="http://openlibrary.org/books/OL7120642M/Fifty_years_in_Wall_street."&gt;here&lt;/a&gt; or &lt;a href="http://www.archive.org/details/fiftyyearsinwall00clewuoft"&gt;here&lt;/a&gt;. the plain text looks like it was ocr and is pretty good quality, though might cause some problems with tts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1055059904080796149?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1055059904080796149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1055059904080796149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1055059904080796149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1055059904080796149'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/fifty-years-in-wall-street.html' title='fifty years in wall street'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5800338698274908012</id><published>2011-01-06T07:54:00.000-08:00</published><updated>2011-01-06T09:06:19.671-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>windows python in cygwin</title><content type='html'>finally solved a problem (or found a workaround, at least) for something that had bothered me for a while: when i tried to use windows python (not cygwin python, which worked fine) in a xterm, it seemed not to be connected to stdout, stderr, and stdin. neither the interpreter nor the debugger prompt would show up, and nothing happened when i used print or sys.stdout.write. the mysterious thing was it would work from a non-x cygwin shell. but i needed mouse action on the desktop and screen (which uses a text-based x windows server) remotely.&lt;br /&gt;&lt;br /&gt;turns out the problem is how cygwin interfaces a non-cygwin console app from the terminal. it talks to it through pipes rather than with a real pty, and the issues there are deep and woolly. so all these windows programs are buffering in the pipe, not realizing how impatient i'm getting on the other end.&lt;br /&gt;&lt;br /&gt;fortunately, python has an easy workaround. the -i option makes it assume interactivity, skipping the tty check. i can use it on the cli or #! shebang, and now it's working. only problem is it drops me into an interpreter when the script finishes, so i have to type quit() (c-d, c-z, c-c are all ignored).&lt;br /&gt;&lt;br /&gt;ref &lt;a href="http://code.google.com/p/mintty/issues/detail?id=56"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5800338698274908012?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5800338698274908012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5800338698274908012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5800338698274908012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5800338698274908012'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/windows-python-in-cygwin.html' title='windows python in cygwin'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3357147894507629435</id><published>2011-01-06T03:50:00.000-08:00</published><updated>2011-05-17T05:43:16.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>parallel, numpy, shared memory,...</title><content type='html'>trying to figure out how to do parallel processing efficiently with python, and numpy in particular. i want something simple, closely related to the original serial code (sorry, mpi, you're not welcome here).&lt;br /&gt;&lt;br /&gt;parallelpython holds some promise, dodging the gil by starting separate interpreters and piping pickles back and forth. similar to pyro, and it looks pretty seemless between smp vs. cluster. unfortunately, pp does not provide for any shared mem so big data (even read only) must be copied (and pickled!) on smp.&lt;br /&gt;&lt;br /&gt;multiprocessing is now built in to 2.6 and backported as far as 2.4 or 2.3. doesn't handle remote processes, though the pp/pyro-type pickle server (manager) interfaces with inet ports. i think it basically forks the process to make the worker processes, so you get less overhead (os service vs. cranking up a new python). and there's no need to feed it modules or any other globals; these get copied on the fork. it has some capability to share memory, though i think these are only kinda raw ctype buffers. (i think all of this is similar to the approach posh used, though more generally for user-defined types -- high quality hackery but unmaintained since 2003.)&lt;a href="http://folk.uio.no/sturlamo/python/multiprocessing-tutorial.pdf"&gt; apparently&lt;/a&gt; some people have coaxed numpy into using these ctype arrays to make np arrays sit in shared memory land, with views available to the children. (maybe using &lt;a href="http://blog.enthought.com/?p=62"&gt;this sort of thing.&lt;/a&gt;) the approach got an attaboy from the big man himself, travis oliphant, but (in the same dir) sturla has a sharedmem module written later (cleaned up and&lt;a href="https://bitbucket.org/cleemesser/numpy-sharedmem/"&gt; posted here&lt;/a&gt;) that looks like it makes lower level sys calls to create shared memory space manually. does that mean the multiprocessing shm is unsatisfactory? the paper does warn that it's a moving target, and the scipy cookbook indicates the same thing: 'this page was obsolete as multiprocessing's internals have changed.' epd has a webinar coming up promising to demo multiprocessing with large arrays, so maybe i should see what they do. anyway, if i do use this for parallel stuff,&lt;a href="http://pyinsci.blogspot.com/2009/02/usage-pattern-for-multiprocessing.html"&gt; this blog post&lt;/a&gt; might be useful.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.python-forum.org/pythonforum/viewtopic.php?f=15&amp;amp;t=16502"&gt;here's another page&lt;/a&gt; that looks very useful for multiprocessing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.fabfile.org/en/1.0.1/index.html"&gt;fabric&lt;/a&gt; looks interesting, too, though more geared toward sysadmin stuff. maybe similar to posh in some ways.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3357147894507629435?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3357147894507629435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3357147894507629435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3357147894507629435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3357147894507629435'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/parallel-numpy-shared-memory.html' title='parallel, numpy, shared memory,...'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7406172167683486920</id><published>2011-01-06T03:13:00.000-08:00</published><updated>2011-01-29T06:46:07.872-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scraping'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='investing'/><title type='text'>financial times rss</title><content type='html'>FT offers a dizzying array of separate rss feeds for its articles, but i don't think all of them end up in the print newspaper. i'd like to get the articles that the editors have deemed most important, without having to pay the £2/paper to get them. so... i bought a copy and tried to find where the articles in the paper show up in rss. and here they are, in roughly the order of importance given at the end of 'all you need to know about the city':&lt;br /&gt;&lt;br /&gt;lex column&lt;br /&gt;  lex main&lt;br /&gt;&lt;br /&gt;2nd (companies and markets) section&lt;br /&gt;  companies: companies main, uk (companies|uk, though there's a lot that's not in the paper here), uk smaller companies (companies|uk)&lt;br /&gt;  markets: markets main (markets section, last page)&lt;br /&gt;&lt;br /&gt;1st section&lt;br /&gt;  management: management main (business life)&lt;br /&gt;  comment: comment main, opinion, analysis (comment &amp;amp; analysis)&lt;br /&gt;  world: world main, europe, asia-pacific, africa, us, uk business, uk economy&lt;br /&gt;&lt;br /&gt;looks like google reader might be a convenient way to combine all the streams into one and maybe even keep track of which have been read already. and i was hoping the mobile version (http://www.google.com/reader/m) would simplify the scraping to whittle it down around the body text. but it doesn't always work; sometimes it only takes the first paragraph or two and scraps the rest, probably because it catches a break before a table or image. so i think i'll have to navigate through to the original page and scrape from there.&lt;br /&gt;&lt;br /&gt;EDIT: i guess the people at ft are smart enough to make it easy for me. they post links for their &lt;a href="http://www.ft.com/uk-edition"&gt;print edition&lt;/a&gt; (and us, europe, middle east, and asia editions). only thing i didn't find on that page was the 'money' special pullout from the weekend edition. i think most of those articles were in the 'personal finance' section of the website. and i discovered that each html page for a section has an rss icon link in the upper right, so it's easy to snag stuff once i know where they are on the website.&lt;br /&gt;&lt;br /&gt;going through the sections, i found they went roughly in order with pretty close, though not exact, correspondence to the articles in print. here are the sections on the website and the page numbers of articles listed under them, to give you an idea of the density:&lt;br /&gt;front page: 1,1 must read&lt;br /&gt;national news: 2,2,2,3,3,4,4,4,4,4,4 skip 1/2 to 2/3&lt;br /&gt;world: 5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,8,8,8 good read&lt;br /&gt;comment &amp;amp; analysis: ,9,10,10,10,10,11,11,11,11 skip some of these, though the latter ones are really good&lt;br /&gt;letters: 10,10,10,10,10 skip all of these!&lt;br /&gt;life &amp;amp; arts: (pull-out) 1,2,2,2,2,3,4,4,5,5,5,6,7,6,6,7,8,9,19,10,10,11,11,11,12,12,13,13,14,14,20,20,17,17,17,17,17,17,17,17,17,17,17&lt;br /&gt;  a lot of things skipped between 14 ad 17, but i would skip this whole section.&lt;br /&gt;ft magazine: (pull-out) 15,54,12,7,10,8,44,44,47,43,43,46,46,52,53,51,50,49,48 i would skip almost all of this&lt;br /&gt;house &amp;amp; home: (pull-out) 1,2,2,3,6,7,7,8 i would skip practically all of this section&lt;br /&gt;lex: 24,24,24,24 must read&lt;br /&gt;companies: 12,12,?,13,13,12,14,14,14,14,14,15,15,15,14,15,16,16,16,16,?,17,17,?,17 good read, especially toward the end&lt;br /&gt;markets: 22,22,?,23,23,23,23,24 must read&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7406172167683486920?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7406172167683486920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7406172167683486920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7406172167683486920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7406172167683486920'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2011/01/financial-times-rss.html' title='financial times rss'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3385454984043217844</id><published>2010-12-23T03:14:00.000-08:00</published><updated>2011-07-26T02:59:31.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scraping'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>dashboard and screen scraping</title><content type='html'>one thing that's been on my low-priority radar is a way to scrape through the complex flaming hoops that banks, credit cards, and investment brokerages put up so i can have an auto dashboard, showing me account balances and net worth at a glance.&lt;br /&gt;&lt;br /&gt;mechanize looks like a nice package for performing many browser functions, including &lt;a href="http://wwwsearch.sourceforge.net/mechanize/forms.html"&gt;form interaction&lt;/a&gt;; probably the best of its kind i've found (and nice &lt;a href="http://wwwsearch.sourceforge.net/mechanize/faq.html"&gt;faq&lt;/a&gt;). however, it does mean writing a browsing session from scratch (read: lots of online debugging) and i'm not sure how well it can handle javascript, frames/windows, and all the other eye candy screen junk these sites like to throw at you.&lt;br /&gt;&lt;br /&gt;someone out there recommended pyxpcom (combined with pydom in &lt;a href="http://pyxpcomext.mozdev.org/index.html"&gt;pythonext&lt;/a&gt;) as a way to do anything mozilla can. i think that must be true, since it seems to be just the pieces that mozilla-esque browers are made of. as powerful and difficult to use as a build-your-own-ferrari kit.&lt;br /&gt;&lt;br /&gt;i think the most promising option seems to be &lt;a href="http://seleniumhq.org/"&gt;selenium&lt;/a&gt;, which is apparently &lt;a href="http://seleniumhq.org/docs/09_webdriver.html"&gt;merging with webdriver&lt;/a&gt; for version 2.0. basically drives a real browser, but can record and play back scripts in a variety of languages (including python). the webdriver type of interface seems to be the future of selenium, and it has the advantages of better navigation and less to install. written in java, but i think it can do python (though the docs are behind if so). so i'm not sure if i should just wait for an official release of 2.0, but it does look like selenium is what i'm after. &lt;a href="http://seleniumhq.org/docs/02_selenium_ide.html"&gt;here's the doc&lt;/a&gt; on using ide.&lt;br /&gt;&lt;br /&gt;EDIT: did some more looking around with selenium, and wow! i love the ide/rc combo. i think i need to look at&lt;a href="http://blog.reallysimplethoughts.com/2010/10/12/a-quick-introduction-to-css-locators-in-selenium/"&gt; this blog post&lt;/a&gt; to get the most out of locators (css vs. xpath). some of the extra plugins for selenium-ide are worth getting, and the selenium.py module can apparently just be copied into the python path to use selenium-rc. 1.0.11 has firefox 4 support in the ide, but it's very recent (2011-04-12).&lt;br /&gt;&lt;br /&gt;they have put out a number of rcs for v2; apparently the v2 release is coming summer 2011. no remote control javascript server is necessary for version 2 since it's integrated with webdriver. i need to know if the ide and python export will still work. right now i think python will work, but no ide yet (though 2.0 is probably backwards compatible so might run the code generated by the version 1 ide).&lt;br /&gt;&lt;br /&gt;more selenium links: &lt;a href="http://blog.softwaretestingclub.com/2011/04/selenium-commands-locators-explained/"&gt;command locators&lt;/a&gt;, &lt;a href="http://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom-and-selenium-the-rosetta-stone/"&gt;xpath/css/dom rosetta,&lt;/a&gt;&lt;a href="http://saucelabs.com/blog/index.php/2011/05/why-css-locators-are-the-way-to-go-vs-xpath/"&gt; css locators are faster than xpath&lt;/a&gt;,&lt;a href="http://blog.reallysimplethoughts.com/2011/05/30/welcome-selenium-ide-1-0-11-with-firefox-4-support/"&gt; good info&lt;/a&gt;, &lt;a href="http://seleniumhq.wordpress.com/"&gt;stay up to date,&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;a href="http://www.wakaleo.com/blog/279-selenium-2web-driver-the-land-where-page-objects-are-king"&gt;good example&lt;/a&gt;,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;managed to get selenium python bindings installed on a windows machine (not surprisingly, a bit more involved than on linux) with my epd python. had to manually download tar ball, python setup.py install, and manually create the test dir structure that it would then complain about. maybe there's an option to make it skip tests, but the kludge was faster than looking that up. now i have selenium 2 with the webdriver interface, much better than rc! and btw, my experiments confirm what others have said about locators: css is much faster than xpath, even on firefox. i've also found that, while the selenium ide is really good for getting started with the locators, it's often possible to find shorter, more informative, and likely more stable tags and ids by poking around in the html just a little rather than using the first thing that pops up in the ide table. so i'm not going to try to keep a drop-in interface to call into the ide-generated scripts; cut-n-paste of one-liners will be good enough for both dev and maintenance. still, there is tremendous value in starting with something that works, and that alone makes the ide worth the install.&lt;br /&gt;&lt;br /&gt;some other things i've learned: the 'andWait' stuff is only relevant from the java interface. in python, there's no way to keep running asynch while stuff is still loading. click, get, etc. only return to the python script once it's fully loaded, so that can be a latency bottleneck. i did poke around and find a possible place to change that, but i'll see if i really need to.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3385454984043217844?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3385454984043217844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3385454984043217844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3385454984043217844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3385454984043217844'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/dashboard-and-screen-scraping.html' title='dashboard and screen scraping'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6524523711158218629</id><published>2010-12-13T07:51:00.000-08:00</published><updated>2010-12-13T07:56:18.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>scraping off microsoft's look and feel</title><content type='html'>visually impaired people have at least one thing going for them: the high contrast windows theme is much better than windows standard. and the opticwhite theme for google chrome helps as well. now i don't feel quite so out of place and my eyeballs won't melt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6524523711158218629?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6524523711158218629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6524523711158218629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6524523711158218629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6524523711158218629'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/scraping-off-microsofts-look-and-feel.html' title='scraping off microsoft&apos;s look and feel'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-9003317412671569181</id><published>2010-12-11T05:51:00.000-08:00</published><updated>2011-01-06T04:56:47.161-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>virtualbox</title><content type='html'>holy grail: windows 7 and ubuntu dual boot, with either also running under a vm in the other. i've been looking around for a good virtual machine; some of the old ones seem kinda dead or just emulate (read: way too slow) (bochs, plex86) or are too slow except on linux host or maybe forked off somewhere else (qemu/kqemu or whatever). xen looks pretty good, especially with its capability to run a guest os off a partition. but it only runs on a linux host, so that's only half the answer, and i'm not sure if anyone has gotten it to use an existing windows install.&lt;br /&gt;&lt;br /&gt;virtual box can run on windows or linux host, and it can run either guest at virtualized native speed. and maybe i can get it to run an existing &lt;a href="http://forums.virtualbox.org/viewtopic.php?f=28&amp;amp;t=33356"&gt;windows &lt;/a&gt;or &lt;a href="http://cargowire.net/articles/seamlessubuntuwindows"&gt;ubuntu &lt;/a&gt;from the &lt;a href="http://superuser.com/questions/93664/how-can-i-access-a-linux-partition-from-windows"&gt;other&lt;/a&gt;. one problem with booting the oem windows partition is that setting up virtualbox from linux will require bootrec.exe from an install (not recovery) dvd.&lt;br /&gt;&lt;br /&gt;(colinux might be able &lt;a href="http://polishlinux.org/linux/ext3-reiserfs-xfs-in-windows-thanks-to-colinux/"&gt;to boot an existing install&lt;/a&gt;, but colinux is limited to one processor atm.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-9003317412671569181?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/9003317412671569181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=9003317412671569181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9003317412671569181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9003317412671569181'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/virtualbox.html' title='virtualbox'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3978935914066098484</id><published>2010-12-10T10:24:00.000-08:00</published><updated>2010-12-10T10:32:11.165-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>getting spyder and python to work on windows 7</title><content type='html'>had to struggle to get my python install working with numpy and spyder, probably because i copied them over from another install.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;with spyder, i had to move the 2.0.0beta5 egg and give the --prefix option to setup.py in order to install and use 2.0.3.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;with numpy, i was getting 'ImportError: DLL load failed: The specified module could not be found.' when i tried to import numpy, _unless_ i was in the Python26_64\Scripts dir. i think it's because of the mkl lapack dlls in there. but it all worked once i added that to my PATH (not PYTHONPATH) with the help of cygwin -- just using export in bash allows me to peek at what it would be in windowsese with os.environ['PATH'] so i could put it into the env editor in spyder. viola!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3978935914066098484?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3978935914066098484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3978935914066098484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3978935914066098484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3978935914066098484'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/getting-spyder-and-python-to-work-on.html' title='getting spyder and python to work on windows 7'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6108189920046276067</id><published>2010-12-10T05:23:00.000-08:00</published><updated>2010-12-10T05:32:21.557-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>sshd on cygwin</title><content type='html'>got a new machine with windows 7, and i think i'll have to actually use the windows partition. ugh.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;fortunately, cygwin comes with a kajillion unix packages that make microsoft bearable. and i just got my openssh server up and running, so i can still log in from home or elsewhere. here's how:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;first, i followed the steps &lt;a href="http://pigtail.net/LRP/printsrv/vista-cygwin.txt"&gt;here&lt;/a&gt; to get rid of any old failed-attempt kruft. then, even though i did 'run as administrator' on the cygwin bash startup bat, it still gave me warnings when i ran ssh-host-config and tried to use my windows user for running sshd. so i went back and did all the editrights lines. rerunning ssh-host-config (probably unnecessary) gave no warnings, so i started it up with 'cygrunsrv -S sshd' as suggested &lt;a href="http://www.noah.org/ssh/cygwin-sshd.html"&gt;here&lt;/a&gt; (also used the 'tty ntsec' for CYGWIN, as he suggests). and it Just Works.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6108189920046276067?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6108189920046276067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6108189920046276067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6108189920046276067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6108189920046276067'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/sshd-on-cygwin.html' title='sshd on cygwin'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1368038498820058932</id><published>2010-12-06T06:51:00.000-08:00</published><updated>2010-12-06T06:53:56.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>the ascent of money</title><content type='html'>just watched a documentary on pbs called 'the ascent of money' (google it, easy to find). nice 4-part series on some of the history of finance and how it ties in with the history of the world. should be required viewing. i hear the book is good, too, but the video is easier for lazy people like me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1368038498820058932?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1368038498820058932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1368038498820058932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1368038498820058932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1368038498820058932'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/12/ascent-of-money.html' title='the ascent of money'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-427380897929765233</id><published>2010-11-27T04:11:00.001-08:00</published><updated>2010-11-27T07:18:44.392-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>potato-powered web server</title><content type='html'>when i see pages like &lt;a href="http://d116.com/spud/"&gt;this&lt;/a&gt;, it scares me a little to think how similar i am to this person.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-427380897929765233?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/427380897929765233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=427380897929765233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/427380897929765233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/427380897929765233'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/potato-powered-web-server.html' title='potato-powered web server'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7128571726518182490</id><published>2010-11-23T01:30:00.000-08:00</published><updated>2010-11-26T07:40:42.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opencourseware'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>15.433</title><content type='html'>from ocw&lt;br /&gt;&lt;br /&gt;3&lt;br /&gt;harry markowitz, 'portfolio selection', journal of finance, march 1952, u. of chicago (grad student)&lt;br /&gt;    'the process of selecting a portfolio may be divided into two stages. the first stage starts with observation and experience and ends with beliefs about the future performances of available securities. the second stage starts with the relevant beliefs about future performances and ends with the choice of portfolio'&lt;br /&gt;    my code concerns second part for computation, but could also guide quantitative, rational, unemotional thought and validate assumptions made in the first part.&lt;br /&gt;s&amp;amp;p 500 returns look nearly bimodal, with a larger positive mode and smaller negative mode&lt;br /&gt;10 year treasury bills returns have small tails&lt;br /&gt;&lt;br /&gt;9&lt;br /&gt;fama french three-factor model&lt;br /&gt;  connections to other ratio patterns&lt;br /&gt;  estimates for the factors 1963-2000&lt;br /&gt;momentum (short-term positive correlation, long-term reversals) most studied anomaly in finance (2000)&lt;br /&gt;&lt;br /&gt;10&lt;br /&gt;equity option valuation&lt;br /&gt;risk neutral pricing&lt;br /&gt;binomial trees&lt;br /&gt;put/call parity&lt;br /&gt;black scholes formula&lt;br /&gt;implied volatility&lt;br /&gt;survey: why do institutions use options?&lt;br /&gt;&lt;br /&gt;at page 200, printed landscape (should be portrait)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7128571726518182490?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7128571726518182490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7128571726518182490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7128571726518182490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7128571726518182490'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/15433.html' title='15.433'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3114947711270442525</id><published>2010-11-22T06:28:00.000-08:00</published><updated>2010-11-22T06:30:39.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>thinking in c++</title><content type='html'>both volumes of the 2nd edition are freely &lt;a href="http://www.mindviewinc.com/Books/"&gt;available online&lt;/a&gt;, as is a draft version of 'thinking in python'. they're all a bit old, though they look like worthwhile reads.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3114947711270442525?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3114947711270442525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3114947711270442525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3114947711270442525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3114947711270442525'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/thinking-in-c.html' title='thinking in c++'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8354275864700277758</id><published>2010-11-22T06:04:00.000-08:00</published><updated>2010-11-22T06:09:27.064-08:00</updated><title type='text'>the office</title><content type='html'>dwight cracks me up:&lt;br /&gt;&lt;a href="http://www.noob.us/humor/the-office-fire-drill/"&gt;http://www.noob.us/humor/the-office-fire-drill/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=zthtgZNJ5sc&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=zthtgZNJ5sc&amp;amp;feature=related&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=oLsOS362hkM"&gt;http://www.youtube.com/watch?v=oLsOS362hkM&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=cbm5EoAm1bI"&gt;http://www.youtube.com/watch?v=cbm5EoAm1bI&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8354275864700277758?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8354275864700277758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8354275864700277758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8354275864700277758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8354275864700277758'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/office.html' title='the office'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-563217809983807593</id><published>2010-11-17T06:15:00.000-08:00</published><updated>2010-11-17T09:20:17.834-08:00</updated><title type='text'>c++ design patterns and derivatives pricing (2nd ed)</title><content type='html'>just finished a nice quant book by mark joshi. still need to go back through the exercises, but it was a nice taste of some basic but real quantitative finance data structures and their c++ implementation, as well as more general c++ and oo issues. here are a few points that i think i should remember:&lt;br /&gt;&lt;br /&gt;open-closed principle&lt;br /&gt;    open for extension, closed for modification (don't require editing files to extend their functionality)&lt;br /&gt;const&lt;br /&gt;    good for discipline, safety, and optimization&lt;br /&gt;rule of three&lt;br /&gt;    with no declared copy constructor, the compiler will do a shallow copy&lt;br /&gt;    if destructor, assignment operator, or copy constructor is defined, define the other two, too&lt;br /&gt;rule of almost zero&lt;br /&gt;    almost never declare any of destructor, assignment, or copy&lt;br /&gt;    use smart pointers instead: shared_ptr, scoped_ptr, or Wrapper&lt;br /&gt;    to avoid memory leaks&lt;br /&gt;    'almost': class with abstract methods is likely to be deleted by pointer to the base class, so it needs a virtual destructor&lt;br /&gt;stlport.org provides an stl with range checking, useful if you're not using visual c++ 8.0 (it already has debug mode)&lt;br /&gt;boost.org is intended to become part of c++ standard&lt;br /&gt;quantlib and xlw&lt;br /&gt;commands never to use&lt;br /&gt;    malloc&lt;br /&gt;    free&lt;br /&gt;    new []&lt;br /&gt;    delete []&lt;br /&gt;throw exception: ok in constructor, never in a destructor&lt;br /&gt;new is slow&lt;br /&gt;floating point errors do not cause exceptions by default, but they can be made to&lt;br /&gt;pimpl&lt;br /&gt;    private implementation: one class is visible to clients with no data except a pointer to another class, which is defined in the source file in an unnamed namespace&lt;br /&gt;    difference between encapsulation and insulation: private changes do not affect classes protected by encapsulation, but fail to insulate because all clients have to recompile&lt;br /&gt;lots of good refs like 7, 11, and 18&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-563217809983807593?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/563217809983807593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=563217809983807593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/563217809983807593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/563217809983807593'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/c-design-patterns-and-derivatives.html' title='c++ design patterns and derivatives pricing (2nd ed)'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-845982070513576586</id><published>2010-11-02T03:16:00.000-07:00</published><updated>2011-09-10T04:23:37.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='aa1'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>ath5k woes</title><content type='html'>okay, is everyone else out there as bugged as i am about the ath5k driver? it seems like every ubuntu maintenance update i've done over the last couple of months on my acer aspire one has made it worse. i just downgraded back to 2.6.32-21-generic, which works pretty well (though i did get a bunch of 'ath5k phy0: failed to wake up the MAC Chip' and 'ath5k phy0: can't reset hardware (-5)' after i let it run for a while).&lt;br /&gt;&lt;br /&gt;i've been have other hardware problems with the ssd drive and the web cam, but i think this one is a driver issue given the chatter i've found on mail lists and bug reports. i know it's oss, so i can't really complain, but i'm really looking forward to this being resolved. i wonder if i should lag my kernel updates and/or switch to madwifi or something....&lt;br /&gt;&lt;br /&gt;EDIT: don't think madwifi is the answer, since it looks like their dev effort got folded back into the ath5k. at least, i couldn't find a madwifi version that would both compile with my kernel and work with my pci-e wifi. but i seem to recall looking at the L0s, L1 ASPM stuff before with the unsupported jumbo problems, and i noticed that now all aspm support is turned off by default on my card. (dmesg even says the pci driver explicitly decides to do it.) this change was apparently made because junky old pcie wireless cards, like i have in my acer aspire, get the unsupported jumbos in L0s. but L1 is supposed to be a mandatory part of the standard (L0s is optional). so maybe something is trying to shove it into L1 without checking that that's enabled.&lt;br /&gt;&lt;br /&gt;i tried turning L1 back on with the enable-aspm script (with root complex 00:1c.2 and endpoint 03:00.0) but it didn't seem to do anything. so i put the pcie_aspm=force kernel option into /boot/grub/grub.cfg, and that worked. in fact, it only enabled aspm for the atheros and its pci-e port, and only L1 for that. i guess the ath5k devs or somebody actually put code in to check if it can do it. so that's good; shouldn't get any of the jumbo problems, even with the =force.&lt;br /&gt;&lt;br /&gt;so now we'll just see if this helps with the 'ath5k phy0: failed to wakeup the MAC Chip' and 'ath5k phy0:can't reset hardware (-5)' problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-845982070513576586?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/845982070513576586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=845982070513576586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/845982070513576586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/845982070513576586'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/11/ath5k-woes.html' title='ath5k woes'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3543686712300286823</id><published>2010-10-30T07:23:00.000-07:00</published><updated>2010-10-30T07:31:42.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='aa1'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>booting from sdhc on acer aspire one</title><content type='html'>finally got my aa1 to boot with root on the sdhc card.&lt;a href="http://ubuntuforums.org/showpost.php?p=8162015&amp;amp;postcount=57"&gt; these instructions&lt;/a&gt; are really good, and &lt;a href="http://www.osnews.com/story/20743/Eeebuntu_2_0_SD_Card_Installation_on_the_Aspire_One"&gt;this reference&lt;/a&gt; is good, too. (though he is of the opinion that the nand flash write cycle limit is nothing to worry about, and i used to think that, too, but.... i wonder if my swap and ext4 fs had anything to do with the built-in ssd drive crashing so completely and painfully. this time i'll be going ext2 retro, just to be safe.)&lt;br /&gt;&lt;br /&gt;had to boot from a usb drive (yeah, ssd is that hosed... can't even spare a few mb for a boot partition. heck, i can't even alter the partition table.) but it seems to be booting. now i wonder if i can hack this case open and put the usb drive in  the unused bay...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3543686712300286823?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3543686712300286823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3543686712300286823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3543686712300286823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3543686712300286823'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/booting-from-sdhc-on-acer-aspire-one.html' title='booting from sdhc on acer aspire one'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4161973895509565422</id><published>2010-10-28T01:05:00.000-07:00</published><updated>2010-10-28T03:56:30.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>flashed my aa1 bios</title><content type='html'>my acer aspire one seemed to be having hardware issues, so i flashed the bios from 0.3310 10/06/2008, InsydeH2O Rev. 3.5, vga bios IntelV1585 to... the same thing. it's the latest version on acer's website, but i reflashed it anyway in case it had been munged somehow. i used the FLASHIT.EXE and zg5ia32.fs method that doesn't require any freedos junk. but it doesn't seem to make any difference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4161973895509565422?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4161973895509565422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4161973895509565422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4161973895509565422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4161973895509565422'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/flashed-my-aa1-bios.html' title='flashed my aa1 bios'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5760973014987631956</id><published>2010-10-27T07:09:00.000-07:00</published><updated>2010-10-27T07:19:20.866-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>mutual information for linearly dependent rvs</title><content type='html'>i can't remember if i had recorded this anywhere, but i want to make sure i have it because it took me a little while to derive.&lt;br /&gt;&lt;br /&gt;if x1 and x2 are both uniform random variables on [0,1] and y = a*x1 +(1-a)*x2, then the mutual information between x1 and y is ln(a/(1-a)) + (1-a)/(2*a) nats, where ln is the natural log. this is a useful result for testing mutual information estimators because it's on a bounded domain so might converge more quickly than functions of exponents.&lt;br /&gt;&lt;br /&gt;the key to deriving this result is to realise that the marginal pdf for y is a trapezoid, and be careful about the log base when using the chain rule/integration by parts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5760973014987631956?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5760973014987631956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5760973014987631956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5760973014987631956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5760973014987631956'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/mutual-information-for-linearly.html' title='mutual information for linearly dependent rvs'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8017445270027395664</id><published>2010-10-27T01:42:00.000-07:00</published><updated>2010-10-27T01:47:25.271-07:00</updated><title type='text'>imperial websites</title><content type='html'>www.imperialbaseball.co.uk&lt;br /&gt;www.bright-futures.org.uk&lt;br /&gt;www.icfinancesociety.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8017445270027395664?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8017445270027395664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8017445270027395664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8017445270027395664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8017445270027395664'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/imperial-websites.html' title='imperial websites'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5603782168294556111</id><published>2010-10-13T02:26:00.000-07:00</published><updated>2010-10-13T06:24:47.707-07:00</updated><title type='text'>cheap hotels in london</title><content type='html'>&lt;a href="http://golondon.about.com/od/londonhotels/tp/cheaphotels.htm"&gt;http://golondon.about.com/od/londonhotels/tp/cheaphotels.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tune hotel is supposed to have really cheap rooms available, but i can find them on the online reservations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5603782168294556111?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5603782168294556111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5603782168294556111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5603782168294556111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5603782168294556111'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/cheap-hotels-in-london.html' title='cheap hotels in london'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7806704896434460882</id><published>2010-10-09T02:39:00.000-07:00</published><updated>2010-10-09T02:43:52.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='beamer'/><title type='text'>PlayerPiano</title><content type='html'>cool tool for showing 'interactive' presentations of python code. you can type random keys and it looks like you're typing in a fake python shell while it just runs your doctests (like an old-fashioned player piano with the punchcard scrolls). fast, easy, and frees you up to think about what you're saying instead of what you're typing.&lt;br /&gt;&lt;br /&gt;just don't let anyone ask questions -- they might want you to change something!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7806704896434460882?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7806704896434460882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7806704896434460882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7806704896434460882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7806704896434460882'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/playerpiano.html' title='PlayerPiano'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3646483668420640659</id><published>2010-10-01T07:55:00.000-07:00</published><updated>2010-10-01T08:01:05.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='beamer'/><title type='text'>impressive -- pdf slide presenter</title><content type='html'>&lt;a href="http://impressive.sourceforge.net/index.php"&gt;cool little presentation slide viewer&lt;/a&gt;, does transitions, overview screens, highlight boxes, and cursor-following spotlights. written in python with xpdf as the renderer. runs on windows, mac, linux. also allows for hyperlinks, so my page and overview links from beamer should still work. not sure about embedded movies, audio, or 3d objects, but... still cool.&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3646483668420640659?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3646483668420640659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3646483668420640659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3646483668420640659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3646483668420640659'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/10/impressive-pdf-slide-presenter.html' title='impressive -- pdf slide presenter'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7518066112284965584</id><published>2010-09-24T01:59:00.000-07:00</published><updated>2010-10-05T02:22:05.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><title type='text'>optimization of conditional value-at-risk</title><content type='html'>by rockafellar and uryasev&lt;br /&gt;&lt;br /&gt;good description of cvar and why it's superior to var (value at risk) for portfolio optimization. they use a math technique sort of like a lagrange multiplier (not really, but works in a similar way) to transform the otherwise 2-step procedure for computing and optimizing conditional value at risk to a single stochastic optimization, convex (piecewise linear). it can then be solved with either linear programming or a nonsmooth optimizer. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;interesting side note: they use a sobol sequence to get superior performance over straight-up mc. (the wikipedia article on sobol quasi-random sequences is quite dense and hard to understand, but here's a nice &lt;a href="http://www.nag.co.uk/IndustryArticles/introduction_to_quasi_random_numbers.pdf"&gt;article&lt;/a&gt; that shows a monte-carlo integration example with a finance application, refs to niederreiter, sobol, and faure qrs. bottom line: niederreiter is (maybe) best.) also shows examples of portfolio optimization and optimal hedging with a butterfly spread.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;certainly this is a better read than the highly mathematical paper that introduced cvar (convex measures of risk and trading constraints by f\"ollmer and schied). all i can really remember about that one is the point about cvar being convex (while var is not) and why that's important: diversification (mathematically, linearly interpolating between two portfolios) should not increase risk.&lt;br /&gt;&lt;br /&gt;still, i think it's interesting that an industry-standard book on portfolio optimization like 'active portfolio management' by grinold and khan would brush off all risk metrics other than variance so lightly. maybe return distributions really are close enough to gaussian (with exceptions for derivatives, etc.) that it doesn't matter in practice, as they claim. at least anything that can compute those quantities should also give the variance for comparison.&lt;br /&gt;&lt;br /&gt;call number:336.767 GRI                ID:2406743083     &lt;br /&gt;     Active portfolio management : a quantitative approach for providing&lt;br /&gt;     superior returns and controlling risk / Richard C. Grinold, Ronald N.&lt;br /&gt;     Kahn.&lt;br /&gt;good book to have in the personal library, although there will be an updated version out later this year or next.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7518066112284965584?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7518066112284965584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7518066112284965584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7518066112284965584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7518066112284965584'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/09/optimization-of-conditional-value-at.html' title='optimization of conditional value-at-risk'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4114497815501826914</id><published>2010-09-12T15:36:00.000-07:00</published><updated>2010-09-12T15:40:33.196-07:00</updated><title type='text'>nice fashionista blog</title><content type='html'>&lt;a href="http://permanentstyle.blogspot.com/"&gt;here's a blog&lt;/a&gt; that goes into some detail about why some types of clothing are higher quality than others, and how to take care of them. i don't normally go in for the gq stuff, and i currently can't afford anything in the blog, but someday i might have to. and i like the take permanentstyle has on fashion: permanent style, not semiannual closet churn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4114497815501826914?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4114497815501826914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4114497815501826914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4114497815501826914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4114497815501826914'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/09/nice-fashionista-blog.html' title='nice fashionista blog'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2454330043947610166</id><published>2010-09-03T04:20:00.000-07:00</published><updated>2010-09-21T03:12:18.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>pycxx vs. cython for python + c++</title><content type='html'>cython apparently has some capability for wrapping c++, with some workarounds and remaining issues as of v0.13. pycxx (or cxx) takes on the interface question from the c++ side, giving python a more c++ friendly api that can call/access either from the other (though i think python is still intended to be in the driver's seat).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i guess the question is whether i want to use more c++ (with pycxx) or a pythonesque third language (cython pyx).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i've seen some references to using c++ with weave.accelerate, but not sure if that has any advantage over either of the other two.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2454330043947610166?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2454330043947610166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2454330043947610166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2454330043947610166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2454330043947610166'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/09/pycxx-vs-cython-for-python-c.html' title='pycxx vs. cython for python + c++'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2435386911323093689</id><published>2010-09-01T09:21:00.000-07:00</published><updated>2010-09-01T09:28:26.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>quant job interview questions and answers</title><content type='html'>nice book by &lt;a href="http://www.markjoshi.com/"&gt;mark joshi&lt;/a&gt; et al. recent, relevant, $35 print on demand from lulu. lots of advice and questions to prep for that interview and gauge how ready you are to apply. good refs, including the big one by author 1 ('the concepts and practice of mathematical finance'); &lt;a href="http://xlw.sourceforge.net/index.shtml"&gt;xlw&lt;/a&gt;, the c++ plug in maker for excel api; and 'thinking in c++' (available free &lt;a href="http://eckelbooks.starlinger.org/"&gt;online&lt;/a&gt; from various mirrors).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2435386911323093689?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2435386911323093689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2435386911323093689' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2435386911323093689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2435386911323093689'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/09/quant-job-interview-questions-and.html' title='quant job interview questions and answers'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6935556629412739238</id><published>2010-08-27T03:17:00.000-07:00</published><updated>2010-08-27T09:48:42.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>beyond deterministic optimization</title><content type='html'>&lt;div&gt;i've come to realize that my multiobjective optimization problem is far from simple, with a lot of functions with noise-induced multimodality (FNIM) (numerical noise creating local minima). so i've been looking for previous work on how to deal with it. the fnim literature i've found seems to be very navel-gazing in that they look at how global minima bifurcate at the noise level is increased. but not as much on how to overcome the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;the term 'robust optimization' seems to be dominated by some guys from stanford, mit/singapore, and israel who have a particular framework that is not so useful to me right now. they assume the data going into the objective function are from a distribution that is an unknown member of a set of possible distros, and they want to protect against the worst-case from that set while strictly obeying the constraints. i think it's more of a mini-max problem, and what i need is to account for the uncertainty without needing to be so conservative. also, most, though not all, of the applications have a linear programming bend.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i'm not sure if stochastic optimization is what i need, but i'll check it out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6935556629412739238?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6935556629412739238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6935556629412739238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6935556629412739238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6935556629412739238'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/08/beyond-deterministic-optimization.html' title='beyond deterministic optimization'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6604712326584274138</id><published>2010-08-25T07:24:00.000-07:00</published><updated>2010-08-25T08:48:27.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>proposition 8 decision</title><content type='html'>the &lt;a href="http://www.nationalreview.com/articles/243684/prop-8-proponents-emergency-motion-nro-primary-document?page=1"&gt;emergency motion to stay&lt;/a&gt; judge walker's ruling is a well-written review and critique of the district court's prop 8 decision, especially the first 3 pages (even though it's a summary, it's a thorough summary). actually, the whole thing is pretty good although there are a couple of pages in the middle that are more dense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6604712326584274138?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6604712326584274138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6604712326584274138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6604712326584274138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6604712326584274138'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/08/proposition-8-decision.html' title='proposition 8 decision'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1074063876869668475</id><published>2010-08-20T07:50:00.000-07:00</published><updated>2010-08-20T07:54:54.370-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>trading hocus pocus</title><content type='html'>&lt;div&gt;i think i found the source for that reference to the use of fibonacci numbers in trading. there's a charlatan in  peddling books and software based on numerological mysticism. i can't believe people are paying $500 a pop for his stupid software and &gt;$150 for the book. really makes me wonder why i can't put together some of my code and sell it, if anyone is willing to buy that bovine byproduct. check out this gem from &lt;a href="http://www.fibnodes.com/training/book/twdlbook.asp?content=whatmtool#top"&gt;his website&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; What's in the book: Fibonacci ratios as market tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For centuries, scientists, mathematicians, and artisans have discovered that the Fibonacci sequence of numbers is replicated throughout nature. This amazing number series defines the appearance of physical structures, as well as the PROGRESS OF CHANGE AND GROWTH governing dynamic structures and systems. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Fibonacci sequence is found in the structures of trees, plants, and flowers. A regular sequence of Fibonacci numbers occurs in the relationship between a particular branch and the next branch. Fibonacci relationships also exist between leaves and stems. Radio signals generated by pulsars conform to Fibonacci numbers. Research reveals that many natural crystals contain the Fibonacci golden ratio, 1.618. There is even speculation by Dr. John Penrose of the Institute of Mathematics at Oxford, that the golden ratio may provide the crucial link between the sub-atomic and the supra-atomic world! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Human behavior has a dualistic nature. We think and act both as individuals and as part of a crowd. A crowd has its own energy and collective mind. It can be viewed as a dynamic system and, as such, it is governed by the same laws that exist throughout nature. Since a crowd is a dynamic system, and since financial and agricultural markets exhibit crowd behavior, it follows logically that Fibonacci relationships should be intrinsic to all liquid markets. These all important numbers and ratios indicate areas of contraction and expansion in price-wave movements. The concepts of Fibonacci support, resistance, and expansion in price function due to the principle inherent in the unfolding of all natural phenomena, including the behavior of crowds and the collective mind. The real difficulty is in the PROPER AND PRACTICAL APPLICATION of this natural phenomena to price movements. It is precisely that difficulty which DiNapoli Levels is designed to address. The text puts it all together in a unified trading approach you can act on! &lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div&gt;This book also dispels myths about Fibonacci analysis and only covers those techniques that are useful and practical to employ in real life trading situations.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;oh, good. it dispels all the myths and only covers the practical parts of this nonsense.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1074063876869668475?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1074063876869668475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1074063876869668475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1074063876869668475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1074063876869668475'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/08/trading-hocus-pocus.html' title='trading hocus pocus'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4534774166684961875</id><published>2010-08-19T06:48:00.000-07:00</published><updated>2010-08-20T07:59:17.779-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>forecasting commodity markets: using technical, fundamental, and econometric analysis</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TK6h1DzIv6E/TG6XmuwrkOI/AAAAAAAAAAU/JEEH9CNyz30/s1600/HP0003.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://2.bp.blogspot.com/_TK6h1DzIv6E/TG6XmuwrkOI/AAAAAAAAAAU/JEEH9CNyz30/s400/HP0003.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5507506085963731170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_TK6h1DzIv6E/TG6X0XJXgMI/AAAAAAAAAAc/5sJFFsHCRlM/s1600/HP0004.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_TK6h1DzIv6E/TG6X0XJXgMI/AAAAAAAAAAc/5sJFFsHCRlM/s400/HP0004.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5507506320142991554" style="cursor: pointer; width: 400px; height: 286px; " /&gt;&lt;/a&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_TK6h1DzIv6E/TG6YFzvKgZI/AAAAAAAAAAk/E9H-l0FLJJg/s1600/HP0005.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_TK6h1DzIv6E/TG6YFzvKgZI/AAAAAAAAAAk/E9H-l0FLJJg/s400/HP0005.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5507506619875492242" style="cursor: pointer; width: 400px; height: 286px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_TK6h1DzIv6E/TG6X0XJXgMI/AAAAAAAAAAc/5sJFFsHCRlM/s1600/HP0004.jpg"&gt;&lt;/a&gt;1995 book by julian roche is a bit disappointing and maybe just dated; it mentions that less work has been done with commodity price prediction than in other markets, and the fact that i have had such a hard time finding refs on it bears that out. refers briefly, though apparently seriously, to the idea of using numerical patterns from astrological sources and the fibonacci series... yikes! it also briefly mentions the possibility of using futures for prediction, but then cops out with some easily overcome excuses about how hard it might be. the types of technical analysis that it cites are really dirt dumb simple, though it does justify that by stating that those predictions are only good in the short term anyway, and you're not going to have enough data to fit a complex model reliably.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;one very worthwhile part of the book is the table of forecasting approaches on pages 175-179 (heavily adapted from strategic business forecasting, pp 159-164) and their characteristics, including short-, medium-, and long-term accuracies. looks like trend analysis, seasonal adjustments, and box-jenkins type arima models are easy ways to the top of the game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4534774166684961875?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4534774166684961875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4534774166684961875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4534774166684961875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4534774166684961875'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/08/forecasting-commodity-markets-using.html' title='forecasting commodity markets: using technical, fundamental, and econometric analysis'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TK6h1DzIv6E/TG6XmuwrkOI/AAAAAAAAAAU/JEEH9CNyz30/s72-c/HP0003.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2055530910889250561</id><published>2010-08-14T10:01:00.001-07:00</published><updated>2010-08-14T10:32:27.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>chaco, traits callbacks, and garbage collection</title><content type='html'>i just learned something about traits (from enthought) the hard way.... if you allow the object that has a trait callback defined on it to drop all references to it (other than adding it to a container), the callback won't work. in my case, i had a lasso selection turned on for a chaco plot that was put into a HPlotContainer. it plotted just fine, interaction tools were fine.... but no reaction to the selection.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;all i had to do was hang onto a reference to that traits object, and the selection worked. tough, tough bug to find. i feel cheated somehow.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2055530910889250561?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2055530910889250561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2055530910889250561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2055530910889250561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2055530910889250561'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/08/chaco-traits-callbacks-and-garbage.html' title='chaco, traits callbacks, and garbage collection'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2484641908071742368</id><published>2010-07-16T05:32:00.000-07:00</published><updated>2010-07-16T05:35:59.871-07:00</updated><title type='text'>notchup</title><content type='html'>&lt;a href="http://www.notchup.com/c/home"&gt;here's&lt;/a&gt; a recruiting/headhunter marketplace jobs site that i should get on my radar (or, rather, on theirs). they use independent talent scouts that scour sites like linkedin and personal contacts to find candidates that might already be employed ('passive' candidates) under the assumption that really good people are very rarely out of a job or trolling the job websites, looking for work. hang out my shingle and let them race to me with offers... now that's the way to get a job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2484641908071742368?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2484641908071742368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2484641908071742368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2484641908071742368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2484641908071742368'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/notchup.html' title='notchup'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5676152203740389171</id><published>2010-07-14T05:26:00.001-07:00</published><updated>2010-07-14T05:26:52.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>using googlecl with blogger from bash</title><content type='html'>i think i finally found a good way to post from the cli.&lt;br /&gt;&lt;br /&gt;google blogger post --title 'blog post title' --tags 'tag1,tag2' $'multiline content...'&lt;br /&gt;&lt;br /&gt;the $ in front of the hard (single) quote lets bash escape single quotes inside that last string, but nothing else. so i can put all kinds of crazy chars in my multiline post, including a backslash-escaped single quote, with impunity. only problem is editing a previous line.... well, now i have an excuse for leaving the typos in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5676152203740389171?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5676152203740389171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5676152203740389171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5676152203740389171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5676152203740389171'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/using-googlecl-with-blogger-from-bash.html' title='using googlecl with blogger from bash'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5764516341419998373</id><published>2010-07-14T05:18:00.001-07:00</published><updated>2010-07-15T00:35:31.066-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>stock index futures and price forecasting</title><content type='html'>trying to figure out exactly what numbers financial commentators use to make headlines like, "futures point to higher open..." often they point to specific futures contracts, like SPc1, NDc1, or DJc1. the cme group &lt;a href="http://www.cmegroup.com/trading/equity-index/us-index/sandp-500_quotes_openOutcry.html#prodType=EOM"&gt;equity futures quotes&lt;/a&gt; seem to be what people are referring to (or at least have equivalent price percent changes). unfortunately, the javascript in those pages that handle the quote updates prevents convenient scraping. options pages &lt;a href="http://www.cmegroup.com/trading/equity-index/european-style-eom/sandp-500-eom.html"&gt;like these,&lt;/a&gt; otoh, are exceedingly easy to scrape as whitespace-delimited plain text. and with the eom (end of month, european-style) options, the price/probability is fairly simple.&lt;br /&gt;&lt;br /&gt;if i really need to get at the futures contract prices, i could use &lt;a href="http://www.bloomberg.com/markets/stocks/futures/"&gt;bloomberg&lt;/a&gt;, which just has static html tables (with major us and world indices on one page).&lt;br /&gt;&lt;br /&gt;back on the cme group site, i couldn't find quotes for options for oil, and even the time and price transactions list is another inaccessible js job. however, if i only care about end-of-day data, there are a lot in the &lt;a href="ftp://ftp.cmegroup.com/pub/"&gt;ftp server&lt;/a&gt; (see the settle/ dir, for example) and other links from the volume:volume &amp;amp; open interest tab of &lt;a href="http://www.cmegroup.com/trading/energy/crude-oil/light-sweet-crude_quotes_volume_voi.html#prodType=01M"&gt;one of the futures pages&lt;/a&gt;. daily settlement prices (near the bottom) has links for interest rates, equities, (agricultural) commodities, precious and industrial metals (in comex), oil and energies (in nymex and cme clearport clearing), and fx.&lt;br /&gt;&lt;br /&gt;the volume by price data on that page might be particularly useful for building distributions. it combines total volume for the day at a each price, and the historical data available on the ftp server goes back a year and a half. the format is a bit obfuscated, but there are links to one-page format descriptions next to the data links.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;one other thought about using derivatives for price forecasting/asset valuation: the price of the derivative depends not only on what people believe about the future price, but also on what everyone knows about the current price. so, if i had intraday data for the derivative price, i should subtract out the effect of the underlying price to get the future price. i wonder if ica on the log derivatives would achieve this... obvious maybe, but worth noting so i don't forget.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5764516341419998373?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5764516341419998373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5764516341419998373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5764516341419998373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5764516341419998373'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/stock-index-futures-and-price.html' title='stock index futures and price forecasting'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1457396973342865908</id><published>2010-07-14T02:02:00.001-07:00</published><updated>2010-07-14T02:02:17.930-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>more python libs</title><content type='html'>rthread exposes a threading interface on remote processes, if you are into that kind of thing. \&lt;br /&gt;\&lt;br /&gt;struct (standard library) interprets a string as a c structure.\&lt;br /&gt;\&lt;br /&gt;timeit (standard library) for quick and dirty timing of a command string, like the ipython magic and tic,toc in matlab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1457396973342865908?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1457396973342865908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1457396973342865908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1457396973342865908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1457396973342865908'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/more-python-libs.html' title='more python libs'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6113251442787342591</id><published>2010-07-13T04:54:00.001-07:00</published><updated>2010-07-13T04:54:01.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python from excel</title><content type='html'>xlrd, xlwt, and xlutils are fine for accessing excel files from python, but what about accessing python from excel (like calling out to vba hooks to define user functions)? pyxll seems to do what i would want (even claims numpy, ctypes, and cython support!), but the license seems very restrictive. if there is nothing better, it is probably the way to go. i might also check out the ironpython hook (http://www.ironpython.info/index.php/Interacting_with_Excel) and discoveryscript (http://www.xefion.com/discoveryscript.html). discoveryscript is free, but i think its license will also restrict redistribution (and the other products on the website are in the $500/licence range), so that might be problematic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6113251442787342591?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6113251442787342591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6113251442787342591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6113251442787342591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6113251442787342591'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/python-from-excel.html' title='python from excel'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-9010136496944965717</id><published>2010-07-05T04:22:00.001-07:00</published><updated>2011-01-31T04:12:13.361-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>clyther</title><content type='html'>&lt;a href="http://clyther.sourceforge.net/"&gt;tool&lt;/a&gt; for generating opencl code directly from python, as an alternative to cuda and pycuda. might be a little alpha at the moment, but i should keep tabs....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-9010136496944965717?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/9010136496944965717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=9010136496944965717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9010136496944965717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9010136496944965717'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/cylther.html' title='clyther'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-9108767861246309473</id><published>2010-07-05T03:47:00.001-07:00</published><updated>2010-07-05T03:47:27.382-07:00</updated><title type='text'>ubuntu one</title><content type='html'>can't believe i haven't signed up for this yet. is there any downside? i guess i could use cryptoloop on all my machines that link to it if i'm paranoid about privacy. but that would prevent me from accessing files on the web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-9108767861246309473?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/9108767861246309473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=9108767861246309473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9108767861246309473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9108767861246309473'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/ubuntu-one.html' title='ubuntu one'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2398116544846688065</id><published>2010-07-05T03:42:00.001-07:00</published><updated>2010-07-05T03:42:32.981-07:00</updated><title type='text'>googlecl</title><content type='html'>google released command-line access. now i can post (like this one) from my tilda window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2398116544846688065?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2398116544846688065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2398116544846688065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2398116544846688065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2398116544846688065'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/googlecl.html' title='googlecl'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6623135394737324945</id><published>2010-07-02T07:23:00.001-07:00</published><updated>2010-07-02T07:24:26.172-07:00</updated><title type='text'>tripadvisor for cheap hotels</title><content type='html'>tripadvisor.co.uk has a nice feature -- it searches a number of other sites for cheap rates on the same hotel. helps prevent non-refundable clicker's remorse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6623135394737324945?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6623135394737324945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6623135394737324945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6623135394737324945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6623135394737324945'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/tripadvisor-for-cheap-hotels.html' title='tripadvisor for cheap hotels'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1564416735181975758</id><published>2010-07-02T06:52:00.001-07:00</published><updated>2010-07-02T07:14:40.478-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>coroutines in python</title><content type='html'>wow, am i behind the times or what? i didn't realize python 2.5 added real coroutine support by making yield an expression. now i can call the send method on a generator and it will pop in as the evaluated result of the yield.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;also the webbrowser module can pop up a browser window (or tab). handy for showing docs.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i'd only just started using with. i need to stay up to speed on these things.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1564416735181975758?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1564416735181975758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1564416735181975758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1564416735181975758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1564416735181975758'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/coroutines-in-python.html' title='coroutines in python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-9096324275468301177</id><published>2010-07-02T06:22:00.001-07:00</published><updated>2011-05-07T03:36:38.194-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>test coverage in python</title><content type='html'>i think it's about time for me to abandon the half-home-baked test coverage tool i have been using in favor of coverage.py by ned batchelder. nice html reports (easy to lauch view, now that i have google-chrome) and i'm already using html reports generated by cython -a.&lt;br /&gt;&lt;br /&gt;another possibility is &lt;a href="http://pypi.python.org/pypi/canopy/0.0dev"&gt;canopy &lt;/a&gt;and &lt;a href="http://pypi.python.org/pypi/instrumental"&gt;instrumental&lt;/a&gt;. uses ast tools to analyse code; maybe useful for other things, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-9096324275468301177?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/9096324275468301177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=9096324275468301177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9096324275468301177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/9096324275468301177'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/test-coverage-in-python.html' title='test coverage in python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7867181660090911874</id><published>2010-07-02T03:44:00.000-07:00</published><updated>2010-07-02T03:46:02.409-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>tahoe-lafs</title><content type='html'>decentralized secure &lt;a href="http://allmydata.org/trac/tahoe-lafs"&gt;data store&lt;/a&gt;. if i ever need cloud storage, this might be a good alternative to cryptoloop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7867181660090911874?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7867181660090911874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7867181660090911874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7867181660090911874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7867181660090911874'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/tahoe-lafs.html' title='tahoe-lafs'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8032287357729474092</id><published>2010-07-01T07:42:00.000-07:00</published><updated>2010-07-02T01:30:24.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>3d pdf animation</title><content type='html'>was looking into adding animation to my 3d pdf objects again. it's really hard to find any useful info on the newer prc format (the best i could find was a low level adobe tech support guy whining about the iso application taking a long time). u3d has at least some skin and bone based animation, beyond the rigid body + scale part-level animation that is useless to me (every reference to key frame animation, afaik, refers to this). but i'm not sure if acrobat or the adobe reader support that part of the u3d ecma standard. this page (&lt;a href="http://webcache.googleusercontent.com/search?q=cache:NqASMpBE8VcJ:www.righthemisphere.com/support/kb/index.php%3Faction%3Darticle%26id%3D1141+u3d+bone+pdf&amp;amp;cd=7&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=uk"&gt;google cache&lt;/a&gt;) from right hemisphere seems to say that it doesn't, but that might refer just to their deep exploration code. at any rate, i think they were one of the founding parties to the standard, so it's not promising if they never bothered. somewhere i found an unreferenced statement that everything supports ecma 1st edition, but acroread 7 doesn't support ecma 3rd edition.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;however, t&lt;span&gt;&lt;span&gt;he &lt;a href="http://www.adobe.com/devnet/acrobat/javascript3d.html"&gt;JavaScript for Acrobat 3D Annotations API Reference doc&lt;/a&gt; on the adobe website describes a Bone object and specifically says it 'is usually moved over time to create animated characters.' Mesh objects contain geometry, but nothing in the api doc looks like it could be actual vertex positions, unless they're lurking in the Node.metadataString. i can find no additional info on Bone.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;the U3D Supported Elements doc from the &lt;a href="http://www.adobe.com/devnet/acrobat3d/"&gt;3d dev center&lt;/a&gt; states that skeleton descriptions are 'parsed and unused (that is, no skeletal animation, skinning, or bones)'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;also, opacity and material color animation are not supported, and i'm pretty sure that's a basic u3d limitation.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;it's hard to find much info about the newer &lt;a href="http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/API_References/PRCReference/PRC_Format_Specification/"&gt;prc format&lt;/a&gt;. i don't see anything in the adobe spec docs that obviously provides for it (though not much anything obvious in the specs... quite sparse). i think the best i can do right now is look at the asymptote code (there was a passing reference to animating the prc in one of their journal articles as a todo item; alas, the only animation they show in that article is an ordinary movie). rumor has it that adobe turned the prc implementation over to a third party, bailing again on a drive into the 3d market, so i'm not sure prc has a future any brighter than u3d, which they have said (fwiw) they will always support.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;so the only way out i can see right now is to create multiple meshes, one for each time step, and use javascript to cycle the visibility toggles. i guess the only real wasted space comes from the redundant connectivity, and that might be manageable if i continue to use only the exterior surfaces. and it would allow me to circumvent the u3d material color animation limitation. a rough estimate is 6.5 bytes/exterior node for u3d file size. actually, maybe that's not too bad... a 5 second, 20 fps animation with 8000 exterior nodes would fit in under 5MB. not too big for a short report or presentation. (maybe ~10 fps is a more realistic limit on what acroread can achieve.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a little playing around with the quality options: diffuse color quality moved down from 300 to 100, -dcq 100, make practically no difference in file size. specular color quality, -spq 100, and animation quality 1000 -&gt; 100, -aq 100, made zero difference since i'm not using either. geometry default quality down from 300 to 100, -gq 100, makes no difference, as does texture quality 75 -&gt; 50, -tq 50. texture coordinate quality 300 to 100, -tcq 100, and normal quality 300 to 100, -nq 100, make zero difference. the one thing that does change the file size significantly is position quality. i had been using -pq 500, and -pq 100 decreases the size by about 7-8%. and maybe decreasing the palette from 256 to, say, 16 colors would help, though it would surely be less than a 10% difference. so i don't think there's any way i could squeeze it down more than 20-25%.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8032287357729474092?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8032287357729474092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8032287357729474092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8032287357729474092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8032287357729474092'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/3d-pdf-animation.html' title='3d pdf animation'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2970197633632814115</id><published>2010-07-01T01:30:00.000-07:00</published><updated>2010-07-01T01:38:15.518-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>pypy 1.3</title><content type='html'>pypy now has stackless, jit, sandbox, and low-memory versions out in 1.3. and support for c extension modules is coming along. and, as part of one of this year's gsoc projects, they are working on adding numpy to pypy. cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2970197633632814115?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2970197633632814115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2970197633632814115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2970197633632814115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2970197633632814115'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/07/pypy-13.html' title='pypy 1.3'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1339997982693400494</id><published>2010-06-29T09:22:00.000-07:00</published><updated>2010-06-29T09:23:29.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>another python debugger</title><content type='html'>pudb. text-based but looks easy to use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1339997982693400494?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1339997982693400494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1339997982693400494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1339997982693400494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1339997982693400494'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/another-python-debugger.html' title='another python debugger'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3285303050725574626</id><published>2010-06-29T08:54:00.000-07:00</published><updated>2010-06-29T08:56:29.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>a bit less temporary /tmp</title><content type='html'>hat-tip to pycuda, i got my ubuntu machine to relax about wiping my temp dir on every reboot: &lt;div&gt;&lt;p class="line862" style="font-family: sans-serif; "&gt;On Debian (and possibly Ubuntu?), edit the file &lt;tt class="backtick"&gt;/etc/default/rcS&lt;/tt&gt; and change&lt;span class="anchor" id="line-206"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-207"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="line867" style="font-family: sans-serif; "&gt;&lt;span class="anchor" id="line-208"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-209"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; "&gt;&lt;pre style="border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(174, 189, 204); border-right-color: rgb(174, 189, 204); border-bottom-color: rgb(174, 189, 204); border-left-color: rgb(174, 189, 204); background-color: rgb(243, 245, 247); padding-top: 5pt; padding-right: 5pt; padding-bottom: 5pt; padding-left: 5pt; font-family: courier, monospace; white-space: pre-wrap; word-wrap: break-word; "&gt;&lt;span class="anchor" id="line-1-7"&gt;&lt;/span&gt;TMPTIME=0&lt;/pre&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; "&gt;&lt;span class="anchor" id="line-210"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; "&gt;&lt;span class="anchor" id="line-211"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p class="line874" style="font-family: sans-serif; "&gt;to the number of days that you'd like to keep files in /tmp around. "30" works for me.&lt;/p&gt;&lt;p class="line874" style="font-family: sans-serif; "&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;now i won't be so paranoid about installing kernel updates right away.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3285303050725574626?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3285303050725574626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3285303050725574626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3285303050725574626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3285303050725574626'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/bit-less-temporary-tmp.html' title='a bit less temporary /tmp'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-379555309069825077</id><published>2010-06-29T08:10:00.000-07:00</published><updated>2010-07-01T10:08:36.035-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>gpu programming with python</title><content type='html'>&lt;a href="http://www.deeplearning.net/software/theano/"&gt;theano&lt;/a&gt; seems to have an advanced api, but it might be too advanced since it uses its own optimization and other magic goodies, and it seems so focused on its own objects that it's like a metaprogramming language. still, dangerously interesting. uses cuda, so nvidia only. here's some free advice from their tutorial:&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Only computations with float32 data-type can be accelerated. Better support for float64 is expected in upcoming hardware but float64 computations are still relatively slow (Jan 2010).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matrix multiplication, convolution, and large element-wise operations can be accelerated a lot (5-50x) when arguments are large enough to keep 30 processors busy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Indexing, dimension-shuffling and constant-time reshaping will be equally fast on GPU as on CPU.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Summation over rows/columns of tensors can be a little slower on the GPU than on the CPU&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Copying of large quantities of data to and from a device is relatively slow, and often cancels most of the advantage of one or two accelerated functions on that data. Getting GPU performance largely hinges on making data transfer to the device pay off.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;the same website has a link to &lt;a href="http://code.google.com/p/cudamat/"&gt;cudamat&lt;/a&gt;, which might be a more cooperative if lower-level way to go. target seems to be basic matrix and element-wise ops. actively developed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pystream was developed as another cuda wrapper until about mid 2008, then abandoned when the company went off to develop gpulib, a cuda api for idl and (?) matlab. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://mathema.tician.de/software/pycuda"&gt;pycuda&lt;/a&gt; handles the background stuff, but you still have to feed it c code (though there are tools for run-time code generation). looks like it's actively developed, though, with an impressive list of users, and like the others it does play nicely with numpy arrays. i think this is the place to start.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/"&gt;pygpu&lt;/a&gt; uses pycg and pyglew to generate cg code directly from python. so you write python and it will run on nvidia or ati hardware, under both linux and windows. unfortunately, neither the homepage nor the &lt;a href="http://code.google.com/p/pygpu/"&gt;google code&lt;/a&gt; page show any signs of activity in the last few years. pycg (developed by the same guy) seems to have trickled off in late 2007, though ubuntu packages were uploaded to launchpad just a year ago. too bad, this looked like it might have been a good one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;the gpu stuff on scikits oddly seems intended for actual graphics stuff.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pyopencl ? here's a &lt;a href="http://wiki.tiker.net/CudaVsOpenCL"&gt;faq page&lt;/a&gt; contrasting cuda and opencl.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://kered.org/blog/2009-04-13/easy-python-numpy-cuda-cublas/"&gt;pycublas&lt;/a&gt; maybe just does matrix mult.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-379555309069825077?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/379555309069825077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=379555309069825077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/379555309069825077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/379555309069825077'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/gpu-programming-with-python.html' title='gpu programming with python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6538693415662273931</id><published>2010-06-29T01:54:00.000-07:00</published><updated>2010-06-29T02:54:26.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>bond spread data</title><content type='html'>fred (research.stlouisfed.org) has a lot of economic indicator historical data, including moody's bond yields, but only for aaa and baa. i'd like to find something for more junky bonds....&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;moodys.com certainly would have these data, along with others i'd like to see. but registration is required and i don't know if that stuff is available for free.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6538693415662273931?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6538693415662273931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6538693415662273931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6538693415662273931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6538693415662273931'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/bond-spread-data.html' title='bond spread data'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4671272785705567329</id><published>2010-06-28T09:13:00.000-07:00</published><updated>2010-06-28T09:14:38.211-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>Best Practices in Estimating the Cost of Capital: Survey and Synthesis</title><content type='html'>&lt;div&gt;Robert F. Bruner, Kenneth M. Eades, Robert S. Harris, and Robert C. Higgins&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;nice peek at the popularity of various financial analysis techniques. just a bit dated now, as it came out in 1998, but still worth a look.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4671272785705567329?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4671272785705567329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4671272785705567329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4671272785705567329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4671272785705567329'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/best-practices-in-estimating-cost-of.html' title='Best Practices in Estimating the Cost of Capital: Survey and Synthesis'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6160899943224626588</id><published>2010-06-28T02:29:00.000-07:00</published><updated>2010-06-28T02:31:56.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>tea party != conservative populism</title><content type='html'>jeffrey friedman makes some &lt;a href="http://article.nationalreview.com/436554/its-complicated/jeffrey-friedman"&gt;good points&lt;/a&gt; about why the tea party leaders should not assume (or maybe even aim for) a conservative populism. here's the most sobering stat for me: &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman', serif; line-height: 24px; "&gt; An April Rasmussen survey found that only 60 percent of Americans now believe that capitalism is better than socialism. Among those under 30, socialism and capitalism are nearly tied at 33 percent and 37 percent.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6160899943224626588?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6160899943224626588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6160899943224626588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6160899943224626588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6160899943224626588'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/tea-party-conservative-populism.html' title='tea party != conservative populism'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7842540657607456264</id><published>2010-06-28T02:24:00.000-07:00</published><updated>2010-06-28T02:27:10.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>oil spill -&gt; green pork</title><content type='html'>&lt;a href="http://article.nationalreview.com/436654/barack-obama-dreamer-in-chief/charles-krauthammer"&gt;charles krauthammer&lt;/a&gt; lets fly a critique of obama's face-the-nation. seems a bit harsh for ck, but he does an effective job of deconstructing the basic argument.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7842540657607456264?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7842540657607456264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7842540657607456264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7842540657607456264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7842540657607456264'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/oil-spill-green-pork.html' title='oil spill -&gt; green pork'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-7618191071736009013</id><published>2010-06-28T02:19:00.000-07:00</published><updated>2010-06-28T02:21:02.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>obama vs. science</title><content type='html'>jonah goldberg makes an i&lt;a href="http://article.nationalreview.com/436660/he-blinded-me-with-science/jonah-goldberg"&gt;nteresting connection&lt;/a&gt; between the anti-science claims against bush and the drilling moratorium. a minor point, perhaps, but one to put on the record.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-7618191071736009013?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/7618191071736009013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=7618191071736009013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7618191071736009013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/7618191071736009013'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/obama-vs-science.html' title='obama vs. science'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8408393460287288194</id><published>2010-06-28T02:05:00.000-07:00</published><updated>2010-08-27T09:53:29.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>portfolioscience</title><content type='html'>&lt;a href="http://www.portfolioscience.com/home/index.htm?gclid=CL3f8v-mu6ICFVGX2AodCl1X6g"&gt;here's a company&lt;/a&gt; that sells software for portfolio optimization and risk analysis. maybe i should fill out their form and check out the demo some time, just to see how they do it and which metrics seem to be featured. in particular i'm curious about the riskapi efficient frontier optimizer.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.aorda.com/aod/welcome.action"&gt;aorda&lt;/a&gt; is another one, started circa 2006 by a ufl prof who was one of the early proponents of cvar. free download for crippleware, but have to register first. pay versions are very highly priced: commercial license is $10k/year.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8408393460287288194?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8408393460287288194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8408393460287288194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8408393460287288194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8408393460287288194'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/portfolioscience.html' title='portfolioscience'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6703057578922304545</id><published>2010-06-28T01:55:00.000-07:00</published><updated>2010-06-28T01:58:07.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>why defend bp?</title><content type='html'>why are some on the right defending bp? rich lowry has a &lt;a href="http://article.nationalreview.com/436880/the-bp-racket/rich-lowry"&gt;great editorial&lt;/a&gt; up on nro making the point that we don't have a dog is this fight while some republicans are determined to get bitten.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6703057578922304545?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6703057578922304545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6703057578922304545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6703057578922304545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6703057578922304545'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/why-defend-bp.html' title='why defend bp?'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3590074526186549763</id><published>2010-06-23T02:50:00.000-07:00</published><updated>2010-07-19T08:58:16.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opencourseware'/><title type='text'>15.535</title><content type='html'>&lt;div&gt;looking at the assignments and exams, i think i understand the concepts just fine, although the intricacies of interpreting how management might be manipulating their accounting numbers are not easy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2&lt;/div&gt;&lt;div&gt;http://mit.edu/wysockip/www  has useful stuff but doesn't have all the stuff from class anymore&lt;/div&gt;&lt;div&gt;peg ratios, often cited&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; 3&lt;/div&gt;&lt;div&gt;cash flows over firm's life cycle&lt;/div&gt;&lt;div&gt;trend analysis: cfo vs ebx&lt;/div&gt;&lt;div&gt;red flags: growing discrepancy between net income and cash flows&lt;/div&gt;&lt;div&gt;undervalued liabilities, overcapitalization&lt;/div&gt;&lt;div&gt;investment activity&lt;/div&gt;&lt;div&gt;key: proceeds from exercise of stock options. good?&lt;/div&gt;&lt;div&gt;firm type: growth options vs assests in place&lt;/div&gt;&lt;div&gt;    tech, growth: not much depreciation, financing primarily related to equity&lt;/div&gt;&lt;div&gt;    airlines: cfo large compared to net income, even in loss years; large depreciation, investing; debt financing&lt;/div&gt;&lt;div&gt;    retailers: walmart has large difference between cfo and net income&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4&lt;/div&gt;&lt;div&gt;problems with residual income valuation&lt;/div&gt;&lt;div&gt;p/e or m/b with real options?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5&lt;/div&gt;&lt;div&gt;abnormal earnings with dcf (discrete cash flows)&lt;/div&gt;&lt;div&gt;what do analysts use? refs asquith et al., 2001&lt;/div&gt;&lt;div&gt;earnings multiple    99%&lt;/div&gt;&lt;div&gt;p/e                             97&lt;/div&gt;&lt;div&gt;relative p/e              35&lt;/div&gt;&lt;div&gt;revenue multiple    15&lt;/div&gt;&lt;div&gt;price-to-book          25&lt;/div&gt;&lt;div&gt;cf multiple                13&lt;/div&gt;&lt;div&gt;dcf                              13&lt;/div&gt;&lt;div&gt;eva                              2&lt;/div&gt;&lt;div&gt;'model'                       4&lt;/div&gt;&lt;div&gt;estimate price multiples for comparable firms avg/median/etc. why not use distro?&lt;/div&gt;&lt;div&gt;if current earnings are not good prediction for future: forward p/e or pro forma earnings (remove non-recurring) or price to operating cash flow&lt;/div&gt;&lt;div&gt;other p/e: peg, p/cf, levered, (debt+equity)/ebitda&lt;/div&gt;&lt;div&gt;m/b market to book&lt;/div&gt;&lt;div&gt;stock screener links&lt;/div&gt;&lt;div&gt;profitability: roa (return on assets)&lt;/div&gt;&lt;div&gt;roa decomposed into profit margin and asset turnover&lt;/div&gt;&lt;div&gt;roe (return on common equity)&lt;/div&gt;&lt;div&gt;roe decomposed into profit margin, turnover, leverage&lt;/div&gt;&lt;div&gt;short term liquidity&lt;/div&gt;&lt;div&gt;    current ratio = current assets/current liabilities: short-term debt paying ability&lt;/div&gt;&lt;div&gt;    quick ratio = (current assets-inventory)/current liabilities: acid test ratio&lt;/div&gt;&lt;div&gt;long-term solvency&lt;/div&gt;&lt;div&gt;    long term debt ratio = long term debt/(long term debt+shareholder's equity)&lt;/div&gt;&lt;div&gt;    d/e = long term debt/shareholders' equity&lt;/div&gt;&lt;div&gt;    total liabilities/total assets&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;7&lt;div&gt;forecast eps goes down the last 6 months before release due to expectations management&lt;div&gt;&lt;br /&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;detecting earnings management&lt;/div&gt;&lt;div&gt;ratio of volatility (stddev/mean) of accrual income measures to underlying volatility of sales and cfo&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;12&lt;/div&gt;&lt;div&gt;risk assessment&lt;/div&gt;&lt;div&gt;turnover: accounts receivable turnover, inventory turnover, fixed asset turnover, accounts payable turnover, days payable outstanding&lt;/div&gt;&lt;div&gt;short-term liquidity: current ratio, quick ratio (acid test), operating cash flow to current liabilities&lt;/div&gt;&lt;div&gt;long-term solvency (maybe a good way to value bonds?): debt/equity, long-term debt ratio (simple function of d/e), liabilities/assets&lt;/div&gt;&lt;div&gt;interest coverage ratio, in terms of both income and expenses or cash flow&lt;/div&gt;&lt;div&gt;refs modigliani-miller theorem without explaining: debt and equity financing are equivalent&lt;/div&gt;&lt;div&gt;absolute metrics: interest coverage, current ratio&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;13&lt;/div&gt;&lt;div&gt;cost of capital&lt;/div&gt;&lt;div&gt;equity cost of capital (discount rate)&lt;/div&gt;&lt;div&gt;    capm: estimate beta (key issue) period typically 5 years; bloomberg, analysts, yahoo finance, etc&lt;/div&gt;&lt;div&gt;    http://research.stlouisfed.org/fred/data/irates.html for risk-free rate and other data&lt;/div&gt;&lt;div&gt;    fama-french 3-factor model extends capm with size, b/m (higher b/m-&gt;higher returns)&lt;/div&gt;&lt;div&gt;        http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html  for rates, other data&lt;/div&gt;&lt;div&gt;    long run averages: r_m-r_f (market-riskfree) 7.95% per year, r_smb (size premium) 3.32%, r_hml 5.05%&lt;/div&gt;&lt;div&gt;international&lt;/div&gt;&lt;div&gt;    segmented/integrated capm: bekaert and harvey 1995&lt;/div&gt;&lt;div&gt;    world capm holds if country stock market is integrated: http://www.msci.com/equity/index.html&lt;/div&gt;&lt;div&gt;    ow, use r_country&lt;/div&gt;&lt;div&gt;    'institutional investor' magazine ranks country credit risk 0-100&lt;/div&gt;&lt;div&gt;    impressive fit to data: r_country = alpha + beta*rank&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;15&lt;/div&gt;&lt;div&gt;expected return depends on systematic risk&lt;/div&gt;&lt;div&gt;alpha = abnormal return = actual return - capm, for example&lt;/div&gt;&lt;div&gt;multiples valuation key assumption: earnings and book equity are comparable&lt;/div&gt;&lt;div&gt;drift strategies&lt;/div&gt;&lt;div&gt;    returns over last 6-12 months predict next 6-12 months&lt;/div&gt;&lt;div&gt;    post earnings announcement drift from under-reaction to news&lt;/div&gt;&lt;div&gt;red flag: again, gap between reported income and cfo&lt;/div&gt;&lt;div&gt;quality of earnings ratio: (earnings-cfo)/avg total assets&lt;/div&gt;&lt;div&gt;'widely accepted' evidence on fundamental trading strategies&lt;/div&gt;&lt;div&gt;    e/p, b/m, cf/p: high-&gt;high future abnormal stock returns&lt;/div&gt;&lt;div&gt;    var(cf)/p: high-&gt;low future abnormal stock returns&lt;/div&gt;&lt;div&gt;    v/p (firm value from abnormal earnings model/price): high-&gt;low returns&lt;/div&gt;&lt;div&gt;    short term reversal: high return this month-&gt;low next month&lt;/div&gt;&lt;div&gt;    medium term momentum: high return past 6-12 months-&gt;high return next 6-12&lt;/div&gt;&lt;div&gt;    accrual anomaly: high accounting accruals this quarter-&gt;low returns next quarter and beyond&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;16&lt;/div&gt;&lt;div&gt;bankruptcy detection&lt;/div&gt;&lt;div&gt;http://www.ibbotson.com/content/cc_1v11.asp  cost of capital:$15/beta&lt;/div&gt;&lt;div&gt;altman z-score fit from manufacturing firm data&lt;/div&gt;&lt;div&gt;    linear function of ratios&lt;/div&gt;&lt;div&gt;moody's, s&amp;amp;p use similar models to z-score to rate corp bonds&lt;/div&gt;&lt;div&gt;http://riskcalc.moodysrms.com/us/research/crm/45768.pdf&lt;/div&gt;&lt;div&gt;http://riskcalc.moodysrms.com/us/research/defrate.asp&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;17&lt;/div&gt;&lt;div&gt;mergers and acquisitions&lt;/div&gt;&lt;div&gt;'old' purchase method: goodwill asset created and amortized over 40 years&lt;/div&gt;&lt;div&gt;pooling of interests no longer permitted for valuing&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;18&lt;/div&gt;&lt;div&gt;employee stock options&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;20&lt;/div&gt;&lt;div&gt;off balance sheet activities&lt;/div&gt;&lt;div&gt;enron background&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;21&lt;/div&gt;&lt;div&gt;pension plans&lt;/div&gt;&lt;div&gt;defined benefit plans cause accounting problems&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;22&lt;/div&gt;&lt;div&gt;international financial analysis&lt;/div&gt;&lt;div&gt;insider (code law) codified system&lt;/div&gt;&lt;div&gt;    close interplay gov, banks, unions, big firms&lt;/div&gt;&lt;div&gt;    continental euro, japan&lt;/div&gt;&lt;div&gt;    less public disclosure&lt;/div&gt;&lt;div&gt;outsider (common law)&lt;/div&gt;&lt;div&gt;    us, uk, english-speaking&lt;/div&gt;&lt;div&gt;us vs uk differences&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;23&lt;/div&gt;&lt;div&gt;sarbanes-oxley and review&lt;/div&gt;&lt;div&gt;sarbox 2002&lt;/div&gt;&lt;div&gt;identify comparable firms &lt;/div&gt;&lt;div&gt;    multex (?) via yahoo for quick industry benchmarks&lt;/div&gt;&lt;div&gt;will change: accounting rules, tech, market integration, contracting methods&lt;/div&gt;&lt;div&gt;won't change: thought process, economics&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3590074526186549763?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3590074526186549763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3590074526186549763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3590074526186549763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3590074526186549763'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/15535.html' title='15.535'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-4314742623691690391</id><published>2010-06-23T02:46:00.000-07:00</published><updated>2010-06-23T02:50:22.599-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><title type='text'>guild wars</title><content type='html'>skills at the end of nightfall:&lt;div&gt;n: meekness, well of dark&lt;/div&gt;&lt;div&gt;p: harrier's toss, never surrender, stand your ground&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-4314742623691690391?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/4314742623691690391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=4314742623691690391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4314742623691690391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/4314742623691690391'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/guild-wars.html' title='guild wars'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-797042846206349150</id><published>2010-06-16T07:01:00.000-07:00</published><updated>2010-06-16T07:15:25.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>memory profiling with python</title><content type='html'>tough to find good memory profiling for python. heapy-pe and the other (didn't bother to remember the name; pysizer?) turned out to be no good to me with numpy arrays which (surprise!) tend to be the biggest data structures i deal with. here a couple of others to try some time:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://jam-bazaar.blogspot.com/2010/01/meliae-020.html"&gt;meliae&lt;/a&gt; is new and more cli-oriented, but looks easy enough to try (and script).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.aminus.net/wiki/Dowser"&gt;dowser&lt;/a&gt; spawned off of cherrypy, but i think it works for any python code with the web server as sort of a gui (i think unlike dozer, which targets wsgi apps. or maybe dozer is just a wsgi version of the 'gui'?).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;here's an &lt;a href="http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks"&gt;example&lt;/a&gt; of objgraph to analyse memory usage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i think these are more garbage collector approaches, rather than hook-and-trace, so maybe more likely to work with libs like numpy.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-797042846206349150?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/797042846206349150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=797042846206349150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/797042846206349150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/797042846206349150'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/memory-profiling-with-python.html' title='memory profiling with python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2211292720449488955</id><published>2010-06-15T08:10:00.000-07:00</published><updated>2010-06-15T08:17:00.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>r-cran-fimport</title><content type='html'>ubuntu has a &lt;a href="http://cran.r-project.org/web/packages/fImport/index.html"&gt;package&lt;/a&gt; for downloading free econometrics data: provides import function to access (free) data from Economagic, the US Federal Reserve, Forecasts.Org, Yahoo and other web sources. worth a look to see some sources that would be good to look at. the group of people who wrote this also have a&lt;a href="https://www.rmetrics.org/blog/RiskSurfaces"&gt; link &lt;/a&gt;to a brief discussion of portfolio risk surfaces over the convex hull of achievable sets. interesting... i was thinking something along the same lines, and it's a little gratifying that working pros seem already to be doing something similar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2211292720449488955?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2211292720449488955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2211292720449488955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2211292720449488955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2211292720449488955'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/r-cran-fimport.html' title='r-cran-fimport'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2427510912949638742</id><published>2010-06-15T06:21:00.001-07:00</published><updated>2010-06-15T07:38:34.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>__get__ method for fun and profit</title><content type='html'>just learned (or maybe relearned) &lt;a href="http://requires-thinking.blogspot.com/2008/08/this-is-python-dot-operator-and-magic.html"&gt;something cool about python&lt;/a&gt;: the __get__ special method gets called when an instance is accessed as an attribute of another instance. not only are there potential uses for this, it also holds the key to understanding the 'self' and 'class' special arg in methods. this is something that confused me a couple of times before, such as passing references to instance vs. class methods from outside the class to be used inside the instance.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;so, for example, i could allow instances of one of my classes to know how and where it's getting passed around, and something about the context when something is asked of it. maybe a quick and dirty memory leak tracker, when i know beforehand which objects are the big boys but i don't know who's pointing at them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;or maybe a little internal usage auditor, when i'm considering the impact of a refactor.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2427510912949638742?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2427510912949638742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2427510912949638742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2427510912949638742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2427510912949638742'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/get-method-for-fun-and-profit.html' title='__get__ method for fun and profit'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2643319958284157071</id><published>2010-06-14T03:14:00.000-07:00</published><updated>2010-06-29T01:54:17.546-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>valuation books</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px; font-size:x-small;"&gt;couple of books recommended by people in the valuation business. one comment about duffie is that he was kind of a disappointment as a consultant, since he likes to sta&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;y more in the theoretical than the practical. not sure if this is the best book from him, but it's fairly recent. (search for 'dynamic')&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;Investment valuation : tools and techniques for determining the value of any asset&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Damodaran, Aswath.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;interesting that he says most analysis/justification for valuation is on discounted cash flows (as it seems to be in the book), but most valuation in practice is with ratios in relative valuation. contingent claim valuation is a more recent perspective, looking at opportunities available to a firm and pricing them like options. i was disappointed at how little there is on bond and commodity valuation, especially given the promise in the subtitle. interesting chapter on evidence of market efficiency.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Credit risk : pricing, management and measurement&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Duffie, Darrell.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;financial statement analysis and security valuation, 3rd ed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;stephen h. penman&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;658.15&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;more on valuation, including slightly less than simple forecasting and detecting financial statement manipulation&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;dynamics of markets: econophysics and finance&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;joseph l. mccauley&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;658.15:519.217&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;empirical refutation of common modeling assumptions&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;value at risk: the new benchmark for managing financial risk, 3rd ed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;philippe jorion&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;658.155&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 10px; -webkit-border-vertical-spacing: 10px;"&gt;different types of risk, some 'industry-standard' real-life practical-experience rules of thumb&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2643319958284157071?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2643319958284157071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2643319958284157071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2643319958284157071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2643319958284157071'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/valuation-books.html' title='valuation books'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5569767613287876974</id><published>2010-06-08T05:44:00.000-07:00</published><updated>2010-06-10T06:45:25.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>mplayer dump</title><content type='html'>tried to record a lecture in realmedia format with mplayer, but it keeps dying in the middle. cache seems to help it get farther, but it still chokes. maybe i just need to give it a _big_ cache, or use the -cache-min &lt;percentage&gt; option:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;mplayer -audiofile-cache 8192 -cache 8192 -dumpstream -dumpfile out.rm rtsp://etc&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5569767613287876974?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5569767613287876974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5569767613287876974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5569767613287876974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5569767613287876974'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/mplayer-dump.html' title='mplayer dump'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8283027101369160769</id><published>2010-06-08T04:06:00.000-07:00</published><updated>2010-06-08T04:11:56.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>encrypted pdf files</title><content type='html'>managed to get a pdf file with restricted permissions using pdftk (pdf toolkit). the man page was a bit unclear on this, since if you just put in an owner password it will not actually restrict the file and no passwd is requested (or needed) to open it. this will do the trick, with all restrictions:&lt;div&gt;pdftk in.pdf output out.pdf user_pw foo&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;or, to make 2 levels of access:&lt;/div&gt;&lt;div&gt;pdftk in.pdf output out.pdf owner_pw baz user_pw foo&lt;/div&gt;&lt;div&gt;now the restrictions will be in place if you put in foo as the passwd, but they will not if you put in baz.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8283027101369160769?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8283027101369160769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8283027101369160769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8283027101369160769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8283027101369160769'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/encrypted-pdf-files.html' title='encrypted pdf files'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-5949719870462262229</id><published>2010-06-08T03:33:00.000-07:00</published><updated>2010-06-08T03:45:28.984-07:00</updated><title type='text'>redirecting stdin, stdout, stderr from python</title><content type='html'>saw a &lt;a href="http://code.activestate.com/recipes/66012-fork-a-daemon-process-on-unix/#c4"&gt;nice comment&lt;/a&gt; in a post on python daemon forks that explains how to redirect std* pipes, even when they are accessed from c. i've been frustrated trying to figure that out before.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; color: rgb(51, 51, 51); font-size: 14px; line-height: 19px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong&gt;More reliable i/o stream redirection.&lt;/strong&gt; Just reassigning to the sys streams is not 100% effective if you are importing modules that write to stdin and stdout from C code. Perhaps the modules shouldn't do that, but this code will make sure that all stdin and stdout will go where you expect it to.&lt;/p&gt;&lt;pre class="prettyprint" style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.75em; padding-right: 0.75em; padding-bottom: 0.75em; padding-left: 0.75em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 9pt; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(241, 241, 241); font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;code style="font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; font-size: 9pt; background-color: rgb(241, 241, 241); border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-color: initial; "&gt;&lt;span class="kwd" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 136); background-position: initial initial; background-repeat: initial initial; "&gt;import&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; os&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;,&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; sys&lt;br /&gt;&lt;br /&gt;out_log &lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;=&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; file&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'/out/log/file/name'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;,&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'a+'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;)&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;br /&gt;err_log &lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;=&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; file&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'/err/log/file/name'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;,&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'a+'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;,&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/span&gt;&lt;span class="lit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 102, 102); background-position: initial initial; background-repeat: initial initial; "&gt;0&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;)&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;br /&gt;dev_null &lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;=&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; file&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'/dev/null'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;,&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; &lt;/span&gt;&lt;span class="str" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 136, 0); background-position: initial initial; background-repeat: initial initial; "&gt;'r'&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;)&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); "&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;sys&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;stdout&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;flush&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="prettyprint" style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.75em; padding-right: 0.75em; padding-bottom: 0.75em; padding-left: 0.75em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 9pt; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(241, 241, 241); font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;code style="font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; font-size: 9pt; background-color: rgb(241, 241, 241); border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-color: initial; "&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); "&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;sys&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;stderr&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;flush&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;()&lt;/span&gt;&lt;/pre&gt;&lt;pre class="prettyprint" style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.75em; padding-right: 0.75em; padding-bottom: 0.75em; padding-left: 0.75em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 9pt; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(241, 241, 241); font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;os&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;dup2&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;out_log&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(),&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; sys&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;stdout&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;())&lt;/span&gt;&lt;/pre&gt;&lt;pre class="prettyprint" style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.75em; padding-right: 0.75em; padding-bottom: 0.75em; padding-left: 0.75em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 9pt; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(241, 241, 241); font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;code style="font-family: Consolas, Monaco, 'Lucida Console', 'Courier New', monospace; font-size: 9pt; background-color: rgb(241, 241, 241); border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: rgb(222, 222, 222); border-right-color: rgb(222, 222, 222); border-bottom-color: rgb(222, 222, 222); border-left-color: rgb(222, 222, 222); color: rgb(68, 68, 68); padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-color: initial; "&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;os&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;dup2&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;err_log&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(),&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; sys&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;stderr&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;())&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;br /&gt;os&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;dup2&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;dev_null&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;(),&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt; sys&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;stdin&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;.&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;fileno&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 12px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(102, 102, 0); background-position: initial initial; background-repeat: initial initial; "&gt;())&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;(and another poster suggests closing sys.std* before duping.) cool. i need to remember this next time i wrap somebody's code that thinks it's a good idea to barf on the terminal without a --quiet option.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;also, the demon implementation looks pretty clean, with extra tidbits sprinkled into the comments, and the author explains the reasons for doing things. i don't think i will need the double fork for my udev script, but the first fork will be necessary.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-5949719870462262229?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/5949719870462262229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=5949719870462262229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5949719870462262229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/5949719870462262229'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/redirecting-stdin-stdout-stderr-from.html' title='redirecting stdin, stdout, stderr from python'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1443212812319988161</id><published>2010-06-08T02:40:00.001-07:00</published><updated>2010-06-08T02:50:12.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>printing presentations from evince</title><content type='html'>sometimes i need to print presentation slides with just big text, and i want to do it n-up so it doesn't waste paper. i've found that the best way to do it with evince is to set 'layout' to two-sided: long edge (standard), pages per side: 6, page ordering: left to right, top to bottom, and 'paper' orientation: landscape. 12 slides per sheet and still very readable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;also, it often helps to concatenate pdfs together so the nup has multiple presentations without a page break:&lt;/div&gt;&lt;div&gt;pdftk in1.pdf in2.pdf in3.pdf cat output out.pdf&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1443212812319988161?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1443212812319988161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1443212812319988161' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1443212812319988161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1443212812319988161'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/printing-presentations-from-evince.html' title='printing presentations from evince'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3122243994791426897</id><published>2010-06-07T08:57:00.000-07:00</published><updated>2010-06-08T02:26:57.864-07:00</updated><title type='text'>ocw</title><content type='html'>mit's &lt;a href="http://ocw.mit.edu/courses/#sloan-school-of-management"&gt;opencourseware&lt;/a&gt; has quite a few classes up from course 15 (sloan school of management). worth a look.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;15.010, maybe 15.060, 15.062, maybe 15.063, maybe 15.223/15.224, 15.351, 15.352, 15.356, 15.358, 15.369, maybe 15.391, 15.394, 15.402, 15.414, 15.431, 15.433, 15.616, 15.617, 15.628, 15.963, and 15.997 look interesting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;15.501, 15.511, 15.514, 15.515, 15.516, 15.518, 15.521, and 15.535 look like particularly interesting classes on finance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i should also peek at 15.070, 15.075, 15.081, 15.084J, 15.085J, 15.093, 15.094J, 15.098,15.099,  just to make sure i haven't missed any of the math there.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3122243994791426897?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3122243994791426897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3122243994791426897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3122243994791426897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3122243994791426897'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/ocw.html' title='ocw'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-1763220106911943084</id><published>2010-06-04T02:09:00.000-07:00</published><updated>2010-06-08T02:10:36.548-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>udev rules</title><content type='html'>finally got a udev rule in /etc/udev/rules.d/ so it will run my script on a hotplug event. first i had to run udevadm info --attribute-walk --name /dev/sdc1 to dump out a list of potential attributes to search. since this spits out info on the whole device chain, i found out that the section to look at was /devices/pci0000:00/0000:00:1d.7/usb1/1-7/1-7:1.0 (i tried matching on a lower level, but my script was executed twice with different env vars.) then i put a rule line into /etc/udev/rules.d/91-myhotplug.rules (91 because i want it to run after everything else) like this:&lt;div&gt;&lt;div&gt;ACTION=="add", SUBSYSTEM=="usb", ATTRS{modalias}=="usb:v0...50", RUN+="/home/user/svn/bin/hotplugscript"&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;had to put in a sleep 6 before doing anything in the newly mounted fs because it seems to take about 5 s to settle down. (probably should loop-and-test in production-level code.) oh, and one other handy thing i googled up: use blockdev --flushbufs /dev/sdc1, for example, to flush one block device. sync just flushes them all. i have the whole bash script in brackets with a trailing &amp;amp; to make it fork off and return immediately; that's important because otherwise i found it hangs or dies at the sleep and nothing after that gets executed. and i did find that a umount after business is done in the udev script causes no problems.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-1763220106911943084?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/1763220106911943084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=1763220106911943084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1763220106911943084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/1763220106911943084'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/udev-rules.html' title='udev rules'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-8523613537862398661</id><published>2010-06-03T07:53:00.001-07:00</published><updated>2010-06-10T04:19:48.976-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>financial accounting info on google finance</title><content type='html'>&lt;div&gt;google finance has easy access to the balance sheet, cash flow statement, and income statement of publicly traded companies for the last 5 quarters and 4 years, ready to scrape from an html table in a standard format, all in one page. for example, all this info for cisco is at&lt;/div&gt;http://www.google.com/finance?q=NYSE:C&amp;amp;fstype=ii&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;probably would be a bit more reliable if there were one place i could grab xbrl files, but right now i can only find links to individual companies' websites. not very scriptable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;also, the summary page (eg, &lt;a href="http://www.google.com/finance?q=NYSE:C"&gt;http://www.google.com/finance?q=NYSE:C&lt;/a&gt;) has a 'key stats and ratios' sidebar. i wonder if any of these are really metrics that the pros use. yahoo has insider and institutional trades at &lt;a href="http://finance.yahoo.com/q/it?s=C"&gt;http://finance.yahoo.com/q/it?s=C&lt;/a&gt; although dailyfinance shows total holdings for insider trading at &lt;a href="http://www.dailyfinance.com/company/citigroup-incorporated/c/nys/insider-transactions"&gt;http://www.dailyfinance.com/company/citigroup-incorporated/c/nys/insider-transactions&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;yahoo has convenient pages for analyst estimates, showing average, high, and low earnings estimates from a number of analysts for current and next quarters and years; estimate and actual eps histories; eps estimate recent revisions; and estimates for revenue and growth for the company, industry, sector, and s&amp;amp;p 500 for comparison. for example, dell's page is at &lt;a href="http://finance.yahoo.com/q/ae?s=dell"&gt;http://finance.yahoo.com/q/ae?s=dell&lt;/a&gt; pretty good start for fundamentals valuation. the analyst opinion page at &lt;a href="http://finance.yahoo.com/q/ao?s=DELL+Analyst+Opinion"&gt;http://finance.yahoo.com/q/ao?s=DELL&lt;/a&gt; also has price targets and quantitative recommendation poll numbers (in the chart near the bottom; i think the 'mean recommendation' listed above is is basically the dot product of the votes in each category with the arange(0,5) divided by the total votes). not sure i would completely base my decision making on free advice, but it could be worthwhile for a sanity check right before clicking the 'trade' button. looks like it only has these analyst opinions for individual companies; no etfs, etc. but the etfs have holdings info, so i could go from there to get some projections on stocks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;now i need good ways to project near/medium term trends in the bonds, precious metals, commodities, and fx markets.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-8523613537862398661?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/8523613537862398661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=8523613537862398661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8523613537862398661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/8523613537862398661'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/financial-accounting-info-on-google.html' title='financial accounting info on google finance'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6700010087450799938</id><published>2010-06-03T05:44:00.000-07:00</published><updated>2010-06-03T06:27:07.896-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>guild wars on linux</title><content type='html'>cool. got guild wars running with wine on linux. the install and running the game was no problem, but i did need a couple of tweaks to get performance up to a playable level.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wiki.guildwars.com/wiki/Guild_Wars_on_Wine"&gt;this page&lt;/a&gt; on the wiki was important, as it pointed out things like the emulated hardware acceleration for the alsa audio. (winecfg) i found that the pixel shader was fine to leave on, even though my hardware ain't that great. the wiki page says to use the pbuffer for osr on low-grade hardware, which i guess means to use a pixel buffer for off-screen rendering. i couldn't see how to do that, but fortunately it wasn't needed. also, i had to check the 'allow the window manager to control the windows' or else my keyboard wouldn't work and i couldn't even log in. i had previously changed the windows version to 2000 and installed a few winetricks, but i don't think those are too important.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;some of the other changes i'm not sure if they are essential in isolation, but they're part of the final solution: (regedit) UseGLSL disabled, Multisampling enabled, anti-aliasing 2x in game. OffscreenRenderingMode to backbuffer seemed to help a lot with freezing graphics when moving (loading new shaders), even though the wiki page says to do that when the screen turns black. also, setting the game to fullscreen with the same resolution as my linux xwindows (1280x1024, like i said my hardware ain't that great) seemed to get better performance than any other resolution, even than lower ones. (it also avoids the annoying problem of panning around the virtual screen when i move the mouse to the bottom or right.) i also used WINEDEBUG=-all to turn off the errors and warnings, but i doubt that matters much. and i didn't bother to use the -windowed flag.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;EDIT: based on the &lt;a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=9194"&gt;wine db&lt;/a&gt;, looks like pbuffer is a registry setting for OffscreenRenderingMode. a few other suggested settings, but i don't think i'll need them. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6700010087450799938?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6700010087450799938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6700010087450799938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6700010087450799938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6700010087450799938'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/guild-wars-on-linux.html' title='guild wars on linux'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-6099750623855812054</id><published>2010-06-02T03:31:00.000-07:00</published><updated>2010-06-02T03:32:39.075-07:00</updated><title type='text'>giffgaff</title><content type='html'>&lt;a href="http://giffgaff.com/"&gt;mobile phone company&lt;/a&gt; on the 02 network. maybe i need to look into this...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-6099750623855812054?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/6099750623855812054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=6099750623855812054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6099750623855812054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/6099750623855812054'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/giffgaff.html' title='giffgaff'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2630202602476102737</id><published>2010-06-02T03:13:00.000-07:00</published><updated>2010-06-02T03:15:33.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>arizona's immigration law</title><content type='html'>&lt;a href="http://article.nationalreview.com/434592/the-presidents-and-the-arizona-law/william-j-bennett-brseth-leibsohn"&gt;william bennett&lt;/a&gt; has a good article up with some hard stats on the effects of illegal immigration crime in arizona. worth a read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2630202602476102737?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2630202602476102737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2630202602476102737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2630202602476102737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2630202602476102737'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/arizonas-immigration-law.html' title='arizona&apos;s immigration law'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-2805495242333642625</id><published>2010-06-01T08:47:00.000-07:00</published><updated>2010-06-01T13:58:21.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='$.02'/><title type='text'>global warming</title><content type='html'>&lt;div&gt;boy, do i get tired of hearing this: you get ten hot days in a row, and when the eleventh day is cold someone says, 'pfth! global warming....' then when there are ten cold days in a row, other people shake their heads on the next hot day and curse the knuckle-draggers who could doubt the truth about climate change in the face of such incontrovertible proof. if all those people realized how much they have in common, maybe they would just hang out with each other and leave me alone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;day to day weather patterns don't prove _anything_, about _anything_.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;(disclaimer: i'm not trained in climate or geo sciences. i do have a background in engineering, and in particular i have experience with large-scale multiphysics modeling and computer simulation.)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;atmospheric carbon dioxide levels have shot up dramatically in the last couple hundred years, to levels significantly higher than anything the earth has seen for at least hundreds of thousands to millions of years. a very large fraction of that c02 is almost certainly due to the fact that humans have been digging carbon deep out of the ground and burning it. co2, like other translucent media, scatters radiation which causes a greenhouse effect. the average global temperature of the earth has increased over the last couple of hundred years by about .5 to 1 kelvin. i don't think there are any (informed) people who seriously dispute any of these things.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;the problem is how to connect and interpret them in the context of other physical processes. how much of that ~.7 k warming is anthropogenic? what additional changes would be caused by various human activity levels in the future? what effects will a higher average global temperature have? if you can come close to answering any of these questions, you deserve a nobel prize. heck, you deserve obama's, gore's, carter's, and arafat's, and probably a few others.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;i think a lot of the confusion comes from a basic misunderstanding about what science is, what it's for, and how it works. for example, sometimes people hurl the label of 'theory', as if it somehow discredits or diminishes an idea. (you hear that one a lot in the evolution worm can, too.) yeah, guess what? general relativity is just a theory, too, but most of us walk around without worrying about suddenly flying off into space. or sometimes you hear talk of a 'consensus' among scientists, as if that proved diddly squat about the science itself. maybe i'll post more on this some time, but i wonder if the root of these problems is that, for much of the population, the last bit of science education they get is early in high school. and the people teaching those classes also had their last bit of science education early in high school. the connection to the research frontier, where you have to have a grounding in the basic epistemology, is very tenuous.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;john derbyshire wrote &lt;a href="http://article.nationalreview.com/416158/trust-science/john-derbyshire"&gt;an article&lt;/a&gt; last year in response to the climategate blip on the news cycle, in characteristically disgruntled style. i don't always agree with the derb,  but i thought this one was well-written, even-handed, and insightful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;maybe a lot of people feel a need to have one answer, yes or no, delivered to their doorstep before morning coffee so they can just move on in the comfort of knowing that the matter has been settled. sorry folks, ain't gonna happen. this is a complex subject, with mountains of uncertainty in the model form, the inputs climate scientists feed into their simulations, and the experimental data collected to validate them. it might be that we will not know these answers with high confidence for a long time. we might never know. it might not be knowable. even if we did know, it might already be too late to do anything about it. i see people on both sides of the politics desperate to claim science as a bludgeon to use on the other side. well, maybe science just won't cooperate with either of you. feel better now?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i don't think this will be close to settled for a long time, but here's a clue to scientific status: you'll never hear a real scientist argue that his or her current research is a settled question. (duh! why would they be working on it?) but there are some basics that we can be fairly confident about. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;problem is, we have to decide what we're doing tomorrow, today. so here's my prescription: keep studying it. meanwhile, make the cheap changes that reduce co2, especially in favor of energy technology that concentrates pollution rather than dilutes it (nuclear, anyone?). don't use hysteria to justify marxist central planning or costly, widespread upheaval. don't think you can shoot down a scientific hypothesis without proposing a better alternative. forget about the carbon-credit trees and cow farts. that's just carbon swishing around the surface of the earth, and it geologic time it doesn't stay in one place for very long unless it's well buried in the crust.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and don't talk to me about the weather.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-2805495242333642625?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/2805495242333642625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=2805495242333642625' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2805495242333642625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/2805495242333642625'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/global-warming.html' title='global warming'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2737134012695770386.post-3562899056935515337</id><published>2010-06-01T03:52:00.000-07:00</published><updated>2010-06-01T03:56:16.218-07:00</updated><title type='text'>bullet physics engine</title><content type='html'>&lt;a href="http://bulletphysics.org/wordpress/"&gt;bullet&lt;/a&gt; is a foss physics engine (mostly rigid body?) that comes in third against nvidia physx and havok among game designers (open dynamics engine is a more distant fourth). also used for movie effects on major releases. plugin for blender, as well as some other closed-source modellers. just saw some chatter on cython that a couple of different people are wrapping it for a python api.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2737134012695770386-3562899056935515337?l=duhctaep.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://duhctaep.blogspot.com/feeds/3562899056935515337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2737134012695770386&amp;postID=3562899056935515337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3562899056935515337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2737134012695770386/posts/default/3562899056935515337'/><link rel='alternate' type='text/html' href='http://duhctaep.blogspot.com/2010/06/bullet-physics-engine.html' title='bullet physics engine'/><author><name>Duhctaep</name><uri>http://www.blogger.com/profile/15759722184778960901</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
