<?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-1976110287415401166</id><updated>2011-11-20T04:49:27.150+01:00</updated><category term='pymunk'/><category term='flash'/><category term='templates'/><category term='icons'/><category term='documentation'/><category term='html5'/><category term='books'/><category term='compilers'/><category term='latex'/><category term='parsing'/><category term='sips'/><category term='bios'/><category term='css'/><category term='vmx'/><category term='uk'/><category term='grep'/><category term='online privacy'/><category term='oreilly'/><category term='testcase reduction'/><category term='scp'/><category term='delta'/><category term='vaio'/><category term='hg'/><category term='spu'/><category term='c++ spatial iso hunspell'/><category term='c++'/><category term='economist'/><category term='swedish'/><category term='sort'/><category term='name mangling'/><category term='sphereflake'/><category term='xml'/><category term='scheme'/><category term='java'/><category term='lithium'/><category term='maths'/><category term='ohloh'/><category term='opencl'/><category term='fractals'/><category term='flipcards'/><category term='vtx'/><category term='django'/><category term='bash'/><category term='concurrency'/><category term='state'/><category term='c'/><category term='visual studio'/><category term='testcase generation'/><category term='nifty'/><category term='dns'/><category term='half'/><category term='homebrew'/><category term='template pattern'/><category term='mp3'/><category term='version control'/><category term='testing'/><category term='chess'/><category term='pyglet'/><category term='showdown'/><category term='fft'/><category term='bug reports'/><category term='svn'/><category term='bugzilla'/><category term='javascript'/><category term='offloadcpp'/><category term='ray tracing'/><category term='isolation'/><category term='kod'/><category term='oberon'/><category term='debugger'/><category term='sony'/><category term='online book'/><category term='fedora'/><category term='dma'/><category term='wine'/><category term='graph'/><category term='osx'/><category term='censorship'/><category term='ebook'/><category term='bugmail'/><category term='teleworking'/><category term='visualisation'/><category term='batch files'/><category term='MIPS'/><category term='python'/><category term='markdown'/><category term='shell'/><category term='internet'/><category term='gist'/><category term='windows'/><category term='steve yegge'/><category term='image'/><category term='linux'/><category term='apache'/><category term='cvs'/><category term='gdb'/><category term='cookies'/><category term='programming'/><category term='sftp'/><category term='offload'/><category term='random'/><category term='sorting'/><category term='rename'/><category term='cell'/><category term='bitbucket'/><category term='disc inventory'/><category term='7zip'/><category term='wireless'/><category term='cyberduck'/><category term='tea'/><category term='cpp'/><category term='mercurial'/><category term='openxcom'/><category term='double buffer'/><title type='text'>idle thoughts</title><subtitle type='html'>Musings, work notes, web links and general trivia related to computer programming in a variety of areas.

Random things I happen to find interesting or important</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1976110287415401166.post-5964428025857406215</id><published>2011-08-14T21:43:00.003+02:00</published><updated>2011-08-24T22:12:22.821+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrew'/><category scheme='http://www.blogger.com/atom/ns#' term='openxcom'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><title type='text'>Hanger 18</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Back to early 90's - &lt;a href="http://openxcom.ninex.info/"&gt;XCOM aka UFO&lt;/a&gt;&amp;nbsp;returns (via an open-source remake). Happily, nearly trivial to build on OSX.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Grab the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="https://github.com/SupSuper/OpenXcom"&gt;source&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;. Github has a &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://mac.github.com/"&gt;nice OSX client&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;, and the webpages have a &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="github-mac://openRepo/https://github.com/SupSuper/OpenXcom"&gt;wee button&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; to spawn the OSX client and make the git clone process painless.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Get a packaging system for install Unix packages on OSX - the new hotness is &lt;a href="http://mxcl.github.com/homebrew/"&gt;Homebrew&lt;/a&gt;, in addition to fink or macports. Homebrew has the relevant dependencies, so it works (tm).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;brew install yaml-cpp&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;brew install sdl&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;brew install sdl_gfx&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;brew install sdl_mixer&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;set the pkgconfig tools environment variable to find the installed stuff.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;In the src directory of OpenXcom&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;And tis done. Copy the games data files to the &lt;a href="http://openxcom.ninex.info/index.php/documentation/"&gt;relevant location&lt;/a&gt;, and all is well.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5964428025857406215?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://openxcom.ninex.info' title='Hanger 18'/><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5964428025857406215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5964428025857406215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5964428025857406215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5964428025857406215'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/08/hanger-18.html' title='Hanger 18'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-2300629450240314376</id><published>2011-08-09T22:11:00.001+02:00</published><updated>2011-08-09T22:12:44.341+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++ spatial iso hunspell'/><title type='text'>Terminal Illusions</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Flocking makes for a nice screen-saver - see &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://harry.me/2011/02/17/neat-algorithms---flocking"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;for a nice JS demo, and this &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://www.vergenet.net/~conrad/boids/pseudocode.html"&gt;pseudocode&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; for a nice, dirt simple explanation. Managing so many objects interacting in space, even 2D, calls for some &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://cisedu.us/storage/hpcs/2008/leopold_at_uni-kassel.de-2008.03.11-10.10.43-submitLeopold.pdf"&gt;spatial data structures&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;. The approach of buckets in 1D, and sorting + binary searching in the other dimension seems to work well for my flocking screen saver. 64 bit in Lion (hmm. and Snow Leopard?) break 32 bit screen saver modules (bah!) and also Saver Lab. Can capture screenshots with another OSX command line tool, &lt;a href="http://hints.macworld.com/article.php?story=20071104094402312"&gt;screencapture&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0f7-vxLCTzA/TkGTgRIQUKI/AAAAAAAABeQ/2xJ-BhiSs-k/s1600/small_sshot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="227" src="http://2.bp.blogspot.com/-0f7-vxLCTzA/TkGTgRIQUKI/AAAAAAAABeQ/2xJ-BhiSs-k/s320/small_sshot.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Simple Flocking ScreenSaver&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://www.wingdb.com/wgMobileEdition.htm"&gt;GDB in Visual Studio&lt;/a&gt; - they are working on an Android NDK version, &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;which could be a great improvement on current tools, if it worked.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The C++ language has plenty of odd corners; but so do the standard libraries, and the cross platform variations. The&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;std::string class can &lt;a href="http://blogs.kde.org/node/2346"&gt;surprise&lt;/a&gt;&amp;nbsp;on some platforms with its Copy On Write semantics and the sharing of underlying memory buffers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Every new version of Windows breeds a new bit of software to handle disk images, see &lt;a href="http://wincdemu.sysprogs.org/"&gt;WinCDEmu&lt;/a&gt; for Windows 7.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Getting a visa to travel to the states can be done &lt;a href="https://esta.cbp.dhs.gov/esta/"&gt;online&lt;/a&gt;. The EU should reciprocate with US visitors until this nonsense gets stopped.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Consider &lt;a href="http://www.maa.org/devlin/LockhartsLament.pdf"&gt;Lockharts lament&lt;/a&gt;; replace "maths" with "programming", and ponder on education now. And recall how maths was taught, too. Ick.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The &lt;a href="http://hunspell.sourceforge.net/"&gt;HunSpell&lt;/a&gt; spell checker has many dictionaries. The executable can be controlled via pipes from &lt;a href="http://jlatexeditor.endrullis.de/browser/trunk/src/util/Hunspell.java?rev=1271"&gt;Java&lt;/a&gt;. There is a &lt;a href="http://dsso.se/"&gt;Swedish dictionary&lt;/a&gt;&amp;nbsp;from "The Big Swedish Wordlist".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #5d5aba; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;div style="color: #5d5aba; font: 11.0px Menlo; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&lt;br /&gt;&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/1976110287415401166-2300629450240314376?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/2300629450240314376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=2300629450240314376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2300629450240314376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2300629450240314376'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/08/terminal-illusions.html' title='Terminal Illusions'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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/-0f7-vxLCTzA/TkGTgRIQUKI/AAAAAAAABeQ/2xJ-BhiSs-k/s72-c/small_sshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1976110287415401166.post-4293137672186808977</id><published>2011-06-28T09:22:00.000+02:00</published><updated>2011-06-28T09:22:27.386+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compilers'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><title type='text'>Not Ready Yet</title><content type='html'>&lt;a href="https://bitbucket.org/grrussel/constcpp/wiki/Home"&gt;ConstCPP&lt;/a&gt; - C++ with optional mutable state aka const by default.&lt;br /&gt;&lt;br /&gt;This blog posting ui is nearly unusable on iPhone - been a while since I found a site with this sort of issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4293137672186808977?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4293137672186808977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4293137672186808977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4293137672186808977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4293137672186808977'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/06/not-ready-yet.html' title='Not Ready Yet'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5680157368118553227</id><published>2011-02-17T20:16:00.000+01:00</published><updated>2011-02-17T20:16:37.691+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Sleepless Nights</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;To quote a colleague &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;I want gdb to die in a fire. If thats possible.&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;A sentiment I can only agree with, to be honest. However, it remains in its spread of variably buggy obsolete forms embedded within the development tool chains of too much of the world to avoid. Some notes on living in the land of the clone of the Unix tools from the 1980s. A link to a GDB &lt;a href="http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf"&gt;reference card&lt;/a&gt;. Programmable systems (debuggers like GDB, editors like emacs, typesetting systems like LaTeX) have been universally dire in user experience, in _my_ experience. The intended bonus of programmability becomes a curse of necessity; the burden is placed on the user to make the tool usable in the first place. In essence, I want to write programs to solve _my_ problems; not to solve problems in the tools I use; and _not_ to write programs in the debugger while debugging the interesting program or to debug program errors in a document processor.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;A set of &lt;a href="http://www.alexonlinux.com/pythons-optparse-for-human-beings"&gt;optparse documentation for common tasks&lt;/a&gt; since, as it notes,&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;we start new project so seldom, it is difficult to remember all those recipes that we come up with, every time we add a new command line option. This article is an attempt to bring together such recipes.&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Python can query its environment for the functions in the current module (which is done slightly differently than for _other_ modules). This is useful for auto-testing, saving the need to write out a function list explicitly. Can embed these gist things into a blog post, too.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/809201.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;After the GDB rant, I confess I don't program gdb much and have not (yet) needed a .gdbinit file to customise GDB in a semi-permanent manner. However, I have some user defined commands to not forget in case I need to stay in GDB a little longer...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/831851.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;JGrowl&lt;a href="http://stanlemon.net/projects/jgrowl.html"&gt;&lt;/a&gt; implements growl style notifications in a web page. Cool, if not immediately useful. Also, &lt;a href="http://nicolasgallagher.com/css-drop-shadows-without-images/"&gt;drop shadows via CSS&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Can fork multiple threads (well, processes) in bash and then join (wait) for the completion of them. Good for parallelism of shell script controlled processes.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;cmd_A &amp;amp;&lt;br /&gt;cmd_B &amp;amp;&lt;br /&gt;wait&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5680157368118553227?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5680157368118553227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5680157368118553227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5680157368118553227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5680157368118553227'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/02/sleepless-nights.html' title='Sleepless Nights'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4652472819296299984</id><published>2011-01-31T21:36:00.002+01:00</published><updated>2011-01-31T21:37:11.104+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='kod'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><category scheme='http://www.blogger.com/atom/ns#' term='gist'/><title type='text'>Left Unfinished</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Can build a simple and useful unit test system in python exploiting first class functions, dynamic checks on the names of functions, and a naming convention.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;See &lt;a href="http://codepad.org/IMfqTZZT"&gt;codepad.org&lt;/a&gt; for coloured src and a sample run, or github for a "&lt;a href="https://gist.github.com/803854"&gt;gist&lt;/a&gt;" with highlighted source.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;### Begin unit test code&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def test_function1():&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Do some test code&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# return True on Pass, False on Fail&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def test_function2_EXPECTED_FAIL():&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Do some test (more) code&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# return True on Pass, False on Fail&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def test_functionN():&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Do some test (more) code&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# return True on Pass, False on Fail&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# Build a list of test functions to run&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# as test cases&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tests = [ test_function1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, test_function2_EXPECTED_FAIL&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# as many as you like...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;, test_functionN&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;def main():&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;failed &amp;nbsp;= []&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Invoke each test case in turn&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for t in tests:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if not t():&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Can check names of test functions&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# to detect expected fails&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if t.__name__.endswith("_EXPECTED_FAIL"):&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Record fails for later report&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;failed.append(t.__name__)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Can stop on 1st fail if desired&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# return 1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Print the list of tests that failed, if any&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for f in failed:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print "FAIL:",f&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# Invoke the test runner&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;if __name__ == "__main__":&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;main()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;br /&gt;### End unit test code&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;a href="http://www.tonypa.pri.ee/tbw/start.html"&gt;Tile based game development tutorial.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A series of blog articles on &lt;a href="http://weblog.jamisbuck.org/2011/1/27/maze-generation-growing-tree-algorithm"&gt;Maze generation&lt;/a&gt; algorithms.&lt;br /&gt;&lt;br /&gt;A C pre processor (&lt;a href="http://code.google.com/p/ply/source/browse/trunk/ply/cpp.py"&gt;cpp&lt;/a&gt;) in python. A programmers text editor &lt;a href="http://kodapp.com/"&gt;Kod&lt;/a&gt; for OSX based on the google chrome tab UI.&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/1976110287415401166-4652472819296299984?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4652472819296299984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4652472819296299984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4652472819296299984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4652472819296299984'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/01/left-unfinished.html' title='Left Unfinished'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-9057686635311513277</id><published>2011-01-25T21:56:00.001+01:00</published><updated>2011-01-25T22:19:18.004+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offload'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='offloadcpp'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>Lore of the Arcane</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;"&gt;C&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; white-space: pre-wrap;"&gt;ompilation of Offload C++ code for the Cell BE processor and the Linux OS entirely within a Linux environment is complicated by the fact that the Offload C++ compiler ("offloadcpp") is a Windows executable. This compiler compiles programs to run on the Cell processor by first compiling Offload C++ code into Cell specific C code; the C is then compiled for the Cell processor using a Cell BE GCC tool chain (GCC and associated utilities) on Windows, via Cygwin. The result is that, on Windows, the compiler can generate a Cell Linux executable with embedded SPU sub-programs automatically.&lt;/span&gt;&lt;br /&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The below process (described by &lt;a href="http://www.dcs.gla.ac.uk/people/personal/pkeir/"&gt;Paul Keir&lt;/a&gt;, thanks!) outlines how the &lt;a href="http://offload.codeplay.com/"&gt;Offload C++&lt;/a&gt; compiler can be used to compile for the Cell from within Linux using &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;. The first stage is to compile the Offload C++ code (your original program) into C code targeting the Cell. The second stage is to compile that generated C code on the Cell using the Cell SDK on the PS3 running Linux.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Note that depending on how your Linux PS3 is setup, it is possible to create a script (e.g. via scp and ssh) to push the generated code onto the PS3, and to subsequently invoke the PS3 compilation process on the PS3 automatically.                                 &lt;br /&gt;                                             &lt;br /&gt;--------------  Stage 1: Linux/Windows ------------&lt;br /&gt;&lt;br /&gt;1.  Install Wine on your Linux system.&lt;br /&gt;&lt;br /&gt;2.  Copy the Codeplay Offload C++ installation directory from Windows to somewhere convenient on your Linux system.&lt;br /&gt;   &lt;br /&gt;3.  On Linux, set the SIEVESDK environment variable to the offload-cell-linux-sdk directory contained within the installation directory.&lt;br /&gt;&lt;br /&gt;4.  Offload may install a Cygwin-compatible Cell Toolchain. By default it will be installed in C:\cygwin\opt\cell .&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Place the entire cell directory tree within the /opt/ directory of your Linux system. The Cygwin-compatible PS3 toolchain is also available here:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://sourceforge.net/projects/cellwindowssdk/"&gt;http://sourceforge.net/projects/cellwindowssdk/&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The toolchain.7z file there also contains the /opt/cell/... &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;directory tree.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;5.  The Offload compiler is now ready to run, though only with the -nomake switch. If you have placed the Offload installation directory at $HOME/apps/codeplay, offloadcpp may be used to compile hello.cpp using the following command:&lt;br /&gt;&lt;br /&gt;$ wine $HOME/apps/codeplay/offloadcpp.exe &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-I$SIEVESDK/include -I/opt/cell/toolchain/include/c++/4.1.1 -&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;I/opt/cell/sysroot/usr/include &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-I/opt/cell/toolchain/lib/gcc/powerpc-linux/4.1.1/include/c++/powerpc-linux &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-I/opt/cell/toolchain/lib/gcc/powerpc-linux/4.1.1/include&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; -nomake hello.cpp&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;An alias may be useful, say "oll":&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;$ alias oll='wine $HOME/apps/codeplay/offloadcpp.exe -I$SIEVESDK/include -I/opt/cell/toolchain/include/c++/4.1.1 -I/opt/cell/sysroot/usr/include -I/opt/cell/toolchain/lib/gcc/powerpc-linux/4.1.1/include/c++/powerpc-linux -I/opt/cell/toolchain/lib/gcc/powerpc-linux/4.1.1/include'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;$ oll -nomake hello.cpp&lt;br /&gt;&lt;br /&gt;6.  The result will be a directory called "outputc". This directory must now be transferred to the PS3, before issuing the make command, as described in Step 3. below.&lt;br /&gt;&lt;br /&gt;--------------  Stage 2: PlayStation 3 ------------&lt;br /&gt;&lt;br /&gt;1.  Copy the offload-cell-linux-sdk directory to the PS3, and set the SIEVESDK environment variable to that location.&lt;br /&gt;&lt;br /&gt;2.  Mars should already be installed (mars-1.1.4-1.ppc.rpm), but the development libraries are now also needed, so:&lt;br /&gt;&lt;br /&gt;$ wget &lt;a href="ftp://ftp.infradead.org/pub/Sony-PS3/mars/1.1.4/mars-devel-1.1.4-1.ppc.rpm"&gt;ftp://ftp.infradead.org/pub/Sony-PS3/mars/1.1.4/mars-devel-1.1.4-1.ppc.rpm&lt;/a&gt;&lt;br /&gt;$ rpm -ivh mars-devel-1.1.4-1.ppc.rpm&lt;br /&gt;&lt;br /&gt;3.  An "outputc" directory, obtained as in step 5. above, contains a makefile. To complete the compilation of hello.cpp:&lt;br /&gt;    &lt;br /&gt;$ cd outputc&lt;br /&gt;$ make&lt;br /&gt;$ cd ..&lt;br /&gt;$ ./hello&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-9057686635311513277?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/9057686635311513277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=9057686635311513277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/9057686635311513277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/9057686635311513277'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2011/01/lore-of-arcane.html' title='Lore of the Arcane'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4917831553825340656</id><published>2010-12-30T00:53:00.001+01:00</published><updated>2011-01-25T21:09:48.783+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opencl'/><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><category scheme='http://www.blogger.com/atom/ns#' term='economist'/><title type='text'>What comes around</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://lichess.org/"&gt;Lichess&lt;/a&gt; is a cool online chess site. Although, it is not, as it &lt;a href="http://lichess.org/about"&gt;claims&lt;/a&gt;, open source: it places non-commercial use restrictions on the code, for example, failing the open source &lt;a href="http://www.opensource.org/docs/osd"&gt;definition&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Its easy to write simple web applications quickly with &lt;a href="http://webpy.org/"&gt;Webpy&lt;/a&gt;.&amp;nbsp;Can parse C99 with open source &lt;/span&gt;&lt;a href="http://code.google.com/p/pycparser/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;parser (pycparser)&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; implemented in Python, and display the generated syntax tree in a web browser via &lt;a href="http://www.jstree.com/"&gt;JSTree&lt;/a&gt;. Hence a very &lt;a href="http://syntax.dyndns-web.com/"&gt;semi-working&lt;/a&gt; OpenCL lint tool (just needs, hmm, a proper preprocessor, symbol table, type-checker to do this right: not going to do that outside the day job, obviously!).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The graphics support in browsers is getting better: Graphviz display in the browser via &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://code.google.com/p/canviz/"&gt;canviz&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;, and some ease of use APIs over the HTML5 &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://easeljs.com/"&gt;canvas (EaselJS)&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; element.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://weblog.jamisbuck.org/2010/12/27/maze-generation-recursive-backtracking"&gt;Maze&lt;/a&gt; generation. &lt;a href="http://nifty.stanford.edu/"&gt;Nifty&lt;/a&gt; CS assignments I wish I had on my course. &lt;a href="http://unixpapa.com/js/key.html"&gt;Key events&lt;/a&gt; in JavaScript. If this script works, and the web-service it uses is any good, &lt;a href="http://code.google.com/p/serendipity/"&gt;finding plane tickets&lt;/a&gt; should be easier.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;With the somewhat more extreme climate around, &lt;a href="http://www.grantgibson.co.uk/blog/index.php/2008/05/26/weather-station/"&gt;weather&lt;/a&gt; seems more interesting. See also &lt;a href="http://www.wviewweather.com/"&gt;wview&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;For journalism, and print media that 'gets' the internet, &lt;a href="http://www.economist.com/"&gt;the Economist&lt;/a&gt; is pretty good; a print subscriber gets the same content online, and in an iPhone App, and in audio. It's rather like distilled BBC Radio 4.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4917831553825340656?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4917831553825340656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4917831553825340656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4917831553825340656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4917831553825340656'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/12/what-comes-around.html' title='What comes around'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-3977904202178710016</id><published>2010-11-17T10:52:00.000+01:00</published><updated>2010-11-17T10:52:43.045+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='isolation'/><category scheme='http://www.blogger.com/atom/ns#' term='state'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Cloning Technology</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Concurrent Programming with Revisions and Isolation Types from Microsoft Research (&lt;/span&gt;&lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=132619"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;) is an approach to concurrent programming looking extremely similar to Sieve C++ (described&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.allydonaldson.co.uk/papers/DonaldsonRLC_HPPC2007.html"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.allydonaldson.co.uk/papers/pdfs/2008/HPPC.pdf"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;and&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.allydonaldson.co.uk/papers/pdfs/2008/MULTIPROG.pdf"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;) developed at &lt;/span&gt;&lt;a href="http://www.codeplay.com/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Codeplay&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;How to setup virtual box &lt;a href="http://forums.virtualbox.org/viewtopic.php?t=15868"&gt;shared folders&lt;/a&gt; to access host data from the Linux OS inside the VM after installing the guest addons; it works, but is very much slower than a real machine.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Intel have released an alpha OpenCL &lt;a href="http://software.intel.com/en-us/articles/intel-opencl-sdk/"&gt;implementation&lt;/a&gt; (for X86).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;There is also an interesting &lt;a href="http://software.intel.com/file/32138/"&gt;performance guide&lt;/a&gt;, SIGGRAPH &lt;a href="http://www.khronos.org/developers/library/2010_siggraph_bof_opencl/OpenCL-BOF-Intel-SIGGRAPH-Jul10.pdf"&gt;slides&lt;/a&gt;, noting that transformations to code beneficial on GPU are not optimisations on X86 (e.g. exploitation of hierarchical memory spaces via __local etc).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-3977904202178710016?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/3977904202178710016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=3977904202178710016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3977904202178710016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3977904202178710016'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/11/cloning-technology.html' title='Cloning Technology'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-6836183497669230657</id><published>2010-11-07T21:32:00.000+01:00</published><updated>2010-11-07T21:32:03.579+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vmx'/><category scheme='http://www.blogger.com/atom/ns#' term='vtx'/><category scheme='http://www.blogger.com/atom/ns#' term='sony'/><category scheme='http://www.blogger.com/atom/ns#' term='bios'/><category scheme='http://www.blogger.com/atom/ns#' term='vaio'/><title type='text'>Crashing Around You</title><content type='html'>&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;One who seeks knowledge learns something new every day.&lt;br /&gt;One who seeks the Tao unlearns something new every day.&lt;br /&gt;Less and less remains until you arrive at non-action.&lt;br /&gt;When you arrive at non-action,&lt;br /&gt;nothing will be left undone.&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;The above is a commit message: I wish it had been informative, not pretentious.&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;Its time for operating systems to prohibit the space character in file and directory names. Too much breakage with respect to quoting even today, and this is a classic known issue in programming since before I was born.&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;/pre&gt;&lt;pre class="vc_log" style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;a href="http://www.ubuntu.com/desktop"&gt;Ubuntu 10.10&lt;/a&gt; installs pretty straightforwardly in VirtualBox, but you need to install the "Guest Addons" from Virtual Box to teach it that there is a monitor capable of more than 800x600 resolution. Sony Vaio laptops need the virtualisation of the hardware enabled in the BIOS to let VirtualBox run the VM it creates: thats the first BIOS I have seen in, four? years or more. F2 gets the BIOS up at boot, and the enable virtualisation option is there. Note that this is after the BIOS update, that obsoletes all the dangerous hacks on the net that talk of unofficial BIOS updates / patches, that are now sitting around on the web to break careless readers.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-6836183497669230657?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/6836183497669230657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=6836183497669230657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6836183497669230657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6836183497669230657'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/11/crashing-around-you.html' title='Crashing Around You'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5478240629366464414</id><published>2010-10-27T09:42:00.003+02:00</published><updated>2010-10-29T20:05:39.129+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='MIPS'/><category scheme='http://www.blogger.com/atom/ns#' term='half'/><title type='text'>Ain't it Fun</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Teaching modern C++, as opposed to warmed up C in&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.cs.aau.dk/~nesotto/modern_cpp/2008.html"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Modern C++&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Scripting user interfaces with images in &lt;/span&gt;&lt;a href="http://groups.csail.mit.edu/uid/sikuli/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Sikuli&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;. Interesting, if inherently brittle.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://glacialflame.com/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Isometric&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; in browser game development in JS and HTML5 canvas,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://pyparsing.wikispaces.com/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Pyparsing&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; - some or all of the power of Parsec without the brain hurt of Haskell. &lt;/span&gt;&lt;a href="http://courses.missouristate.edu/KenVollmar/MARS/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MARS&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; : a MIPS assembly IDE and simulator in Java, also usable as a cmdline emulator for a compiler tester.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;The &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Half_precision_floating-point_format"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;half&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; float type - 16bit floating point, somewhat uncommon to find, but present in OpenCL. Conversion routines between float and half &lt;/span&gt;&lt;a href="http://opentk.svn.sourceforge.net/viewvc/opentk/trunk/Source/OpenTK/Math/Half.cs?revision=2485&amp;amp;view=markup"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;, and &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://cellperformance.beyond3d.com/articles/2006/07/update-19-july-06-added.html"&gt;here&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5478240629366464414?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5478240629366464414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5478240629366464414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5478240629366464414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5478240629366464414'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/10/aint-in-fun.html' title='Ain&apos;t it Fun'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5485580838151614965</id><published>2010-02-20T23:52:00.000+01:00</published><updated>2010-02-20T23:52:33.170+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='nifty'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Mirror Mirror</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Embedding a Flash MP3 player in web pages is &lt;a href="http://www.varal.org/media/niftyplayer/"&gt;nifty&lt;/a&gt;. &lt;a href="http://mediaplayer.yahoo.com/"&gt;Yahoo also&lt;/a&gt;. Tips on the use of &lt;a href="http://hgtip.com/tips/"&gt;mercurial&lt;/a&gt;. Free web hosting on &lt;a href="http://hgtip.com/tips/beginner/2009-10-13-free-hosting-at-bitbucket/"&gt;bit-bucket&lt;/a&gt;, via hg. Some actual &lt;a href="http://grrussel.bitbucket.org/"&gt;content&lt;/a&gt; on the web. &lt;a href="http://openbit.co.uk/?p=135"&gt;SQL&lt;/a&gt; in your web browser.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5485580838151614965?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5485580838151614965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5485580838151614965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5485580838151614965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5485580838151614965'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/02/mirror-mirror.html' title='Mirror Mirror'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-1998722096596391502</id><published>2010-02-10T08:50:00.004+01:00</published><updated>2010-02-10T09:01:54.008+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='sips'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='swedish'/><title type='text'>Enjoy the Silence</title><content type='html'>&lt;a href="http://www.folklore.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Folklore&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; about computers. Guess they've been around long enough.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;OSX continues to surprise with little command line tools that wrap the features of the underlying frameworks e.g. &lt;/span&gt;&lt;a href="http://straylink.wordpress.com/2009/01/24/os-x-command-line-image-manipulation/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sips - scriptable image processing system&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.  Useful in combination with &lt;/span&gt;&lt;a href="http://www.accesspdf.com/pdftk/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pdftk&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;Online &lt;a href="http://fsi-language-courses.org/Content.php"&gt;PDF and MP3&lt;/a&gt; of language learning courses.&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/1976110287415401166-1998722096596391502?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/1998722096596391502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=1998722096596391502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/1998722096596391502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/1998722096596391502'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/02/enjoy-silence.html' title='Enjoy the Silence'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-7011696852368064850</id><published>2010-01-31T16:51:00.005+01:00</published><updated>2010-02-10T09:02:10.474+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='cookies'/><category scheme='http://www.blogger.com/atom/ns#' term='icons'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><title type='text'>Starting Over</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The site &lt;/span&gt;&lt;a href="http://www.quirksmode.org/js/contents.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;quirksmode.org&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; has a great overview of JavaScript best practices. Makes dealing with cookies pretty painless and easy.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Always good to get more usable &lt;/span&gt;&lt;a href="http://www.famfamfam.com/lab/icons/silk/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;icons&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Python has built in &lt;/span&gt;&lt;a href="http://code.activestate.com/recipes/304004/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;templates&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, good for a start before bothering with a full blown &lt;/span&gt;&lt;a href="http://wiki.python.org/moin/Templating"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;template engine&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&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/1976110287415401166-7011696852368064850?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/7011696852368064850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=7011696852368064850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/7011696852368064850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/7011696852368064850'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2010/01/starting-over.html' title='Starting Over'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4316433534548453536</id><published>2009-12-31T00:13:00.005+01:00</published><updated>2009-12-31T00:18:38.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitbucket'/><category scheme='http://www.blogger.com/atom/ns#' term='swedish'/><title type='text'>A Cry from the Crypt</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div&gt;Breaking into a running python program using &lt;a href="http://bruynooghe.blogspot.com/2009/07/how-to-bring-running-python-program.html"&gt;pdb and Unix signals&lt;/a&gt;.&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2d &lt;a href="http://code.google.com/p/minivec/"&gt;vectors&lt;/a&gt; in Python.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Learning &lt;a href="http://www.byki.com/lists/Swedish"&gt;Swedish&lt;/a&gt;. &lt;a href="http://www.filter.ac.uk/database/insightrecord.php?id=41"&gt;More learning Swedish&lt;/a&gt;, with online mp3 files. Mercurial hosting on &lt;a href="http://bitbucket.org/"&gt;bitbucket&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cool &lt;a href="http://www.metanetsoftware.com/technique.html"&gt;tutorial on 2D&lt;/a&gt; games.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;OpenGL Red book &lt;a href="http://www.glprogramming.com/red/"&gt;online&lt;/a&gt;. Basic &lt;a href="http://chortle.ccsu.edu/VectorLessons/vch00/vch00_1.html"&gt;introduction&lt;/a&gt; to vectors.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://www.contextfreeart.org/mediawiki/index.php/Download_page"&gt;Computer generated&lt;/a&gt; imagery.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;Open source OCR software, and &lt;a href="http://research.google.com/pubs/author4479.html"&gt;papers&lt;/a&gt; about that. &lt;a href="http://software.intel.com/en-us/articles/multi-core-simulation-of-soft-body-characters-using-cloth/"&gt;Cloth&lt;/a&gt; simulation. &lt;a href="http://www.paulsprojects.net/opengl/cloth/cloth.html"&gt;Again&lt;/a&gt;. Processing &lt;a href="http://www.cs.princeton.edu/~traer/physics/"&gt;physics&lt;/a&gt;. &lt;a href="http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central"&gt;GCD&lt;/a&gt;. &lt;a href="http://flixel.org/"&gt;Flixel&lt;/a&gt;.&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/1976110287415401166-4316433534548453536?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4316433534548453536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4316433534548453536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4316433534548453536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4316433534548453536'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/12/cry-from-crypt.html' title='A Cry from the Crypt'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-6225241219913012458</id><published>2009-10-09T21:32:00.003+02:00</published><updated>2009-10-09T21:41:05.433+02:00</updated><title type='text'>Next in Line</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://www.pixelbeat.org/programming/stdio%5Fbuffering/stdbuf-man.html"&gt;stdbuf&lt;/a&gt; program is now in GNU coreutils. Trying to handle &lt;a href="http://www.pixelbeat.org/programming/stdio_buffering/"&gt;buffered stdout&lt;/a&gt; in programs controlled via pipes is awkward.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-6225241219913012458?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/6225241219913012458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=6225241219913012458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6225241219913012458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6225241219913012458'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/10/next-in-line.html' title='Next in Line'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-2017028593039365839</id><published>2009-08-21T23:16:00.011+02:00</published><updated>2009-10-06T14:46:34.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>Forget to Remember</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A stylish introduction to the novelties of &lt;/span&gt;&lt;a href="http://diveintohtml5.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;HTML5&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;General collection of programming related 'stuff' - &lt;/span&gt;&lt;a href="http://docforge.com/wiki/Main_Page"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;docforge&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; looks interesting.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The Django framework in Python is quite nice, but needs, like all dynamic languages, a &lt;/span&gt;&lt;a href="http://simonwillison.net/2008/May/22/debugging/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;good way to debug&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; for typos. The &lt;/span&gt;&lt;a href="http://www.speakeasy.org/~lion/proj/scratch/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;scratch&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; module looks to be the simplest possible way to write a non DB backed web service, albeit with absolutely no support for safe concurrent data access as designed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Planning a trip to &lt;/span&gt;&lt;a href="http://ftp.uk.linux.org/pub/linux/Sony-PS3/mars/latest/mars-docs-1.1.4/html/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MARS &lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;in a &lt;/span&gt;&lt;a href="http://lists.ozlabs.org/pipermail/cbe-oss-dev/2009-May/006733.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Cell&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. To read about &lt;/span&gt;&lt;a href="http://sourceforge.net/projects/cellexecution/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Cell Execution&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; and &lt;/span&gt;&lt;a href="http://cellperformance.beyond3d.com/articles/index.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;performance on Cell&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;/span&gt;&lt;a href="http://homepages.inf.ed.ac.uk/rbf/HIPR2/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;HIPR&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; Image processing textbook online.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&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/1976110287415401166-2017028593039365839?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/2017028593039365839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=2017028593039365839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2017028593039365839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2017028593039365839'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/08/forget-to-remember.html' title='Forget to Remember'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4630503398174327507</id><published>2009-08-12T11:55:00.007+02:00</published><updated>2009-08-15T07:57:47.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dns'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>The Unforgiving Blade</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Cell Linux development is oft discussed on the &lt;/span&gt;&lt;a href="http://lists.ozlabs.org/pipermail/cbe-oss-dev"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;cbe-oss-dev&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; list.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jeremy Kerr writes &lt;a href="http://ozlabs.org/~jk/"&gt;Cell Linux&lt;/a&gt; code for IBM.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;IBM hosts the developerworks Cell Broadband Engine &lt;a href="https://www.ibm.com/developerworks/power/cell/"&gt;resource centre&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://cellperformance.beyond3d.com/articles/"&gt;Cell Performance&lt;/a&gt; forum has interesting articles.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://www.corepy.org/"&gt;CorePy&lt;/a&gt; system can program SPUs.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A &lt;a href="http://cell.grondklont.nl/"&gt;blog&lt;/a&gt; on Cell Programming.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', fantasy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', -webkit-fantasy;"&gt;How to setup a &lt;a href="http://www.oreillynet.com/pub/ct/49"&gt;webserver&lt;/a&gt; on OSX. Dynamic &lt;a href="http://www.dyndns.com/"&gt;DNS&lt;/a&gt; makes it visible to the world via a name (provided the computer is left on ;-))&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/1976110287415401166-4630503398174327507?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4630503398174327507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4630503398174327507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4630503398174327507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4630503398174327507'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/08/unforgiving-blade.html' title='The Unforgiving Blade'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-6766547251456390205</id><published>2009-08-02T15:41:00.002+02:00</published><updated>2009-08-02T15:53:52.466+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tea'/><category scheme='http://www.blogger.com/atom/ns#' term='pymunk'/><category scheme='http://www.blogger.com/atom/ns#' term='flipcards'/><category scheme='http://www.blogger.com/atom/ns#' term='pyglet'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='fft'/><title type='text'>Timelessness</title><content type='html'>&lt;div&gt;&lt;a href="http://shoooes.net/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Shoes&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; - ruby in a box, with a simple to use UI library. Nice enough, but bundling its own version of ruby makes it awkward to integrate 3rd party libraries wanting a different minor version of Ruby. It has an excellent, and amusing, set of documentation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Compilers for one language targeting another are nothing new, but translating ANSI C into higher level programming languages is interestingly nutty to perform. &lt;/span&gt;&lt;a href="http://cluecc.sourceforge.net/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Clue&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; targets Lua, Java, Perl, and Javascript.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;/span&gt;&lt;a href="http://clojure.org/state"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;clojure&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; language discussion of state discusses some of the problems of using an Actor and message passing approach to concurrency.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jerome K. Jerome's &lt;/span&gt;&lt;a href="http://www.gutenberg.org/etext/849"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;idle thoughts&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; can be read via Project Gutenberg. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Generate a&lt;/span&gt;&lt;a href="http://developer.apple.com/qa/qa2005/qa1424.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; sorted list of GCC's predefined pre-processor macros&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;An &lt;/span&gt;&lt;a href="http://www.dspdimension.com/admin/dft-a-pied/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;explanation&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; of the FFT. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Games need artwork. Free artwork is a good thing. &lt;/span&gt;&lt;a href="http://lostgarden.com/labels/free%20game%20graphics.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Good free game artwork&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; is a very good thing. General program art is also good, especially for &lt;/span&gt;&lt;a href="http://www.hongkiat.com/blog/40-free-and-useful-gui-icon-sets-for-web-designers/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;icons&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Applescript is evil. Langauge bindings for AppleScript are &lt;/span&gt;&lt;a href="http://www.libertypages.com/clarktech/?p=77&amp;amp;cpage=1"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;nifty&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. Enter &lt;/span&gt;&lt;a href="http://appscript.sourceforge.net/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;appscript&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. Don't forget the &lt;a href="http://appscript.sourceforge.net/tools.html"&gt;tools&lt;/a&gt; needed to understand the AppleScript API being bound to, e.g. &lt;a href="http://appscript.sourceforge.net/objc-appscript/iTunes-objc/index.html"&gt;iTunes&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Ambulance driving and paramedic work - how to be under appreciated, overworked, and covered in bodily fluids all in one day's &lt;/span&gt;&lt;a href="http://randomreality.blogware.com/blog/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;work&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; - and in a free ebook, &lt;/span&gt;&lt;a href="http://manybooks.net/titles/reynoldstother06BloodSweatAndTeaCC.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Blood, Sweat and Tea&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.virtualbox.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;VirtualBox&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; is a free VM, ala VMWare or VirtualPC. Also, free for 'personal' use, which does in fact permit &lt;/span&gt;&lt;a href="http://www.virtualbox.org/wiki/Licensing_FAQ"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;commercial&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; usage. &lt;/span&gt;&lt;a href="http://www.virtualbox.org/manual/UserManual.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;User manual&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://github.com/irskep/pyflipcard/tree/master"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Flipcards&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, in python. &lt;/span&gt;&lt;a href="http://www.pyglet.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Pyglet&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, OpenGL and sprites and animation and sound and stuff for games, in a nice package. Unlike pygame, easy to install. &lt;/span&gt;&lt;a href="http://code.google.com/p/pymunk/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Pymunk&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, a pythonic wrapper around the chipmink 2D physics library. 1.1.3 needs a &lt;/span&gt;&lt;a href="http://code.google.com/p/pyglet/source/detail?spec=svn2446&amp;amp;r=2327"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;fix&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; for crashes related to timers, caused by sound playing. Centering windows &lt;/span&gt;&lt;a href="http://swiftcoder.wordpress.com/2008/12/08/pong/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;tip&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Google's &lt;/span&gt;&lt;a href="http://code.google.com/p/protobuf/"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;protocol buffers&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; make python data persistence easy, and should provide support for evolving data schema.&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/1976110287415401166-6766547251456390205?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/6766547251456390205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=6766547251456390205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6766547251456390205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6766547251456390205'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/04/httpwww.html' title='Timelessness'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-8060862722967048085</id><published>2009-03-27T13:31:00.003+01:00</published><updated>2009-03-27T13:41:36.154+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>The Ides of March</title><content type='html'>&lt;span style="font-family:courier new;"&gt;A brief return to document layout and typesetting; &lt;a href="http://www.terminally-incoherent.com/blog/2007/09/19/latex-squeezing-the-vertical-white-space/"&gt;Squeezing whitespace&lt;/a&gt; and &lt;a href="http://www.terminally-incoherent.com/blog/2007/04/14/latex-fixing-wrong-figure-numbers/"&gt;wrong figure numbers&lt;/a&gt;, the use of &lt;a href="http://www.bibtex.org/Using/"&gt;bibtex&lt;/a&gt;, &lt;a href="http://www.csse.monash.edu.au/documents/bibtex/"&gt;again&lt;/a&gt;,the &lt;a href="ftp://ctan.tug.org/tex-archive/macros/latex/contrib/caption/caption-eng.pdf"&gt;caption package&lt;/a&gt;, &lt;a href="http://www.mathworks.com/products/matlab/demos.html?file=/products/demos/shipping/matlab/multithreadedcomputations.html"&gt;measuring performance improvement&lt;/a&gt;, the &lt;a href="ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf"&gt;listings package&lt;/a&gt;, a WikiBook on &lt;a href="http://en.wikibooks.org/wiki/LaTeX/Tables"&gt;LaTeX&lt;/a&gt; and a collection of &lt;a href="http://gurmeetsingh.wordpress.com/2008/09/20/latex-tips-n-tricks-for-conference-papers/"&gt;LaTeX conference tips&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A paper from 1987 describing &lt;a href="http://tog.acm.org/resources/SPD/spd.pdf"&gt;SphereFlakes&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-8060862722967048085?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/8060862722967048085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=8060862722967048085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/8060862722967048085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/8060862722967048085'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/03/ides-of-march.html' title='The Ides of March'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-1237058429374607729</id><published>2009-03-24T21:31:00.005+01:00</published><updated>2009-03-24T22:01:34.697+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testcase reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='spu'/><category scheme='http://www.blogger.com/atom/ns#' term='testcase generation'/><category scheme='http://www.blogger.com/atom/ns#' term='lithium'/><title type='text'>Crash Test</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Automated testcase reduction is way cool. &lt;a href="http://www.squarefree.com/lithium/using.html"&gt;Lithium&lt;/a&gt; is a very nice python tool for that, easy enough to modify (to for example, attempt to not reduce only in chunks that are powers of two in size)&lt;br /&gt;&lt;br /&gt;Hand in hand with automated testcase reduction is automated testcase generation. There is a little GNU tool (named &lt;a href="http://sourceware.org/cgi-bin/cvsweb.cgi/src/utils/spu/?cvsroot=src"&gt;spu&lt;/a&gt;) hiding away in the GDB sources to do just that.&lt;br /&gt;&lt;br /&gt;EA have a custom STL replacement. (&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html"&gt;EASTL&lt;/a&gt;). &lt;a href="http://code.google.com/p/wxcocoadialog/"&gt;WxCocoaDialog&lt;/a&gt;, and &lt;a href="http://cocoadialog.sourceforge.net/documentation.html"&gt;CocoaDialog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;High precision &lt;a href="http://www.ibm.com/developerworks/power/library/pa-timebase/index.html"&gt;timers&lt;/a&gt; for Cell Linux.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-1237058429374607729?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/1237058429374607729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=1237058429374607729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/1237058429374607729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/1237058429374607729'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/03/crash-test.html' title='Crash Test'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4299540881122093782</id><published>2009-03-16T10:14:00.003+01:00</published><updated>2009-03-19T20:59:54.135+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='testcase reduction'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='delta'/><title type='text'>Look for the Truth</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://www.ansible.co.uk/misc/tpspeech.html"&gt;Terry Pratchett&lt;/a&gt; defines why I read SF &amp;amp; Fantasy.&lt;br /&gt;&lt;br /&gt;Just when C++ seems understandable, some new examples of what can be done show up, and present interesting bafflement.&lt;br /&gt;&lt;br /&gt;How to &lt;a href="http://blogs.msdn.com/david_leblanc/default.aspx"&gt;program securely&lt;/a&gt; in C/C++, avoiding &lt;a href="http://www.codeplex.com/SafeInt"&gt;integer overflow&lt;/a&gt; via templated operator overloads and allowing &lt;a href="http://www.artima.com/cppsource/safeboolP.html"&gt;testing of objects&lt;/a&gt; in boolean contexts without unintended integral promotions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction"&gt;Test case reduction&lt;/a&gt; - using &lt;a href="http://delta.tigris.org/"&gt;Delta&lt;/a&gt; and a book on &lt;a href="http://www.whyprogramsfail.com/"&gt;Why Programs Fail&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.st.cs.uni-saarland.de/dd/"&gt;Delta debugging&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4299540881122093782?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4299540881122093782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4299540881122093782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4299540881122093782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4299540881122093782'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/03/look-for-truth.html' title='Look for the Truth'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5141974458223227555</id><published>2009-03-02T21:12:00.012+01:00</published><updated>2009-03-12T15:52:55.661+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='online book'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='name mangling'/><category scheme='http://www.blogger.com/atom/ns#' term='batch files'/><title type='text'>Welcome Home (Sanitarium)</title><content type='html'>&lt;span style="font-family:courier new;"&gt;The &lt;a href="http://shape-of-code.coding-guidelines.com/page/2/"&gt;shape of code&lt;/a&gt;. Interesting. A book giving a cultural commentary on the &lt;a href="http://www.knosof.co.uk/cbook/cbook.html"&gt;C language&lt;/a&gt;. The C language is relatively small - the commentary comes to 1600 pages - if he wrote it for C++, then would it ever end?&lt;br /&gt;&lt;br /&gt;Microsoft have, as expected, a &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;proprietary &lt;a href="http://mearie.org/documents/mscmangle"&gt;name mangling scheme&lt;/a&gt; for symbols output from their C++ compiler. It is irritating that they cannot find it in themselves to fully and publically document the naming scheme, resulting in a series of more or less incomplete or obsolete 3rd party attempts scattered across the internet. Even if they promise to, and do, completely revise the scheme each version of the MS tools, it would still be preferable to the current unknown, unknowable, and murkily mutable world of trying to interoperate.&lt;br /&gt;&lt;br /&gt;Not that purveyors of open source are much better off - you can point fingers at the quality of the code, you can cry at the state of the &lt;a href="http://gcc.gnu.org/onlinedocs/"&gt;documentation&lt;/a&gt; - or rather, the lack of (good) documentation about the &lt;a href="http://www.codesourcery.com/public/cxx-abi/abi.html"&gt;internals&lt;/a&gt; - not just the user manual. Fear of infringing on license terms leads to a reverse engineering process, just like proprietary software, even with open source. Still, some other people do occasionally write &lt;a href="http://www.cse.wustl.edu/%7Emdeters/seminar/fall2005/mi.html#virtual"&gt;docs&lt;/a&gt; - leading to the question, are those correct for any or all versions in the range from obsolete, current and bleeding edge.&lt;br /&gt;&lt;br /&gt;The impact of &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.1534"&gt;economics on compiler optimisation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Computer &lt;a href="http://www.xs4all.nl/%7Ecarlo17/cwchessboard/"&gt;chess&lt;/a&gt;. Fast, and pretty. The grep command takes a -v argument to invert the meaning of the match - e.g. to drop matching limes, rather than non matching. Random numbers in batch files via %random%&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5141974458223227555?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5141974458223227555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5141974458223227555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5141974458223227555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5141974458223227555'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/03/welcome-home-sanitarium.html' title='Welcome Home (Sanitarium)'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5433205847912296068</id><published>2009-02-20T21:07:00.003+01:00</published><updated>2009-02-20T21:19:49.528+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='7zip'/><category scheme='http://www.blogger.com/atom/ns#' term='template pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='fractals'/><title type='text'>The Line Begins to Blur</title><content type='html'>&lt;span style="font-family: courier new;"&gt;The 7zip tool has a command line program to go along with the GUI integrated into Windows explorer. This is well documented &lt;a href="http://dotnetperls.com/Content/7-Zip-Examples.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;High performance &lt;a href="http://benojt.sourceforge.net/gallery2.html"&gt;fractal viewer&lt;/a&gt; written in Java - beautiful images, and good performance. Seems scalar loops in Java get good performance, and you can write a portable GUI on top and have arbitrary precision maths support from the libraries. The symmetry in chaos book describes interesting fractals. Its a sign of changing times that the &lt;a href="http://math.uh.edu/%7Echaos/symmbas.html"&gt;example programs&lt;/a&gt; were written in QBasic.&lt;br /&gt;&lt;br /&gt;Some C++ objects are &lt;a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-copyable_Mixin"&gt;non-copyable&lt;/a&gt;. Some patterns &lt;a href="http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern"&gt;recur&lt;/a&gt;. &lt;a href="http://accu.org/index.php/journals/296"&gt;Heh&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5433205847912296068?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5433205847912296068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5433205847912296068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5433205847912296068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5433205847912296068'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/02/line-begins-to-blur.html' title='The Line Begins to Blur'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4712665034718275640</id><published>2009-02-17T22:57:00.003+01:00</published><updated>2009-02-17T23:03:22.002+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='sphereflake'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><title type='text'>Out Of The Shadows</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://ompf.org/ray/sphereflake/"&gt;sphereflake&lt;/a&gt; - nice procedural model generation and raytracer in ~100L of C++. &lt;a href="http://www.sorting-algorithms.com/"&gt;Sorting algorithms&lt;/a&gt; have a .com web site.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4712665034718275640?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4712665034718275640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4712665034718275640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4712665034718275640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4712665034718275640'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/02/out-of-shadows.html' title='Out Of The Shadows'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-2261486318636736562</id><published>2009-02-10T20:40:00.004+01:00</published><updated>2009-02-10T22:57:10.578+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='censorship'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Wake Up</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Someone, somewhere, is complaining about the offensive content of the internet. And sending cease and desist letters, to &lt;a href="http://chillingeffects.org/"&gt;chilling effect&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Someone, somewhere, is wishing a file format they need to process was &lt;a href="http://www.wotsit.org/default.asp"&gt;documented&lt;/a&gt;. People write books about things lacking documentation. Like &lt;a href="http://undocumented.rawol.com/"&gt;Windows 2000&lt;/a&gt;, and its assorted development tools. Someone (who?) may be programming Windows applications in &lt;a href="http://www.jorgon.freeserve.co.uk/"&gt;assembler&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;John Levine's &lt;a href="http://www.iecc.com/linker/"&gt;Linkers and Loaders&lt;/a&gt; book is available online in draft form.&lt;br /&gt;&lt;br /&gt;Finally, online &lt;a href="http://www.easycalculation.com/hex-converter.php"&gt;hex to binary/decimal&lt;/a&gt; converters are useful.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-2261486318636736562?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/2261486318636736562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=2261486318636736562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2261486318636736562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2261486318636736562'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/02/wake-up.html' title='Wake Up'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4486604038222926963</id><published>2009-02-06T20:19:00.006+01:00</published><updated>2009-02-06T21:04:42.880+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='debugger'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='visualisation'/><title type='text'>The Thin Line Between Love and Hatred</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Visual Studio 2005 has a nice debugger; I spend quite a lot of time there. It is certainly an improvement over gdb. Some of its nicer features are the visualisations of the programs data structures - STL containers, arrays of characters as strings. The visualisation of data structures can be customised, and this is good; Sadly, it is not a documented feature. The autoexp.dat file contains the relevant specifications.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;It can be used to provide custom views of data structures specific to programs and libraries. One &lt;a href="http://dev.chromium.org/developers/how-tos/how-to-set-up-visual-studio-debugger-visualizers"&gt;example&lt;/a&gt; is the Chromium browser from google. (and links &lt;a href="http://mariusbancila.ro/blog/?p=26"&gt;1&lt;/a&gt;,&lt;a href="http://www.virtualdub.org/blog/pivot/entry.php?id=120"&gt;2&lt;/a&gt;,&lt;a href="http://www.virtualdub.org/blog/pivot/entry.php?id=172"&gt;3&lt;/a&gt;,&lt;a href="http://www.developer.com/net/cplus/article.php/3509761"&gt;4&lt;/a&gt;,&lt;a href="http://thejefffiles.com/blog/?p=18"&gt;5&lt;/a&gt;). It can also be used to &lt;a href="http://through-the-interface.typepad.com/through_the_interface/2006/07/advanced_visual.html"&gt;auto expand&lt;/a&gt; watched data.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The parser and evaluator for these leave much to be desired. Syntax errors are silently ignored (the preview, or child view, the visualiser for a given type is unchanged) leaving the display unchanged. If not ignored, they are reported in a single modal dialog. If an error is not syntactic, the debugger will crash. Possibly immediately, possibly subsequently in the middle of a debugging session on inspecting certain values.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Beyond the implementation quality issues, the lack of documentation is the main problem. The syntax, while not good, would be improved by a smattering of documentation on the MSDN.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Its a shame, because it is obviously a (potentially) useful feature. It certainly was useful for substituting names for numeric codes in data views (when it didn't crash...)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.71).aspx"&gt;Visual Studio command line options&lt;/a&gt; are documented on MSDN - some obscure but useful ones. Possibly the most useful is &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;/debugexe&lt;/span&gt; - to invoke the debugger on a program from the command line.&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/1976110287415401166-4486604038222926963?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4486604038222926963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4486604038222926963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4486604038222926963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4486604038222926963'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/02/thin-line-between-love-and-hatred.html' title='The Thin Line Between Love and Hatred'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-3705347057721333</id><published>2009-02-04T21:57:00.004+01:00</published><updated>2009-02-04T22:18:28.351+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maths'/><category scheme='http://www.blogger.com/atom/ns#' term='teleworking'/><title type='text'>Try, Try, Try</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;People try to &lt;a href="http://betterexplained.com/articles/category/math/"&gt;explain maths&lt;/a&gt; on the internet; periodically, I try to understand it once more. Teleworking, but &lt;a href="http://www.nobugs.org/articles/Teleworking.txt"&gt;from&lt;/a&gt; Edinburgh...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-3705347057721333?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/3705347057721333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=3705347057721333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3705347057721333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3705347057721333'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/02/try-try-try.html' title='Try, Try, Try'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4102654000053647160</id><published>2009-01-28T23:09:00.002+01:00</published><updated>2009-01-29T08:54:59.676+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='online privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='bug reports'/><title type='text'>Seek and Destroy</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Scary to &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9125058"&gt;see what could&lt;/a&gt; be found...&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:courier new;"&gt;How to &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html"&gt;report bugs well&lt;/a&gt;.&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/1976110287415401166-4102654000053647160?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4102654000053647160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4102654000053647160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4102654000053647160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4102654000053647160'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/seek-and-destroy.html' title='Seek and Destroy'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-8430678692920920503</id><published>2009-01-19T20:06:00.003+01:00</published><updated>2009-01-19T20:15:10.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='steve yegge'/><category scheme='http://www.blogger.com/atom/ns#' term='bugmail'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'>The Frayed Ends of Sanity</title><content type='html'>&lt;span style="font-family: courier new;"&gt;Some &lt;a href="http://steve.yegge.googlepages.com/blog-rants"&gt;blog titles make you jealous&lt;/a&gt;; &lt;a href="https://developer.mozilla.org/en/JavaScript"&gt;JavaScript&lt;/a&gt; used for &lt;a href="http://debuggable.com/posts/baseurl-finding-simple-event-broadcasting-and-element-sorting-in-js:480f4dd6-5164-4694-9334-44dccbdd56cb"&gt;sorting DOM list elements&lt;/a&gt; and &lt;a href="http://getfirebug.com/console.html"&gt;FireBug's console&lt;/a&gt; for printf style debugging sanity.&lt;br /&gt;&lt;br /&gt;Integration of &lt;a href="https://addons.mozilla.org/en-US/thunderbird/addon/9584"&gt;bugzilla and Thunderbird&lt;/a&gt; to ease dealing with bugzilla generated report mails. Nice if it worked with an authenticating bugzilla.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-8430678692920920503?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/8430678692920920503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=8430678692920920503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/8430678692920920503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/8430678692920920503'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/frayed-ends-of-sanity.html' title='The Frayed Ends of Sanity'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-2131404906541669928</id><published>2009-01-14T21:32:00.004+01:00</published><updated>2009-01-14T21:54:25.033+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='graph'/><category scheme='http://www.blogger.com/atom/ns#' term='cvs'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Links 234</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Version control books online. For &lt;a href="http://cvsbook.red-bean.com/"&gt;CVS&lt;/a&gt;, &lt;a href="http://svnbook.red-bean.com/"&gt;SVN&lt;/a&gt;, and &lt;a href="http://hgbook.red-bean.com/"&gt;Hg&lt;/a&gt;. (&lt;a href="http://www.selenic.com/mercurial/wiki/index.cgi/FAQ"&gt;FAQ&lt;/a&gt;). Using a version control system as a &lt;a href="http://naleid.com/blog/2008/05/01/using-mercurial-as-a-super-client-for-subversion/"&gt;'super client'&lt;/a&gt; to another is an interesting idea.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt; for debugging data structures, especially DAGs&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-2131404906541669928?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/2131404906541669928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=2131404906541669928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2131404906541669928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2131404906541669928'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/links-234.html' title='Links 234'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5965121701584654019</id><published>2009-01-11T22:42:00.003+01:00</published><updated>2009-01-11T22:50:34.832+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compilers'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><title type='text'>Before I Forget</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;It is hard to find good online resources about compiler writing. Two interesting approaches to teaching compiler implementation are &lt;a href="http://www.cs.indiana.edu/%7Edyb/pubs/nano-jfp.pdf"&gt;nano-passes&lt;/a&gt; and &lt;a href="http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf"&gt;An Incremental Approach to Compiler Construction&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-5965121701584654019?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5965121701584654019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5965121701584654019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5965121701584654019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5965121701584654019'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/before-i-forget.html' title='Before I Forget'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-2668904807008268068</id><published>2009-01-07T23:00:00.005+01:00</published><updated>2009-01-07T23:38:44.420+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='online book'/><category scheme='http://www.blogger.com/atom/ns#' term='icons'/><category scheme='http://www.blogger.com/atom/ns#' term='oberon'/><category scheme='http://www.blogger.com/atom/ns#' term='markdown'/><category scheme='http://www.blogger.com/atom/ns#' term='showdown'/><title type='text'>Piece by Piece</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Some &lt;a href="ttp://jedidiah.eu/journal/chunky_folders/"&gt;pretty folder icons&lt;/a&gt; on a pretty website. A &lt;a href="http://jedidiah.eu/how_to/change_an_icon_mac_osx.pdf"&gt;guide&lt;/a&gt; to actually using them on OSX...&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://danbenjamin.com/enkoder"&gt;Encoding email addresses&lt;/a&gt; in JavaScript for web display to humans rather than bots - although, how long will it be before bots run JS?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. Text to html. &lt;a href="http://attacklab.net/showdown/"&gt;Showdown&lt;/a&gt;, Markdown in JS. &lt;a href="http://code.google.com/p/syntaxhighlighter/"&gt;Syntax highlighting&lt;/a&gt; for code snippets. Browser side code is becoming useful for more than annoying input validation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The programming language &lt;a href="http://www.mathematik.uni-ulm.de/oberon/reports/report-1992.html"&gt;Oberon&lt;/a&gt;, dead in all but name, lives on. As normal for niche languages, especially dead ones, documentation is scarce. Fortunately, Oberon is simple and the report short. Some more &lt;a href="https://www.oberon.ethz.ch/silva_ethz/ETH/infk/oberon/oberon/bibliography/publications"&gt;books on Oberon&lt;/a&gt; are around too, for the moment. Since Oberon is so simple, no-one uses Oberon 1, 2, or 2007 - but extended versions with features (re)added from Pascal, Modula and other Pascal derived languages. &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/1976110287415401166-2668904807008268068?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/2668904807008268068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=2668904807008268068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2668904807008268068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/2668904807008268068'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/piece-by-piece.html' title='Piece by Piece'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4638283885933647097</id><published>2009-01-02T21:32:00.003+01:00</published><updated>2009-01-02T21:38:50.158+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Escape Confusion</title><content type='html'>&lt;span style="font-family:courier new;"&gt;How to &lt;a href="http://learndaily.wordpress.com/2008/07/25/css-fixed-sidebar/"&gt;position a fixed sidebar using CSS&lt;/a&gt;. Fiddling with &lt;a href="http://css.maxdesign.com.au/listutorial/02.htm"&gt;lists&lt;/a&gt;. Using &lt;a href="http://www.herohog.com/CSScolorChart.html"&gt;colours&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4638283885933647097?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4638283885933647097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4638283885933647097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4638283885933647097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4638283885933647097'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2009/01/escape-confusion.html' title='Escape Confusion'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-6739681270417156148</id><published>2008-12-30T14:53:00.000+01:00</published><updated>2008-12-30T15:30:43.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='ohloh'/><title type='text'>Left Unfinished</title><content type='html'>&lt;span style="font-family:courier new;"&gt;A long time ago, in a land far, far, away, I wrote a &lt;a href="https://typex.dev.java.net/"&gt;data binding system&lt;/a&gt; for Java and XML. Sadly now, the demo programs fail on recent JVMs and Java Webstart, but that would seem an inherent risk of (ab)using the ability to access the javac compiler via private APIs to compile java source code. Incidentally, compiling java and then using the reflection API in java on the output classes, generating more java code, to compile, load and use, seemed like a nice demonstration of the power of programs that write (efficient) programs or (boring / error prone) parts of programs.&lt;br /&gt;&lt;br /&gt;This program is apparently valued highly; The methodology behind this generated figure of $&lt;/span&gt;&lt;span id="cocomo_value"  style="font-family:courier new;"&gt;226,531&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; and&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; 4 man years of effort for code alone is dubious in the extreme, since it was written by me, and not for that long nor that much.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;script type="text/javascript" src="http://www.ohloh.net/p/1645/widgets/project_cocomo.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;This also leads to the question of how long will the project be hosted? Given its inactive status and lack of activity over 5 years, I guess it is not costing more than a few cents? per year to host, so it may well survive indefinitely.&lt;br /&gt;&lt;br /&gt;While I am linking to old, abandoned, and semi-abandoned stuff I have written, here is another &lt;a href="http://code.google.com/p/gravitysaver/"&gt;little toy N-body&lt;/a&gt; visualiser.&lt;br /&gt;&lt;br /&gt;Its the age old story - if I had used the hosting services for my MacOS X screensavers, I would still have the source code for them after someone stole my computers...&lt;br /&gt;&lt;br /&gt;On a side note, the &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; JS library is quite interesting.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-6739681270417156148?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/6739681270417156148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=6739681270417156148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6739681270417156148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/6739681270417156148'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/12/left-unfinished.html' title='Left Unfinished'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5669658342903508826</id><published>2008-12-28T21:05:00.000+01:00</published><updated>2008-12-28T21:27:31.024+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oreilly'/><category scheme='http://www.blogger.com/atom/ns#' term='cyberduck'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><category scheme='http://www.blogger.com/atom/ns#' term='disc inventory'/><title type='text'>Creeping Death</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The &lt;a href="http://cyberduck.ch/"&gt;cyberduck&lt;/a&gt; program seems to transfer files faster via scp than sftp... This can be selected in the preferences.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;The &lt;a href="http://www.derlien.com/"&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;Disc Inventory X&lt;/span&gt;&lt;/a&gt; program can be used to report on the space usage of types of file, down to the level of individual files.&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;O'Reilly have a &lt;a href="http://oreilly.com/oreilly/author/index.html"&gt;guide for writing books&lt;/a&gt; for them.&lt;/span&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/1976110287415401166-5669658342903508826?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5669658342903508826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5669658342903508826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5669658342903508826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5669658342903508826'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/12/creeping-death.html' title='Creeping Death'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-9047460978179160787</id><published>2008-12-08T20:41:00.000+01:00</published><updated>2008-12-08T20:46:35.264+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='censorship'/><category scheme='http://www.blogger.com/atom/ns#' term='uk'/><title type='text'>Securitron (Police State 2000)</title><content type='html'>&lt;span style="font-family: courier new;"&gt;Who knew that some sort of &lt;a href="http://www.iwf.org.uk/"&gt;inscrutable blacklist of forbidden websites&lt;/a&gt; is maintained, and used, to restrict internet access in the UK? And that it'd be used to ban the image of a &lt;a href="http://en.wikinews.org/wiki/Wikimedia,_IWF_respond_to_block_of_Wikipedia_over_child_pornography_allegations"&gt;heavy metal album cover&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;And that there is a &lt;a href="http://en.wikinews.org/wiki/Main_Page"&gt;news spin off of Wikipedia&lt;/a&gt;?&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-9047460978179160787?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/9047460978179160787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=9047460978179160787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/9047460978179160787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/9047460978179160787'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/12/securitron-police-state-2000.html' title='Securitron (Police State 2000)'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-3169766684409252630</id><published>2008-12-05T13:36:00.000+01:00</published><updated>2008-12-05T13:42:42.572+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dma'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='rename'/><category scheme='http://www.blogger.com/atom/ns#' term='double buffer'/><title type='text'>Dirty Magic</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Move .c files into .cpp files, with the same name prefix&lt;br /&gt;&lt;br /&gt;for i in *.c; do mv $i ${i%".c"}".cpp"; done&lt;br /&gt;&lt;br /&gt;Who would have known &lt;a href="http://www.faqs.org/docs/abs/HTML/"&gt;bash&lt;/a&gt; can manipulate strings?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/power/library/pa-linuxps3-6/"&gt;Double buffering&lt;/a&gt;; A nice article.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-3169766684409252630?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/3169766684409252630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=3169766684409252630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3169766684409252630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3169766684409252630'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/12/dirty-magic.html' title='Dirty Magic'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4886601318770843197</id><published>2008-12-01T22:59:00.000+01:00</published><updated>2008-12-01T23:20:52.938+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>Zero Signal</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The wireless network is now working on Fedora 10 on Cell Linux. Lets start with the &lt;a href="http://kernel.org/pub/linux/kernel/people/geoff/cell/ps3-howto/ps3-wireless-howto.txt"&gt;PS3 Wireless howto&lt;/a&gt; - now out of date, but sufficient to configure wpa_supplicant. Once connected, fire up dhclient, and we are online. This is glossing over the faff to get the connection brought up on boot, see the &lt;a href="http://fedoraforum.org/forum/showthread.php?t=100788"&gt;forums&lt;/a&gt; and random other &lt;a href="http://www-users.york.ac.uk/~mdc1/fedora_wireless.html"&gt;pages&lt;/a&gt; for that.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;I also had to remove the -u option in the /etc/sysconfig/wpa_supplicant file in order to get the service to start on boot. Hmm.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;I should write a decent guide on setup, but its late, I'm tired, and quite sure it would be obsolete in a little time anyway.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The elinks browser is sufficient to read the BBC, albeit in a horrendous default colour scheme.&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/1976110287415401166-4886601318770843197?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4886601318770843197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4886601318770843197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4886601318770843197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4886601318770843197'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/12/zero-signal.html' title='Zero Signal'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-3557843491924527279</id><published>2008-11-27T14:11:00.000+01:00</published><updated>2008-11-27T15:46:41.110+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>Be Quick or Be Dead</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Cell Linux - now I remember why I haven't bothered to administer or install Linux for years. Some documentation on the (many) steps needed for the particular version I have to install is &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://www.ibm.com/developerworks/blogs/page/powerarchitecture?entry=ibomb_ps3_sdk30_fc7"&gt;here&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;. Got to love any system this decade that fails to support WiFi. Once the obsolete and buggy packages get dumped on disk, apply ~1.0GB of patches and updates as detailed in the &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://fedoraproject.org/wiki/YumUpgradeFaq"&gt;yum FAQ&lt;/a&gt;&lt;span style="font-family:courier new;"&gt; on updating and upgrading. The &lt;a href="http://fedoraproject.org/wiki/Docs/Drafts/AGBeta"&gt;admin docs&lt;/a&gt; are a work in progress.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Its fun to try and seperate generic Linux config tweaks from distribution and architecture specific ones. Its like going back to Slackware vs Redhat in 1996....&lt;br /&gt;&lt;br /&gt;On an aside, the IP address of this particular router is &lt;a href="http://192.168.1.254/"&gt;192.168.1.254&lt;/a&gt; for now.&lt;br /&gt;&lt;br /&gt;The by now familiar refrain for Linux is that it all works better in a &lt;a href="http://www.kernel.org/pub/linux/kernel/people/geoff/cell/"&gt;more recent version&lt;/a&gt;. This may be true. Got to love a website that is simply the directory layout of the FTP server over HTTP.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-3557843491924527279?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/3557843491924527279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=3557843491924527279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3557843491924527279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/3557843491924527279'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/11/be-quick-or-be-dead.html' title='Be Quick or Be Dead'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-7154448592822690508</id><published>2008-11-14T22:14:00.000+01:00</published><updated>2008-11-14T22:34:02.556+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cell'/><title type='text'>Here to Stay</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The annoyance of the automated windows updater can be dealt with, via equally obscure command line or GUI means; this was detailed on the &lt;a href="http://www.codinghorror.com/blog/archives/000294.html"&gt;coding horror blog&lt;/a&gt;. To make it go away until the next reboot, use&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;net stop "automatic updates"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A random link of interest is &lt;a href="http://www.wetellstories.co.uk/"&gt;We Tell Stories&lt;/a&gt;. Pretty computations can be &lt;a href="http://graphics.cs.uiuc.edu/svn/kcrane/web/project_qjulia.html"&gt;found here&lt;/a&gt; on the GPU for rendering 3d Julia fractals and here on Cell for &lt;a href="http://www.cag.csail.mit.edu/ps3/blue-steel.shtml"&gt;real time ray tracing&lt;/a&gt;. A book on Cell programming, with &lt;a href="http://www.informit.com/store/product.aspx?isbn=0136008860"&gt;example source code&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&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/1976110287415401166-7154448592822690508?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/7154448592822690508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=7154448592822690508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/7154448592822690508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/7154448592822690508'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/11/here-to-stay.html' title='Here to Stay'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-4206906475238274590</id><published>2008-11-10T21:05:00.000+01:00</published><updated>2008-11-10T21:55:26.327+01:00</updated><title type='text'>Next in Line</title><content type='html'>&lt;span style="font-family: courier new;"&gt;So, next in the line of things found while researching how to drive bits of software.  First up, &lt;a href="http://www.network-theory.co.uk/"&gt;network theory&lt;/a&gt; have online (and printed) manuals for free software, most relevantly &lt;a href="http://www.network-theory.co.uk/docs/gccintro/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GCC&lt;/span&gt;&lt;/a&gt; with its monstrous collection of options. Redhat have some more docs on &lt;a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/gcc/invoking-gcc.html"&gt;options&lt;/a&gt; and &lt;a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/gcc/warning-options.html"&gt;warnings&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;On the realms of useful tools there is &lt;a href="http://www.getpaint.net/index.html"&gt;paint.net&lt;/a&gt; and &lt;a href="http://www.7-zip.org/"&gt;7zip&lt;/a&gt; for mucking around with test images, screen shots, and (un)archiving on Windows.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1976110287415401166-4206906475238274590?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/4206906475238274590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=4206906475238274590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4206906475238274590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/4206906475238274590'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/11/next-in-line.html' title='Next in Line'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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-1976110287415401166.post-5017588188865146284</id><published>2008-10-26T21:06:00.000+01:00</published><updated>2008-10-26T21:51:14.129+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='online book'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ebook'/><title type='text'>Stranger in a Strange Land</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;This blog will accumulate links to things I find to be of interest, and wish to find again. Entry titles will be chosen on whim from a music collection dominated by heavy metal; people reading this blog (who?) should know this follows on from a web page detailing random experiences of linux usage, now available from archive.org &lt;a href="http://web.archive.org/web/20021214223102/http://home.clara.net/george.russell/linuxtale.html"&gt;here&lt;/a&gt; and &lt;a href="http://web.archive.org/web/20070316150426/http://users.uk.freebsd.org/~grrussel/"&gt;here&lt;/a&gt;. This title is brought to you by Iron Maiden and emigration to Sweden...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;a href="http://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; is an interesting experiment in collaborative question and answering for programming topics, which may in time become a useful repository of knowledge related to programming. &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;It is intended to replace the traditional collection of physical books of programming knowledge - but freely accessible online books seem likely to be a more focussed, comprehensive source for certain programming topics - the GNU project links to &lt;/span&gt;&lt;a href="http://www.gnu.org/doc/other-free-books.html"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;3rd party online books&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; with liberal licenses, including some of the O'Reilly &lt;/span&gt;&lt;a href="http://oreilly.com/openbook/"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;open book&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; online books.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;While its early days yet, I note there is far more content, somewhat better organised, in the&lt;/span&gt;&lt;a href="http://oreilly.com/catalog/make3/book/index.csp"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; book on GNU make&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt; than in the corresponding collection of questions tagged &lt;/span&gt;&lt;a href="http://stackoverflow.com/questions/tagged/make"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;'make' &lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;on Stack Overflow. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&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/1976110287415401166-5017588188865146284?l=grrussel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grrussel.blogspot.com/feeds/5017588188865146284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1976110287415401166&amp;postID=5017588188865146284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5017588188865146284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1976110287415401166/posts/default/5017588188865146284'/><link rel='alternate' type='text/html' href='http://grrussel.blogspot.com/2008/10/stranger-in-strange-land.html' title='Stranger in a Strange Land'/><author><name>grrussel</name><uri>http://www.blogger.com/profile/01160260393758181336</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>
