<?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-36363111</id><updated>2012-02-01T10:29:14.448-08:00</updated><category term='ruby'/><category term='ruby jit ruby2c ruby2cext ruby2cextension'/><category term='mingw'/><category term='msys'/><title type='text'>Programming gone awry</title><subtitle type='html'>Thoughts and tutorials on programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36363111.post-7956252459418539651</id><published>2011-08-23T09:47:00.001-07:00</published><updated>2011-08-23T09:47:35.714-07:00</updated><title type='text'>ruby tempfile windows woe</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;test.rb:3:in `delete': Permission denied - C:/Users/packrd/AppData/Local/Temp/abc20110823-4296-kao0jx-0 (Errno::EACCES)&lt;/div&gt;&lt;div&gt;        from test.rb:3&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;when doing File.delete tempfile_instance.path&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;work-around:&lt;/div&gt;&lt;div&gt;do&lt;/div&gt;&lt;div&gt;tempfile_instance.delete instead&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-7956252459418539651?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7956252459418539651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7956252459418539651' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7956252459418539651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7956252459418539651'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2011/08/ruby-tempfile-windows-woe.html' title='ruby tempfile windows woe'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-1915393026132100765</id><published>2011-08-22T16:10:00.000-07:00</published><updated>2011-08-22T16:12:27.217-07:00</updated><title type='text'>ffmpeg mingw msys build woe</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;libavfilter/asrc_abuffer.c: In function 'init':&lt;/div&gt;&lt;div&gt;libavfilter/asrc_abuffer.c:259:5: error: implicit declaration of function 'strtok_r'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;meant "you need to install the pthreads lib" (I think)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-1915393026132100765?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/1915393026132100765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=1915393026132100765' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1915393026132100765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1915393026132100765'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2011/08/ffmpeg-mingw-msys-build-woe.html' title='ffmpeg mingw msys build woe'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5821690507143928756</id><published>2011-08-19T10:37:00.001-07:00</published><updated>2011-08-19T10:37:51.161-07:00</updated><title type='text'>ffmpeg woe</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c:\dev\ruby\virtual-audio-output-sniffer&amp;gt;ffmpeg -f dshow -i audio="virtual-audio-capturer" captured_audio.mp3&lt;/div&gt;&lt;div&gt;FFmpeg version SVN-r23418, Copyright (c) 2000-2010 the FFmpeg developers&lt;/div&gt;&lt;div&gt;  built on Jun  2 2010 04:12:01 with gcc 4.4.2&lt;/div&gt;&lt;div&gt;  configuration: --target-os=mingw32 --enable-runtime-cpudetect --enable-avisynth --enable-gpl --enable-version3 --enable-bzlib --enable-libgsm --enable-libfaad --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid --enable-libschroedinger --enable-libx264 --extra-libs='-lx264 -lpthread' --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-librtmp --extra-libs='-lrtmp -lssl -lcrypto -lws2_32 -lgdi32 -lwinmm -lcrypt32 -lz' --arch=x86 --cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc' --enable-memalign-hack&lt;/div&gt;&lt;div&gt;  libavutil     50.16. 0 / 50.16. 0&lt;/div&gt;&lt;div&gt;  libavcodec    52.72. 1 / 52.72. 1&lt;/div&gt;&lt;div&gt;  libavformat   52.67. 0 / 52.67. 0&lt;/div&gt;&lt;div&gt;  libavdevice   52. 2. 0 / 52. 2. 0&lt;/div&gt;&lt;div&gt;  libavfilter    1.20. 0 /  1.20. 0&lt;/div&gt;&lt;div&gt;  libswscale     0.11. 0 /  0.11. 0&lt;/div&gt;&lt;div&gt;Unknown input format: 'dshow'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c:\dev\ruby\virtual-audio-output-sniffer&amp;gt;whichr ffmpeg&lt;/div&gt;&lt;div&gt;higher in the list is executed first&lt;/div&gt;&lt;div&gt;G:\Program Files (x86)\ImageMagick-6.7.1-Q16\ffmpeg.exe&lt;/div&gt;&lt;div&gt;c:\installs\ffmpeg.bat&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c:\dev\ruby\virtual-audio-output-sniffer&amp;gt;whichr ffplay&lt;/div&gt;&lt;div&gt;higher in the list is executed first&lt;/div&gt;&lt;div&gt;c:\installs\ffplay.bat&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;meant "I was accidentally using a different version of ffmpeg--that bundled with imagemagick--instead of the one that does support installed in a different location"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5821690507143928756?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5821690507143928756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5821690507143928756' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5821690507143928756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5821690507143928756'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2011/08/ffmpeg-woe.html' title='ffmpeg woe'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-9087686542297186441</id><published>2011-08-19T06:42:00.000-07:00</published><updated>2011-08-19T06:48:37.445-07:00</updated><title type='text'>mac os x enumerate windows like windows' EnumDesktopWindows</title><content type='html'>looks like in order to do it you need to either turn on "universal access" then use either applescript or the access API's in C to do it, or use some internal coregraphics private api's (in C).  So for java users, its either ffi or JNA or the like, or call out to an applescript script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-9087686542297186441?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/9087686542297186441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=9087686542297186441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/9087686542297186441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/9087686542297186441'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2011/08/mac-os-x-enumerate-windows-like-windows.html' title='mac os x enumerate windows like windows&apos; EnumDesktopWindows'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-8501138117951433602</id><published>2011-02-21T15:58:00.000-08:00</published><updated>2011-02-21T15:58:38.641-08:00</updated><title type='text'>Google Chrome Blog: Faster than a speeding rabbit: speed, sync, and settings</title><content type='html'>&lt;a href="http://chrome.blogspot.com/2011/02/faster-than-speeding-rabbit-speed-sync.html"&gt;Google Chrome Blog: Faster than a speeding rabbit: speed, sync, and settings&lt;/a&gt;&lt;div&gt;But didn't it also add background apps? That's what will really give the speedup, I think.&lt;/div&gt;&lt;div&gt;sponsored by:&lt;/div&gt;&lt;div&gt;&lt;a href="http://freemusicformormons.com"&gt;free lds ward choir music&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-8501138117951433602?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://chrome.blogspot.com/2011/02/faster-than-speeding-rabbit-speed-sync.html' title='Google Chrome Blog: Faster than a speeding rabbit: speed, sync, and settings'/><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/8501138117951433602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=8501138117951433602' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8501138117951433602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8501138117951433602'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2011/02/google-chrome-blog-faster-than-speeding.html' title='Google Chrome Blog: Faster than a speeding rabbit: speed, sync, and settings'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-5562576337156612174</id><published>2009-12-03T07:23:00.000-08:00</published><updated>2009-12-03T07:24:55.861-08:00</updated><title type='text'>beyond clearplay</title><content type='html'>I've posted several comments on what I envision for the future of user content editable media.&lt;div&gt;http://programming-gone-awry.blogspot.com/2009/08/how-to-proxy-to-port-when-your-firewall.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://betterlogic.com/roger/?p=1043"&gt;http://betterlogic.com/roger/?p=1043&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well the comments here are even more!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5562576337156612174?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5562576337156612174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5562576337156612174' title='46 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5562576337156612174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5562576337156612174'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/12/beyond-clearplay.html' title='beyond clearplay'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>46</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-9027467409503388419</id><published>2009-09-23T16:22:00.001-07:00</published><updated>2009-09-23T16:22:04.333-07:00</updated><title type='text'>Pictures wrong sometimes?</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Anybody else notice that pictures are sometimes...just wrong?&lt;br/&gt;&lt;br/&gt;ping!&lt;/p&gt;in reference to: &lt;a href='http://news.google.com/'&gt;Google News&lt;/a&gt; (&lt;a href='http://www.google.com/sidewiki/entry/114986415216705060872/id/PrebIdAb4b4-GRnIsW2j8zljoQg'&gt;view on Google Sidewiki&lt;/a&gt;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-9027467409503388419?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/9027467409503388419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=9027467409503388419' title='246 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/9027467409503388419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/9027467409503388419'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/09/pictures-wrong-sometimes.html' title='Pictures wrong sometimes?'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/11616218501182408463</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>246</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-2929261355522839547</id><published>2009-09-23T16:18:00.001-07:00</published><updated>2009-09-23T16:18:04.612-07:00</updated><title type='text'>Benefits of Firefox</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;The benefits of firefox:&lt;br/&gt;&lt;br/&gt;the adblock plus plugin [plus myriad other plugins]&lt;br/&gt;Reasonably speedy, well supported.&lt;br/&gt;&lt;br/&gt;Drawbacks:&lt;br/&gt;&lt;br/&gt;It takes up more RAM than Chrome (i.e. slower for older machines), renders, for me, slightly slower than Safari/Chrome [in windows, at least].&lt;br/&gt;&lt;br/&gt;Written only to be able to say I was the first to sidewiki FF :)&lt;/p&gt;in reference to: &lt;a href='http://www.mozilla.com/en-US/firefox/personal.html'&gt;Firefox Browser | Free ways to customize your Internet&lt;/a&gt; (&lt;a href='http://www.google.com/sidewiki/entry/114986415216705060872/id/MP9zlIpcdl54pofS7gVaSixjcDA'&gt;view on Google Sidewiki&lt;/a&gt;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-2929261355522839547?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/2929261355522839547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=2929261355522839547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2929261355522839547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2929261355522839547'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/09/benefits-of-firefox.html' title='Benefits of Firefox'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/11616218501182408463</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-36363111.post-5736273083576846791</id><published>2009-09-23T16:15:00.001-07:00</published><updated>2009-09-23T16:15:22.352-07:00</updated><title type='text'>Beautiful</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Google Earth is a beautiful thing--the stand alone app is smoother than the google maps web version.&lt;br/&gt;&lt;br/&gt;[written just to be able to say I wrote the first sidewiki for google earth]&lt;/p&gt;in reference to: &lt;a href='http://earth.google.com/'&gt;Google Earth&lt;/a&gt; (&lt;a href='http://www.google.com/sidewiki/entry/114986415216705060872/id/BeqTGjRtohKohcOkN41i0UnwQAc'&gt;view on Google Sidewiki&lt;/a&gt;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5736273083576846791?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5736273083576846791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5736273083576846791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5736273083576846791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5736273083576846791'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/09/beautiful.html' title='Beautiful'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/11616218501182408463</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-36363111.post-7553799015013158909</id><published>2009-08-05T04:53:00.000-07:00</published><updated>2009-08-05T05:02:04.964-07:00</updated><title type='text'>how to compile ruby with increased garbage size</title><content type='html'>You may have noticed when you're running long-ish rails processes in windows that it sometimes pauses briefly, then continues on its merry way.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have, at least.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem can be attributed to the garbage collector.&lt;/div&gt;&lt;div&gt;Ex: with one operation large_table.find(:all).each{||...}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would receive something like 10 0.10 second pauses before it finished--increasing my overall time by at least 25%&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tweaking the malloc limit [the amount it will grow before doing a GC limit] changed that to something like 2 0.25 second pauses--which caused things to speedup considerably.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How:&lt;/div&gt;&lt;div&gt;install msysgit&lt;/div&gt;&lt;div&gt;c:&gt; git://github.com/oneclick/rubyinstaller.git&lt;/div&gt;&lt;div&gt;cd rubyinstaller&lt;/div&gt;&lt;div&gt;set CCFLAGS=-DGC_MALLOC_LIMIT=60000000&lt;/div&gt;&lt;div&gt;rake # build ruby 1.8 in sandbox/ruby18_mingw&lt;/div&gt;&lt;div&gt;rake ruby19 # build ruby 1.9 in sandbox/ruby19_mingw&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Installers hopefully coming soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another option for speeding things up is building with GCC 4.4 instead of the 3.4.5 currently used.&lt;/div&gt;&lt;div&gt;Here's a download that does that for the adventurous:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://all.faithpromotingstories.org/ruby_distros/ruby19_mingw_44.tgz&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, watch this area as I'll post various ruby executables with different (faster) compiler options, and experimental like using tcmalloc, etc.&lt;/div&gt;&lt;div&gt;Thanks and good luck to all your windows+ruby users (like myself) out there!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also much thanks to Luis and the one click group for making it possible to use these cool tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;=r&lt;span class="Apple-tab-span" style="white-space:pre"&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/36363111-7553799015013158909?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7553799015013158909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7553799015013158909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7553799015013158909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7553799015013158909'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/08/how-to-compile-ruby-with-increased.html' title='how to compile ruby with increased garbage size'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5823308358909892595</id><published>2009-08-03T13:27:00.000-07:00</published><updated>2009-08-03T13:28:06.455-07:00</updated><title type='text'>how to proxy to a port when your firewall blocks that port [using mod_proxy instead]</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div style="background-image: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-position: initial initial; "&gt;&lt;p&gt;For me, it was getting some external server to forward all requests on to that port.&lt;/p&gt;&lt;p&gt;I realize you can use ssh -Rport:host:port as well (through some other server), however ssh tunnelling was at times interrupted and didn't have a retry or restart, it seemed, at least that I knew of.&lt;/p&gt;&lt;p&gt;Anyway the final forward was:&lt;/p&gt;&lt;p&gt;1) create new subdomain that will forward it on.&lt;/p&gt;&lt;p&gt;2) edit apache's conf [apache.conf in my example] to forward things on&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;/virtualhost&gt;&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;virtualhost&gt;&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;proxy&gt;&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;Order deny,allow&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;Allow from all&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;/proxy&gt;&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;ServerName audio-mp3.ibiblio.org.8000.doachristianturndaily.info&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;ProxyPass / http://audio-mp3.ibiblio.org:8000/&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;DocumentRoot /home/rdp/www/faithpromotingstories.org&lt;/div&gt;&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: 48px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;/virtualhost&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;    &lt;virtualhost&gt;&lt;/p&gt;&lt;p&gt;&lt;proxy&gt;&lt;/p&gt;&lt;p&gt;    Order deny,allow&lt;/p&gt;&lt;p&gt;    Allow from all&lt;/p&gt;&lt;p&gt;&lt;/proxy&gt;&lt;/p&gt;&lt;p&gt;       ServerName audio-mp3.ibiblio.org.8000.doachristianturndaily.info&lt;/p&gt;&lt;p&gt;       ProxyPass / http://audio-mp3.ibiblio.org:8000/&lt;/p&gt;&lt;p&gt;    &lt;/virtualhost&gt;&lt;/p&gt;&lt;p&gt;3) install forwarders:&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; line-height: 24px; font-size: 14px; letter-spacing: -1px; "&gt; sudo a2enmod proxy&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; line-height: 24px; font-size: 14px; letter-spacing: -1px; "&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="line-height: 22px; font-size: 13px; "&gt;sudo  a2enmod proxy_http&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; line-height: 24px; font-size: 14px; letter-spacing: -1px; "&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="line-height: 22px; font-size: 13px; "&gt;4) restart apache&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, sans-serif; line-height: 24px; font-size: 14px; letter-spacing: -1px; "&gt;&lt;span class="Apple-style-span" mce_fixed="1" style="line-height: 22px; font-size: 13px; "&gt;5) enjoy the tunes [in my case].&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5823308358909892595?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5823308358909892595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5823308358909892595' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5823308358909892595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5823308358909892595'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/08/how-to-proxy-to-port-when-your-firewall.html' title='how to proxy to a port when your firewall blocks that port [using mod_proxy instead]'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-127749352401920960</id><published>2009-08-01T07:43:00.000-07:00</published><updated>2009-08-01T07:44:37.787-07:00</updated><title type='text'>how to setup a remote git repository using ssh</title><content type='html'>Finding the normal instructions slightly lacking on how to create a brand-new, empty git repository via SSH for a central location, here they are:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ ssh myserver.com&lt;br /&gt;Welcome to myserver.com!&lt;br /&gt;$ mkdir /var/git/myapp.git &amp;amp;&amp;amp; cd /var/git/myapp.git&lt;br /&gt;$ git --bare init&lt;br /&gt;Initialized empty Git repository in /var/git/myapp.git&lt;br /&gt;$ exit&lt;br /&gt;Bye!&lt;br /&gt;&lt;br /&gt;Add the remote repository to your existing local git repo and push:&lt;br /&gt;&lt;br /&gt;$ cd ~/Sites&lt;br /&gt;$ mkdir myapp&lt;br /&gt;$ git init&lt;br /&gt;$ git remote add origin ssh://myserver.com/var/git/myapp.git&lt;br /&gt;$ touch README&lt;br /&gt;$ git add README&lt;br /&gt;$ git commit -m "initial commit"&lt;br /&gt;$ git push origin master&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-127749352401920960?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/127749352401920960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=127749352401920960' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/127749352401920960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/127749352401920960'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/08/how-to-setup-remote-git-repository.html' title='how to setup a remote git repository using ssh'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-6075368512645629576</id><published>2009-07-23T08:43:00.000-07:00</published><updated>2009-07-23T08:51:33.951-07:00</updated><title type='text'>How to compile using visual studio for ruby</title><content type='html'>Extension building in ruby on windows is a little complicated, because the "mainstream" one click installer uses mingw for its build, which is based on a rather outdated msvcrt.dll [version 6 I believe--the one used by Visual Studio 6, no longer in production].&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is, however, according to Charlie Savage, possible to mix code built from newer compilers into it [1].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;Mixing runtime libraries&lt;br /&gt;========================&lt;br /&gt;&lt;br /&gt;The most obvious criticism of this plan is that it will lead to mixing of microsoft runtime c libraries.  From my experience this works as long as extension developers follow the rules described here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms235460(VS.80).aspx" target="_blank" style="color: rgb(42, 93, 176); "&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ms235460(VS.80).&lt;wbr&gt;aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To be more concrete, this boils down to two simple rules:&lt;br /&gt;&lt;br /&gt;* If you call ALLOC or ALLOC_N, use xfree and not free&lt;br /&gt;* Don't call sprintf or printf in an extension, instead use rb_f_sprintf/rb_vsprintf/rb_&lt;wbr&gt;io_printf&lt;br /&gt;&lt;br /&gt;If an extension violate these two rules then its obvious, a segmentation fault happens.  Thus these bugs are easy to find and easy to fix.&lt;br /&gt;&lt;br /&gt;Since VC6 is thankfully no longer available, supporting msvc absolutely, positively requires mixing c runtime libraries and therefore extension writers must follow these two simple rules.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;(Note that if you use rb_x_malloc and its siblings, they will use the right free call for you).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;i.e. (summarizing) "If it uses ALLOC, xfree, doesn't use STDIN/STDOUT, it can link against any runtime it wants" [though nobu did note there may be a problem with errno's differing, probably not a problem.]&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That being said it would appear that you need to also avoid the /MD compiler directive in MS compilers, as well [2].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, users may need to download a redistributable for the version of C compiler you used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, it should work.&lt;/div&gt;&lt;div&gt;Note that for distributing gems, you can use Luis Lavena's "rake compiler" to build your binaries for you [3].&lt;/div&gt;&lt;div&gt;Good luck!&lt;/div&gt;&lt;div&gt;[1] http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/22727&lt;/div&gt;&lt;div&gt;[2] http://groups.google.com/group/thin-ruby/browse_thread/thread/c15b2472eb97c2ba/ea7c5127035d193b&lt;/div&gt;&lt;div&gt;[3] http://github.com/luislavena/rake-compiler/tree/master ex: &lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;ext.cross_platform = ['i386-mswin32', 'i386-mingw32']&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&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/36363111-6075368512645629576?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/6075368512645629576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=6075368512645629576' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6075368512645629576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6075368512645629576'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/07/how-to-compile-using-visual-studio-for.html' title='How to compile using visual studio for ruby'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/11616218501182408463</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-4413526830623281670</id><published>2009-06-23T10:02:00.000-07:00</published><updated>2009-06-23T12:20:44.830-07:00</updated><title type='text'>rdocs for all gems from rubyforge</title><content type='html'>I am pleased to announce the release of my site that has the rdocs for [almost] all existing rubygems.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;Because it's convenient to have all rdocs installed in a single known place to be able to browse/search them.   Because it's a central repository, too, it eliminates the need to install local rdocs for gems, which (when you turn it off) means you install local gems *much* more quickly.  It makes me happy every time I do a "gem install" :)&lt;br /&gt;It also eliminates the need for running a local gem server.&lt;br /&gt;&lt;br /&gt;These gems' rdocs are all in the hanna theme, which provides for method search and an easy on the eyes layout.  Though darkfish is also quite pretty, it isn't as easy to read because of font contrast.&lt;br /&gt;&lt;br /&gt;Check it out!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://allgems.faithpromotingstories.org/gems"&gt;http://allgems.faithpromotingstories.org/gems&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;core docs: &lt;a href="http://coredocs.faithpromotingstories.org/"&gt;http://coredocs.faithpromotingstories.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.github.com/rogerdpack/all_gems_rdocs/suggestions"&gt;Feedback&lt;/a&gt; welcome.&lt;br /&gt;&lt;br /&gt;Note also that they're using a temporarily subdomain url.  If anybody is interested  and could help me with a subdomain of a more ruby related url that would be cool.  I hate to fork over that $10 a year for another domain you know me :)&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;=r&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-4413526830623281670?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/4413526830623281670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=4413526830623281670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4413526830623281670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4413526830623281670'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/06/rdocs-for-all-gems-from-rubyforge.html' title='rdocs for all gems from rubyforge'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/11616218501182408463</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-36363111.post-2260663505860146166</id><published>2009-06-18T08:59:00.000-07:00</published><updated>2009-09-26T08:40:59.622-07:00</updated><title type='text'>How to save MUCH RAM when running rails (linode/slicehost) and mod_rails passenger</title><content type='html'>If you're using mod_rails on a VPS with little RAM [ex: linode, slicehost], then there are a few things you'll want to do to save RAM when running rails.  Here are a few things I did to allow me to run multiple rails processes on one linode slice.&lt;br /&gt;&lt;br /&gt;1: Install a 32-bit OS&lt;br /&gt;&lt;br /&gt;Ruby uses twice as much RAM if you're in 64-bit than in 32-bit [and most other things do, too].  Use 32-bit! [linode has options to do this easily].&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Savings: 50%&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;2: Don't use as many processes per rails app.&lt;/div&gt;&lt;div&gt;If you have low volume sites (and most of us do), then don't create too many processes per app.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;PassengerMaxInstancesPerApp 1&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3: If you are only using one process per rails app, then turn off the spawner process--it does you no help.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;By default mod_rails spins up one "spawner process" and then "x" "actual working processes" The spawner thread just preloads rails so that it can be shared amongst instances of that app.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my case, from top (~1 app process):&lt;br /&gt;&lt;pre&gt;total mem, RSS, ... name&lt;br /&gt;&lt;br /&gt;117m  49m 3156 S    0 13.8   0:00.93 ruby # spawner 49M&lt;br /&gt;171m  89m 2240 S    0 24.7   0:00.61 ruby # instance 89m&lt;/pre&gt;&lt;br /&gt;fix:&lt;br /&gt;use &lt;/div&gt;&lt;div&gt;RailsSpawnMethod conservative&lt;/div&gt;&lt;div&gt;in your apache2.conf&lt;br /&gt;&lt;br /&gt;this results in [slower startup times and]&lt;br /&gt;&lt;pre&gt;RAM, RSS...process name&lt;br /&gt;143m  72m 3480 S    0 20.1   0:01.69 ruby&lt;br /&gt;&lt;/pre&gt;Savings: (assuming you only want one process per rails app): 49m (on 64-bit).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're worried about slow startup speed, you can set your rails processes to never expire[4].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4: If you use multiple processes per rails app, then set your spawner process to die quickly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Though I haven't used it, theoretically the spawner process will be killed eventually--so set it to die quickly, to free up that expensive RAM[5].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You could do something like &lt;/div&gt;&lt;div&gt;ab -n10 -c10 http://yourhost&lt;/div&gt;&lt;div&gt; to ensure it fires up all the processes from the spawner, then the spawner is free to die quickly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you don't use REE, then don't use the spawner at all--little savings there RAM wise.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a suspicion that even with REE, you don't see much RAM savings, but having not used it, I can't say for certain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4: use the MBARI patches to MRI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Originally, one of my rails apps started at 89MB RSS then grew in total RAM usage by ~ 8MB per request, linearly.  Odd? Yes. Fix: I recompiled ruby using the MBARI patches to 1.8.6/1.8.7.  It now starts at 60MB RSS and stays there solid [1].  That's right--it stays solid at LESS than an unpatched ruby starts at.  And with higher speeds [6].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also avoid the ruby that comes bundled with ubuntu--though it uses the same amount of RAM as normal, it is compiled with pthreads enabled so it is slower.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using 1.9 might also yield RAM savings like this.  Haven't tried it though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Savings: unknown since it appeared to growing forever (a lot though).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall Result:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With these suggestions in place, I can now run 3 or 4 rails apps on my "cheap grade" 360MB linode. Much better than the 1 I was able to originally.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Other potential tricks:&lt;br /&gt;&lt;br /&gt;use nginx instead of apache--faster, much better RAM usage.  Potential savings:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Tweak mysql to use less memory [3]&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Possibly tweak GC settings (37signals', evan weaver [2], etc.) though this appears to not increase speed too much over the MBARI patches [6].&lt;br /&gt;&lt;br /&gt;refs:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/phusion-passenger/browse_thread/thread/df1fc1073dbef38"&gt;http://groups.google.com/group/phusion-passenger/browse_thread/thread/df1fc1073dbef38&lt;/a&gt;&lt;br /&gt;[1] &lt;a href="http://www.ruby-forum.com/topic/170608#new"&gt;http://www.ruby-forum.com/topic/170608#new&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://blog.evanweaver.com/articles/2009/04/09/ruby-gc-tuning/"&gt;http://blog.evanweaver.com/articles/2009/04/09/ruby-gc-tuning/&lt;/a&gt;&lt;br /&gt;[3] http://articles.slicehost.com/2007/9/11/ubuntu-feisty-mysql-and-ror&lt;/div&gt;&lt;div&gt;[4] http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime&lt;/div&gt;&lt;div&gt;[5] http://www.modrails.com/documentation/Users%20guide%20Apache.html#_railsframeworkspawneridletime_lt_integer_gt&lt;/div&gt;&lt;div&gt;[6] http://www.nabble.com/-ruby-core:19846---Bug--744--memory-leak-in-callcc--to20447794.html#a21140287&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-2260663505860146166?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/2260663505860146166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=2260663505860146166' title='45 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2260663505860146166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2260663505860146166'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/06/how-to-save-much-ram-when-running-rails.html' title='How to save MUCH RAM when running rails (linode/slicehost) and mod_rails passenger'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-349284497682343253</id><published>2009-06-04T11:16:00.000-07:00</published><updated>2009-06-04T16:23:04.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby jit ruby2c ruby2cext ruby2cextension'/><title type='text'>state of the art in ruby compilation/JIT</title><content type='html'>There are several levels that one can take compilation of Ruby code to.&lt;br /&gt;Ex: yarv compiles ruby code to yarv internal byte code.  But there are other levels, which we hope to exploit in order to make a faster ruby.  We'll discuss some different style of compilation (JIT and otherwise).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a few existent libraries that do translation.&lt;br /&gt;&lt;br /&gt;ruby2c: translates code like&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def fact(n)&lt;br /&gt; n*(fact(n-1))&lt;br /&gt;end&lt;br /&gt;fact(1000) # it needs this as a hint to know what type the fact method takes&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;to standard C (at least in all examples I've seen)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int fact(int n) {&lt;br /&gt;  return(n*fact(n-1));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So their ansiC aspect is the most hard-core "I don't want this to lany of this in Ruby at all after it's done."&lt;br /&gt;&lt;br /&gt;pros: fast as can be. cons: see below.&lt;br /&gt;&lt;br /&gt;rubyinline, interestingly, wraps something like&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"int fact(int n) {&lt;br /&gt;  return(n*fact(n-1));&lt;br /&gt;}"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;with converters to call and return to and from Ruby, so you can call fact(1000) in your ruby code and it will work. &lt;br /&gt;&lt;br /&gt;One interesting idea would be to pipe the output of ruby2c to rubyinline.  Alas, ruby2c seems somewhat broken currently.&lt;br /&gt;&lt;br /&gt;cons: you have to write in C.  That is not what most of us want to ever have to do again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think where this perspectives fall apart is that they're not as flexible/dynamic as normal Ruby. It might have trouble with:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a = [/abc/, 'abc', 33]&lt;br /&gt;b = 33&lt;br /&gt;a.each{|thing| puts thing.inspect; b+= 1} # dynamic arrays probably not well handled, as well as ruby internal methods like 'inspect', blocks, etc.&lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;br /&gt;a = [/abc/, /def/]&lt;br /&gt;a.each{|reg| if "abc" =~ reg then puts 'yes'; end}  # regex probably isn't supported, a lot of the rest of the stdlib&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then again, I haven't tried it since ruby2c doesn't even work for me.&lt;br /&gt;&lt;br /&gt;pros: as fast as fast can be.  also comes with a dependency walker so that it can "surmise" which classes of methods you'll be passing in, then it programs for just those.&lt;br /&gt;cons: doesn't handle all ruby (AFAIK).&lt;br /&gt;Maybe in its current state they're useful for doing mathematically intense operations? Dunno.  Rubyinline is a little more useful, but requires writing in C.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ruby2Cext takes a "ruby to ruby C" approach.  Its original aim was to produce ruby compatible code equivalents in C.&lt;br /&gt;&lt;br /&gt;i.e. the ruby:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def go&lt;br /&gt; 3&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;translates to&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;VALUE go_c(VALUE self) {&lt;br /&gt; return INT2NUM(3); // uses all ruby types&lt;br /&gt;}&lt;br /&gt;void init_File {&lt;br /&gt; rb_method_register(someClass, "go", go_c, 0);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It also translates blocks and everything to its ruby c equivalents (using ruby c syntax) .  For 1.8 that was said to yield a 2X speed increase.&lt;br /&gt;&lt;br /&gt;They also added some plugins, one gives you the ability to "freeze" certain C method calls, i.e.&lt;br /&gt;if it encounters String#strip it always calls straight to the C function for String#strip [thus avoids doing a ruby method call]&lt;br /&gt;&lt;br /&gt;ex:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def go&lt;br /&gt; "".strip&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Generates code that looks up String#strip and "saves off" the function's exact location [who would want to override String#strip, right?].&lt;br /&gt;&lt;br /&gt;Thus the above ruby is converted roughtly to something like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;void *string_strip_function = Qundef;&lt;br /&gt;&lt;br /&gt;VALUE go_c(VALUE self) {&lt;br /&gt;  VALUE str = rb_str_new("");&lt;br /&gt;  return strip(str);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;VALUE strip(VALUE fromThis) {&lt;br /&gt;   switch(GET_TYPE(fromThis)) {&lt;br /&gt;     case STRING :&lt;br /&gt;         return *(string_strip_function)(fromThis);// this avoids rb_funcall to lookup then call strip&lt;br /&gt;     else:&lt;br /&gt; return rb_funcall3(rb_intern("strip"), fromThis);&lt;br /&gt;   }&lt;br /&gt;}    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void init_File {&lt;br /&gt; rb_method_register(someClass, "go", go_c, 0);&lt;br /&gt; strip_function = lookup_internal_ruby_c_method(rbString, "strip");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So you can see this avoids a few rb_funcalls to built-in methods, and is still almost entirely ruby compatible.  This results in "up to 5x speedup" or so it says.&lt;br /&gt;&lt;br /&gt;drawbacks to rb2cext: 1.9 compiles ruby to bytecode--perhaps rb2xext won't have as much a gain if used with a 1.9 VM, since it already does some of this work, though profiling would help evaluate this.&lt;br /&gt;&lt;br /&gt;All the above examples were static compilers.  Run once before runtime [or at eval time].&lt;br /&gt;&lt;br /&gt;Another class would be JIT dynamic compilers.  Jruby is really the only one that has anything like that currently, and yet somehow it doesn't yet seem to be quite as fast as 1.9 without a JIT [1][4].&lt;br /&gt;There exists a "demo" JIT using ruby2c, as well [2].  It optimizes a single method, but at least shows you how you could do something more dynamic.&lt;br /&gt;&lt;br /&gt;So where can/should the future of ruby interpreters lie?  There's lots of things you could try.&lt;br /&gt;A few are making it tighter in C, or making it more JIT'y, or making it moree "dependency walking" so it can pre-optimize the paths that are guaranteed to only have a certain class passed in to them.&lt;br /&gt;&lt;br /&gt;re: making it tighter in C&lt;br /&gt;&lt;br /&gt;One drawback currently to ruby2cext is that if you define&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class A&lt;br /&gt; def this_method&lt;br /&gt;    calls_this_other_method&lt;br /&gt; end&lt;br /&gt; def calls_this_other_method&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;it will translate this (loosely) as&lt;br /&gt;&lt;br /&gt;VALUE calls_this_other_method = rb_intern("calls_this_other_method"); // cache the symbol away&lt;br /&gt;VALUE this_method_c(VALUE this) {&lt;br /&gt;  check_right_parameters();&lt;br /&gt;  return rb_funcall(calls_this_other_method);&lt;br /&gt;end&lt;br /&gt;VALUE calls_this_c(VALUE this) {&lt;br /&gt;  check_right_parameters();&lt;br /&gt;  return Qnil;&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that it did not optimize the call between this_method and calls_this_other_method, but required ruby do rb_funcall.  This is the perfectly valid ruby way--you can override calls_this_other_method later and it will work with the new method, but in most cases after a warm up phase methods aren't overridden, so the rb_funcall could be avoided by calling the method directly.  So we could hard code the calls to the other known ruby (now C) methods.&lt;br /&gt;&lt;br /&gt;If we were to assume that class method definitions were "frozen" after a specific setup phase, then a few more optimizations would be available, the above being one of them.  [3]&lt;br /&gt;In other words, rb2cext could become more C-y, with direct calls from method to method.&lt;br /&gt;&lt;br /&gt;Interestingly, ruby2c also has a RubytoRubyC component (I never saw any examples of it posted, and couldn't get it to run) which might attempt something similar.&lt;br /&gt;&lt;br /&gt;At the same time, ruby2c could become more ruby-y, i.e. integrating with the stdlib [i.e. if you know a string is being passed in, and the command is&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def go a&lt;br /&gt; a &lt;&lt; '3'&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;then you could call rb_str_concat directly.  &lt;br /&gt;&lt;br /&gt;So there are two ways of action: one to make ruby to c translators more c-y, one to make them more ruby-y. Static compile time type analysis might make it so you can guarantee an object's class and optimize for it.  That's an option.&lt;br /&gt;&lt;br /&gt;Another option would be to create something more JIT'y.  Profile to discover the "hot paths", then write C that optimizes for the common path (then you could make direct C calls outside your current class, too).&lt;br /&gt;&lt;br /&gt;So what to do? Thoughts?&lt;br /&gt;-=r&lt;br /&gt;&lt;br /&gt;[1] http://blog.pluron.com/2009/05/ruby-19-performance.html&lt;br /&gt;[2] http://github.com/seattlerb/zenhacks/tree/master&lt;br /&gt;[3] For instance you could c-ify every ruby method in existence, with direct calls to any C methods within the same class (since we assume they all exist now). Ludicrous allows for this: http://betterlogic.com/roger/?p=1534 though I haven't experimented speed-wise.&lt;br /&gt;[4] http://groups.google.com/group/ruby-benchmark-suite/browse_thread/thread/f56b4335cfd3ec57/c7babfb676d71450?lnk=gst&amp;q=patch+gc#c7babfb676d71450 shows how 1.9 with a GC patch can be competitive to jruby.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-349284497682343253?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/349284497682343253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=349284497682343253' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/349284497682343253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/349284497682343253'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/06/state-of-art-in-ruby-compilationjit.html' title='state of the art in ruby compilation/JIT'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-3858559153729951755</id><published>2009-05-30T06:19:00.000-07:00</published><updated>2009-07-30T10:25:52.318-07:00</updated><title type='text'>how to install sqlite3 from source on ruby mingw (1.8 or 1.9)</title><content type='html'>here they are, inspired by a question from Charles Roper &lt;div&gt;&lt;div&gt;1) install wget or curl in path&lt;/div&gt;&lt;div&gt;2) install unzip.exe (http://gnuwin32.sourceforge.net/packages/unzip.htm -- binaries link) in path, then put \bin in your path.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) install rake compiler [gem install rake-compiler]&lt;/div&gt;&lt;div&gt; 3.1) add the bin folder of GCC from the devkit to your  path [i.e. if you installed the straight devkit [1] then "set path=C:\ruby\devkit\gcc\3.4.5\bin;%PATH%"]&lt;br /&gt;3.5) install msysgit, then  git clone git://github.com/luislavena/sqlite3-ruby.git, then cd into it.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) rake vendor:sqlite3&lt;/div&gt;&lt;div&gt;5) rake native gem&lt;/div&gt;&lt;div&gt;6) gem install pkg/xxx.gem&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[1] &lt;a href="http://programming-gone-awry.blogspot.com/2009/05/ruby-19-one-click-installer.html"&gt;http://programming-gone-awry.blogspot.com/2009/05/ruby-19-one-click-installer.html&lt;/a&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/36363111-3858559153729951755?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3858559153729951755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3858559153729951755' title='59 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3858559153729951755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3858559153729951755'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/how-to-install-sqlite3-binaries-on-ruby.html' title='how to install sqlite3 from source on ruby mingw (1.8 or 1.9)'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>59</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-6590660516202466803</id><published>2009-05-30T06:16:00.001-07:00</published><updated>2009-07-30T10:27:15.923-07:00</updated><title type='text'>mingw ruby 1.9/1.8 how to install mysql from source</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;inspired by a question from JD[1], here's the instructions:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: 12px; "&gt;&lt;pre&gt;Looks like the only way I know of is (assuming ruby 1.9 with devkit [2]) &lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;1) download mysql 5.0.x windows "without installer" &lt;/pre&gt;&lt;pre&gt;2) unzip, put/rename it to c:\mysql &lt;/pre&gt;&lt;pre&gt;3) download mysql 2.8.1 binary from tmtm &lt;a href="http://www.tmtm.org/en/mysql/ruby/" rel="nofollow" style="color: rgb(160, 0, 0); text-decoration: none; "&gt;http://www.tmtm.org/en/mysql/ruby/&lt;/a&gt; &lt;/pre&gt;&lt;pre&gt;4) edit extconf so that anywhere it says mswin32 it now says mswin32|mingw  &lt;/pre&gt;&lt;pre&gt;4a) make sure that mysql's bin are *not* in your path [might not be ncessary, but just in case] &lt;/pre&gt;&lt;pre&gt;5) run ruby extconf.rb -- --with-mysql-include=c:/mysql/include --with-mysql-lib=c:/mysql/lib/opt &lt;/pre&gt;&lt;pre&gt;6) run make, then run make install &lt;/pre&gt;&lt;pre&gt;7) make sure libmysql.dll is in your path or in current directory 8) run ruby -e 'require "mysql"' -- should work.&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;[1] &lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; white-space: normal; "&gt;&lt;a href="http://www.ruby-forum.com/topic/188199#new" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;http://www.ruby-forum.com/topic/188199#new&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;[2] &lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; white-space: normal; "&gt;&lt;a href="http://programming-gone-awry.blogspot.com/2009/05/ruby-19-one-click-installer.html" style="color: rgb(85, 136, 170); text-decoration: none; "&gt;http://programming-gone-awry.blogspot.com/2009/05/ruby-19-one-click-installer.html&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Lucida Grande';font-size:12px;"&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/36363111-6590660516202466803?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/6590660516202466803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=6590660516202466803' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6590660516202466803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6590660516202466803'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/mingw-ruby-1918-how-to-install-mysql.html' title='mingw ruby 1.9/1.8 how to install mysql from source'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-112472151544392174</id><published>2009-05-27T05:18:00.001-07:00</published><updated>2009-05-27T05:22:19.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='msys'/><category scheme='http://www.blogger.com/atom/ns#' term='mingw'/><title type='text'>how to setup a complete mingw msys build environment for ruby (including dependencies)</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; background-position: initial initial; "&gt;&lt;p&gt;Here's how: use Luis Lavena's pre built scripts to set it up for you (in this case to set it up for building a complete version of ruby), then tie in to the msys and mgit that it created for you.&lt;/p&gt;&lt;p&gt;steps:&lt;/p&gt;&lt;p&gt;download rubyinstaller's source,  git clone git://github.com/oneclick/rubyinstaller.git&lt;/p&gt;&lt;p&gt;then build a version, "any version" of ruby with it, a la&lt;/p&gt;&lt;p&gt;cd rubyinstaller&lt;/p&gt;&lt;p&gt;rake # wait about 30 minutes :)&lt;/p&gt;&lt;p&gt;now set your path to "use" its newly downloaded, loaded with dependencies, versions of mingw and msys, a la build_env.bat contents (in my case):&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p id=""&gt;set PATH=D:\dev\downloads\rubyinstaller\sandbox\mingw\bin;D:\dev\downloads\rubyinstaller\sandbox\msys\bin;D:\dev\downloads\rubyinstaller\sandbox\msys\usr\local\bin;%PATH%&lt;/p&gt;&lt;div id=""&gt;now you can go anywhere and build anything (other versions of ruby, whatever), &lt;/div&gt;&lt;div&gt;example of building ruby trunk:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;D:\dev\downloads\ruby_trunk&gt;build_env&lt;/div&gt;&lt;div&gt;&lt;div id=""&gt;D:\dev\downloads\ruby_trunk&gt;sh&lt;/div&gt;&lt;div id=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=""&gt;Melissa@BLACKY /d/dev/downloads/ruby_trunk&lt;/div&gt;&lt;div id=""&gt;$ autoconf &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/div&gt;&lt;div id=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=""&gt;much thanks to luis for setting this up, and the mingw/msys team.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&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/36363111-112472151544392174?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/112472151544392174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=112472151544392174' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/112472151544392174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/112472151544392174'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/how-to-setup-complete-mingw-msys-build.html' title='how to setup a complete mingw msys build environment for ruby (including dependencies)'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-398511931303078030</id><published>2009-05-18T13:20:00.000-07:00</published><updated>2009-05-18T13:25:05.857-07:00</updated><title type='text'>e text editor on virtualbox howto</title><content type='html'>&lt;div&gt;howto compile e text editor on ubuntu, virtualbox:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;install ubuntu on a virtualbox guest.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we need to create some extra swap file (more RAM, basically).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;create a new disk (say 2G) -- you'll probably want it fixed size.&lt;/div&gt;&lt;div&gt;add it as secondary master to the image (shutdown guest-&gt; settings -&gt; hard drives).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;add it as swap now&lt;/div&gt;&lt;div&gt;[in ubuntu]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;sudo mkswap /dev/sdc&lt;/div&gt;&lt;div&gt;edit /etc/fstab&lt;/div&gt;&lt;div&gt;add in this line:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/dev/sdc&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;none&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;swap&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;sw&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;check top to see the old swap size&lt;/div&gt;&lt;div&gt;reboot&lt;/div&gt;&lt;div&gt;check top -- your swap size should have increased considerly, now it should compile with default settings.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-398511931303078030?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/398511931303078030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=398511931303078030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/398511931303078030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/398511931303078030'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/e-text-editor-on-virtualbox-howto.html' title='e text editor on virtualbox howto'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-1205095692821686892</id><published>2009-05-18T13:19:00.001-07:00</published><updated>2009-05-19T11:20:38.717-07:00</updated><title type='text'>e text editor on andlinux howto</title><content type='html'>&lt;span class="Apple-style-span"   style="  ;font-family:'Times New Roman';font-size:medium;"&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; background-position: initial initial; "&gt;&lt;p&gt;finally got the e text editor to work on andlinux! sweet!&lt;/p&gt;&lt;p&gt;how to:&lt;/p&gt;&lt;p&gt;1) install andLinux, choose coFS so you can see *all* your windows files.&lt;/p&gt;&lt;p&gt;2) resize the default partition to &gt; 2GB default [1]&lt;/p&gt;&lt;p&gt;&lt;a href="http://ext2resize.sourceforge.net/download.html"&gt;http://ext2resize.sourceforge.net/download.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;  extract c:\program files\andlinux\toporesize.zip&lt;/p&gt;&lt;p&gt;shutdown andlinux&lt;/p&gt;&lt;p&gt;now run (for 10GB)&lt;/p&gt;&lt;p&gt; &lt;span class="Apple-style-span"  style=" line-height: 14px; white-space: pre; font-family:monospace;"&gt;C:\Program Files\andLinux\ImageResizeTool\toporesize-0.7.1&gt;tfile ..\..\Drives\base.vdi 10000&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; white-space: pre;"&gt;now restart andlinux&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; white-space: pre;"&gt;and within it:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: serif; line-height: 19px; white-space: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;p&gt;sudo apt-get install build-essential -y # install gcc&lt;/p&gt;&lt;div&gt;now download ext2resize within linux &lt;a href="http://ext2resize.sourceforge.net/download.html"&gt;http://ext2resize.sourceforge.net/download.html&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;install ext2resize, then run &lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; overflow-x: auto; overflow-y: auto; max-height: 800px; "&gt;    sudo ext2online /dev/cobd0 &lt;/pre&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style=" ;font-family:sans-serif;"&gt;&lt;a name="The_most_reliable_way_to_enlarge_the_root_partition" id="The_most_reliable_way_to_enlarge_the_root_partition" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;/a&gt;&lt;h2  style="background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: normal; margin-top: 20px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); overflow-x: hidden; overflow-y: hidden;  background-position: initial initial; font-size:19px;"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;/span&gt;&lt;p&gt;3) "give yourself more swap ram" [at least 1GB for sure 2GB swap file works well] [2]&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;span class="Apple-style-span"   style="  line-height: normal; font-family:sans-serif;font-size:medium;"&gt;&lt;table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="font-family: Courier, 'Courier New', sans-serif; font-size: 11px; color: rgb(0, 102, 0); background-color: rgb(250, 250, 250); border-top-color: rgb(209, 215, 220); border-right-color: rgb(209, 215, 220); border-bottom-color: rgb(209, 215, 220); border-left-color: rgb(209, 215, 220); border-width: initial; border-style: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; "&gt;root@andLinux:~# swapoff /dev/cobd1&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="postbody"  style=" line-height: 18px; font-size:12px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="Apple-style-span"   style="  line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:sans-serif;font-size:medium;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;table width="90%" cellspacing="1" cellpadding="3" border="0" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="font-family: Courier, 'Courier New', sans-serif; font-size: 11px; color: rgb(0, 102, 0); background-color: rgb(250, 250, 250); border-top-color: rgb(209, 215, 220); border-right-color: rgb(209, 215, 220); border-bottom-color: rgb(209, 215, 220); border-left-color: rgb(209, 215, 220); border-width: initial; border-style: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; "&gt;c:\Program Files\andLinux\Drives&gt;type swap.vdi &gt;&gt;swap.vdi2 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="postbody"  style=" line-height: 18px; font-size:12px;"&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;several times&lt;/p&gt;&lt;p&gt;or in ruby:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;a = File.new 'swap.vdi2', 'w'&lt;/p&gt;&lt;p&gt;a.seek 2e9&lt;/p&gt;&lt;p&gt;a.write 'a'&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;4) checkout the git repository&lt;/p&gt;&lt;p&gt;sudo apt-get install git-core&lt;/p&gt;&lt;p&gt;git clone git://github.com/etexteditor/e.git&lt;/p&gt;&lt;p&gt;apply this patch:&lt;/p&gt;&lt;p&gt;&lt;a href="http://e-texteditor.com/forum/viewtopic.php?p=13046#13046" mce_href="http://e-texteditor.com/forum/viewtopic.php?p=13046#13046"&gt;http://e-texteditor.com/forum/viewtopic.php?p=13046#13046&lt;/a&gt;&lt;/p&gt;&lt;p&gt;install some unlisted dependencies&lt;/p&gt;&lt;p&gt;sudo apt-get install build-essential curl  libgtk2.0-dev&lt;/p&gt;&lt;p&gt;then follow the directions within linux-notes.txt&lt;/p&gt;&lt;p&gt;Then follow the directions under the section "it all comes crashing down"&lt;/p&gt;&lt;p&gt;&lt;a href="http://fixnum.org/blog/2009/e_on_fedora" mce_href="http://fixnum.org/blog/2009/e_on_fedora"&gt;http://fixnum.org/blog/2009/e_on_fedora&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And you *might* have a working andlinux e text editor.&lt;/p&gt;&lt;p&gt;[1] &lt;a href="http://www.andlinux.org/forum/viewtopic.php?p=1581#1581" mce_href="http://www.andlinux.org/forum/viewtopic.php?p=1581#1581"&gt;http://www.andlinux.org/forum/viewtopic.php?p=1581#1581&lt;/a&gt;&lt;/p&gt;&lt;p&gt;[2] &lt;a href="http://www.andlinux.org/forum/viewtopic.php?p=956&amp;amp;sid=ebe8efafb867fe03519fcf166dbe104e" mce_href="http://www.andlinux.org/forum/viewtopic.php?p=956&amp;amp;sid=ebe8efafb867fe03519fcf166dbe104e"&gt;http://www.andlinux.org/forum/viewtopic.php?p=956&amp;amp;sid=ebe8efafb867fe03519fcf166dbe104e&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-1205095692821686892?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/1205095692821686892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=1205095692821686892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1205095692821686892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1205095692821686892'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/e-text-editor-on-andlinux-howto.html' title='e text editor on andlinux howto'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-4380981761565826187</id><published>2009-05-08T19:44:00.001-07:00</published><updated>2009-07-08T09:38:09.941-07:00</updated><title type='text'>ruby 1.9 one click installer</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; background-position: initial initial; "&gt;&lt;p&gt;Here's how to get a pretty easy working 1.9/1.8.6 mingw (from my post to ruby installers list)&lt;/p&gt;&lt;p&gt;for the files at&lt;/p&gt;&lt;p&gt;&lt;a href="http://rubyinstaller.org/downloads/" mce_href="http://rubyinstaller.org/downloads/"&gt;http://rubyinstaller.org/downloads/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;quick install instructions (1.8.6, 1.9):&lt;/p&gt;&lt;p&gt;install a ruby one click installer to c:\Ruby&lt;/p&gt;&lt;p&gt;afterward, &lt;br /&gt;c:\Ruby now has&lt;br /&gt;  bin\&lt;br /&gt;  lib\&lt;br /&gt;  share\&lt;/p&gt;&lt;p&gt;Now unzip the devkit.7z and move its contents into the same folder&lt;br /&gt;(devkit is a bundled up mingw GCC+msys).&lt;/p&gt;&lt;p&gt;i.e.&lt;/p&gt;&lt;p&gt;c:\Ruby now has&lt;br /&gt;  bin\&lt;br /&gt;  lib\&lt;br /&gt;  share\ &lt;br /&gt; devkit\&lt;br /&gt;INSTALL.txt&lt;/p&gt;&lt;p&gt;(note: the message "This folder already contains a folder named bin"&lt;br /&gt;is expected--choose "yes" to confirm folder replace).&lt;/p&gt;&lt;p&gt;next add c:\Ruby\bin to the beginning of your path and enjoy the power&lt;br /&gt;of a faster ruby with a compiler.&lt;/p&gt;&lt;p&gt;==More Detailed instructions==&lt;/p&gt;&lt;p&gt;Same as above--however, if you want to use a folder other than c:\Ruby&lt;br /&gt;then please change devkit/msys/1.0.11/etc/fstab to properly point to&lt;br /&gt;the right directories for mingw and /usr/local&lt;/p&gt;&lt;p&gt;How to add ruby\bin to your path:&lt;br /&gt;either do this on the command line thus:&lt;br /&gt;set PATH=c:\ruby-1.9.1-p0-i386-mingw32\bin;%PATH%&lt;/p&gt;&lt;p&gt;or change the PATH variable within my computer -&gt; properties -&gt;&lt;br /&gt;advanced -&gt; environment variables (add it to the front of path within&lt;br /&gt;"system variables").&lt;/p&gt;&lt;p&gt;== How to determine success ==&lt;br /&gt;If successful you should get an output like (for 1.8):&lt;/p&gt;&lt;p&gt;C:\&gt;ruby -v&lt;br /&gt;ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]&lt;/p&gt;&lt;p&gt;C:\&gt;gcc -v&lt;br /&gt;Reading specs from C:/Ruby/devkit/gcc/3.4.5/bin/../lib/gcc/mingw32/3.4.5/specs&lt;br /&gt;...&lt;/p&gt;&lt;p&gt;and installing binary gems should work properly:&lt;br /&gt;C:\&gt;gem install json&lt;br /&gt;Building native extensions.  This could take a while...&lt;br /&gt;Successfully installed json &lt;br /&gt;...&lt;/p&gt;&lt;p&gt;If a gem fails to compile (ex: because of lack of headers), you can at &lt;br /&gt;times get away with doing a&lt;br /&gt;gem install gemname --platform=mswin32&lt;br /&gt;this installs the msvc binaries for it.  They are *typically* compatible.  It's safer, however, to download the headers and compile it locally, and submit your process upstream so they can release a quality mingw binary :)&lt;/p&gt;&lt;p&gt;Enjoy!&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-4380981761565826187?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/4380981761565826187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=4380981761565826187' title='128 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4380981761565826187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4380981761565826187'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/05/ruby-19-one-click-installer.html' title='ruby 1.9 one click installer'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>128</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-601419247448942983</id><published>2009-04-13T13:48:00.000-07:00</published><updated>2009-04-13T13:51:02.521-07:00</updated><title type='text'>how to create a new git repository (fresh one)</title><content type='html'>&lt;a href="http://toolmantim.com/articles/setting_up_a_new_remote_git_repository"&gt;http://toolmantim.com/articles/setting_up_a_new_remote_git_repository&lt;/a&gt; finally something that works :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-601419247448942983?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/601419247448942983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=601419247448942983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/601419247448942983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/601419247448942983'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2009/04/how-to-create-new-git-repository-fresh.html' title='how to create a new git repository (fresh one)'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-4216615827879798683</id><published>2008-11-22T20:16:00.001-08:00</published><updated>2008-11-22T20:17:44.651-08:00</updated><title type='text'>how to nice processes [decrease priority] using ruby, in windows</title><content type='html'>garnered from a few entries:&lt;br /&gt;&lt;br /&gt;download 'nice.exe' for windows:&lt;br /&gt;http://members.ozemail.com.au/~markhurd/SomeProgs.html&lt;br /&gt;then&lt;br /&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;loop {&lt;br /&gt;  procs = WIN32OLE.connect("winmgmts:\\\\.")&lt;br /&gt;  procs.InstancesOf("win32_process").each do |p|&lt;br /&gt;    if p.name =~ /ruby/&lt;br /&gt;      command = ".\\nice -i -p #{p.processid}" # i for idle&lt;br /&gt;      print "running #{command}\n"&lt;br /&gt;      system(command)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  sleep 1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;in that directory will always force your ruby's to idle.&lt;br /&gt;&lt;br /&gt;sorry it's not all ruby :)&lt;br /&gt;references:&lt;br /&gt;http://ask.slashdot.org/article.pl?sid=06/09/03/2231244&lt;br /&gt;http://groups.google.com/group/ruby-talk-google/browse_thread/thread/6b6d1a0909932f2b?pli=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-4216615827879798683?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/4216615827879798683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=4216615827879798683' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4216615827879798683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4216615827879798683'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/how-to-nice-processes-decrease-priority.html' title='how to nice processes [decrease priority] using ruby, in windows'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-3958622846528084822</id><published>2008-11-22T19:45:00.000-08:00</published><updated>2008-11-22T19:47:15.109-08:00</updated><title type='text'>rails error report</title><content type='html'>C:/dev/bridal/vendor/rails/railties/lib/commands/dbconsole.rb:47:in `exec': No such file or directory - mysql.exe&lt;br /&gt;(Errno::ENOENT)&lt;br /&gt;        from C:/dev/bridal/vendor/rails/railties/lib/commands/dbconsole.rb:47&lt;br /&gt;        from c:/ruby18/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'&lt;br /&gt;        from c:/ruby18/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'&lt;br /&gt;        from script/dbconsole:3&lt;br /&gt;&lt;br /&gt;meant "you need to go into dbconsole and force it to 'exec' the full path name of mysql.exe, not just 'mysql.exe'"&lt;br /&gt;&lt;br /&gt;also if it says &lt;br /&gt;Couldn't find database client: mysql. Check your $PATH and try again.&lt;br /&gt;but mysql IS in your path, no fear, edit dbconsole.rb and add mingw wherever it does  =~ /win32/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3958622846528084822?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3958622846528084822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3958622846528084822' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3958622846528084822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3958622846528084822'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/rails-error-report.html' title='rails error report'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-5230823114582681388</id><published>2008-11-22T19:34:00.000-08:00</published><updated>2008-11-22T19:35:07.723-08:00</updated><title type='text'>hp t43 is very soft quiet</title><content type='html'>So...break open your new ibm T43 and the volume is very low? there's little buttons at the top that [annoyingly] might be making it so. Try it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5230823114582681388?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5230823114582681388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5230823114582681388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5230823114582681388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5230823114582681388'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/hp-t43-is-very-soft-quiet.html' title='hp t43 is very soft quiet'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-7226058718282983435</id><published>2008-11-22T17:23:00.001-08:00</published><updated>2008-11-22T17:23:53.280-08:00</updated><title type='text'>binary executables from gems don't show up in the path with ubuntu</title><content type='html'>nope--they don't for some reason.  No idea where ubuntu's default "apt-get install rubygems1.8" installs it binaries, but it's not in the path.&lt;br /&gt;Fix:&lt;br /&gt;install rubygems from source, then it will install the binaries in the right spot after that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-7226058718282983435?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7226058718282983435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7226058718282983435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7226058718282983435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7226058718282983435'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/binary-executables-from-gems-dont-show.html' title='binary executables from gems don&apos;t show up in the path with ubuntu'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-7968904359133404185</id><published>2008-11-22T17:22:00.000-08:00</published><updated>2008-11-22T17:23:04.169-08:00</updated><title type='text'>rubyforge broken with windows</title><content type='html'>yep--use linux [install a virtualbox, etc. ugh] for this to work, it appears...at least in a friendly way...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-7968904359133404185?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7968904359133404185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7968904359133404185' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7968904359133404185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7968904359133404185'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/rubyforge-broken-with-windows.html' title='rubyforge broken with windows'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-1216424690977190131</id><published>2008-11-22T16:30:00.000-08:00</published><updated>2008-11-22T16:31:00.785-08:00</updated><title type='text'>virtualbox woe</title><content type='html'>click install guest additions does nothing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;might mean "unmount your currently mounted cdrom first!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-1216424690977190131?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/1216424690977190131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=1216424690977190131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1216424690977190131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1216424690977190131'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/11/virtualbox-woe.html' title='virtualbox woe'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-4415870864735650223</id><published>2008-10-27T08:33:00.000-07:00</published><updated>2008-10-27T08:34:51.899-07:00</updated><title type='text'>danger: google chrome browser has capability to “auto-download” and auto-run spyware</title><content type='html'>&lt;a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html"&gt;danger: google chrome browser has capability to “auto-download” and auto-run spyware&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;see http://betterlogic.com/roger/?p=503&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-4415870864735650223?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/4415870864735650223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=4415870864735650223' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4415870864735650223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4415870864735650223'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/10/official-google-blog-fresh-take-on.html' title='danger: google chrome browser has capability to “auto-download” and auto-run spyware'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-2161863931209860416</id><published>2008-03-24T09:24:00.001-07:00</published><updated>2008-03-24T09:25:24.437-07:00</updated><title type='text'>best ruby garbage collector</title><content type='html'>http://izumi.plan99.net/blog/index.php/2008/01/14/making-ruby%E2%80%99s-garbage-collector-copy-on-write-friendly-part-7/&lt;br /&gt;&lt;br /&gt;Has what i would consider the 'best' for its current incantation--which is mark and sweep everything every time.  I would recommend against going for it and instead recommend for a generational one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-2161863931209860416?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/2161863931209860416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=2161863931209860416' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2161863931209860416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2161863931209860416'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2008/03/best-ruby-garbage-collector.html' title='best ruby garbage collector'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3545529257676984362</id><published>2007-06-29T16:13:00.001-07:00</published><updated>2007-06-29T16:13:31.852-07:00</updated><title type='text'>ruby err</title><content type='html'>driver.rb:270:in `startServerAndGoAndStop': private method `doAllPeersWithDelta' called for #&lt;Driver:0xb7959c5c&gt; (NoMethodError)&lt;br /&gt; means "you have an extra end in driver class!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3545529257676984362?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3545529257676984362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3545529257676984362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3545529257676984362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3545529257676984362'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/ruby-err.html' title='ruby err'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3517787975972463315</id><published>2007-06-28T09:53:00.001-07:00</published><updated>2007-06-28T09:53:50.121-07:00</updated><title type='text'>ruby-debug ctrl-c</title><content type='html'>So...you run your ruby app with ruby-debug rdebug and it doesn't catch ctrl-c interrupts anymore?  Do not fear.  Just run rdebug scriptname then 'catch Interrupt' and it will always catch them from then on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3517787975972463315?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3517787975972463315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3517787975972463315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3517787975972463315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3517787975972463315'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/ruby-debug-ctrl-c.html' title='ruby-debug ctrl-c'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5243107938748335124</id><published>2007-06-28T09:34:00.001-07:00</published><updated>2007-06-28T09:34:57.552-07:00</updated><title type='text'>.bashrc doesn't work</title><content type='html'>find that ~/.bashrc isn't getting loaded on login?  Try renaming it ~/.profile (or creating such page and having it do '. ~/.bashrc'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5243107938748335124?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5243107938748335124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5243107938748335124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5243107938748335124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5243107938748335124'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/bashrc-doesnt-work.html' title='.bashrc doesn&apos;t work'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3706414260807195083</id><published>2007-06-27T12:24:00.000-07:00</published><updated>2007-06-27T12:25:55.446-07:00</updated><title type='text'>how to install rmagick to a custom directory (gem)</title><content type='html'>So..you install rmagick as a gem and it goes to the right gemrepository, but that still doesn't work?  I search for RMagick.rb and then added that path to the RUBYLIB path, thus&lt;br /&gt;export RUBYLIB=$RUBYLIB:/home/rdp/i386/gemrepository/gems/rmagick-1.15.7/lib/&lt;br /&gt; (in ~/.bashrc).  Voila&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3706414260807195083?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3706414260807195083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3706414260807195083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3706414260807195083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3706414260807195083'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/how-to-install-rmagick-to-custom.html' title='how to install rmagick to a custom directory (gem)'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3467407606674614269</id><published>2007-06-26T12:17:00.000-07:00</published><updated>2007-06-26T12:18:33.756-07:00</updated><title type='text'>how to convert you putty key to linux</title><content type='html'>So...you use putty agent to login to your linux box, and now you wish you could use the same key within linux?  Not a problem.  right click on the private key, choose edit, then choose "export" save the file somewhere (anywhere), then eventually copy it over to your ~/.ssh/identity file [may need to change permissions on said file so that it's not readable by anyone]. Voila.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3467407606674614269?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3467407606674614269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3467407606674614269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3467407606674614269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3467407606674614269'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/how-to-convert-you-putty-key-to-linux.html' title='how to convert you putty key to linux'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3624940327818741262</id><published>2007-06-25T00:26:00.000-07:00</published><updated>2007-06-25T00:35:35.540-07:00</updated><title type='text'>more install errs</title><content type='html'>get /home/rdp/i386/bin/gem:9:in `require': no such file to load -- rubygems (LoadError)&lt;br /&gt; or&lt;br /&gt;(maybe -- might be prev. post) install gemconfigure.rb /usr/lib/ruby/site_ruby/1.8/&lt;br /&gt;or &lt;br /&gt;no such file to load -- ubygems (LoadError)&lt;br /&gt;then see the faq at http://rubygems.org/read/chapter/15 at the bottom&lt;br /&gt;must do things like &lt;br /&gt;export RUBYLIB=$RUBYLIB:/home/rdp/i386/gemrepository:/home/rdp/i386/usr/lib/ruby/site_ruby/1.8/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3624940327818741262?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3624940327818741262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3624940327818741262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3624940327818741262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3624940327818741262'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/more-install-errs.html' title='more install errs'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-6552955499784174664</id><published>2007-06-25T00:18:00.000-07:00</published><updated>2007-06-25T00:19:10.744-07:00</updated><title type='text'>installing rubygems as non root</title><content type='html'>so...install it and it does this?&lt;br /&gt;rdp@ilab4 ~/downloads/rubygems-0.9.4 $ ruby setup.rb --verbose install&lt;br /&gt;rm -f InstalledFiles&lt;br /&gt;---&gt; bin&lt;br /&gt;mkdir -p /home/rdp/i386/bin&lt;br /&gt;install gem /home/rdp/i386/bin/&lt;br /&gt;install gem_mirror /home/rdp/i386/bin/&lt;br /&gt;install gem_server /home/rdp/i386/bin/&lt;br /&gt;install gemlock /home/rdp/i386/bin/&lt;br /&gt;install gemri /home/rdp/i386/bin/&lt;br /&gt;install gemwhich /home/rdp/i386/bin/&lt;br /&gt;install index_gem_repository.rb /home/rdp/i386/bin/&lt;br /&gt;install update_rubygems /home/rdp/i386/bin/&lt;br /&gt;&lt;--- bin&lt;br /&gt;---&gt; lib&lt;br /&gt;mkdir -p /usr/lib/ruby/site_ruby/1.8&lt;br /&gt;install gemconfigure.rb /usr/lib/ruby/site_ruby/1.8/&lt;br /&gt;setup.rb:633:in `initialize': Permission denied - /usr/lib/ruby/site_ruby/1.8/gemconfigure.r              b (Errno::EACCES)&lt;br /&gt;        from setup.rb:633:in `open'&lt;br /&gt;        from setup.rb:633:in `install'&lt;br /&gt;        from setup.rb:1377:in `install_files'&lt;br /&gt;        from setup.rb:1376:in `each'&lt;br /&gt;        from setup.rb:1376:in `install_files'&lt;br /&gt;        from setup.rb:1350:in `install_dir_lib'&lt;br /&gt;        from setup.rb:1532:in `__send__'&lt;br /&gt;        from setup.rb:1532:in `traverse'&lt;br /&gt;         ... 7 levels...&lt;br /&gt;        from setup.rb:826:in `__send__'&lt;br /&gt;        from setup.rb:826:in `invoke'&lt;br /&gt;        from setup.rb:773:in `invoke'&lt;br /&gt;        from setup.rb:1578&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;try runing ruby setup.rb install --prefix=/path [though it doesn't say this]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-6552955499784174664?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/6552955499784174664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=6552955499784174664' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6552955499784174664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6552955499784174664'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/installing-rubygems-as-non-root.html' title='installing rubygems as non root'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-5714953480559664816</id><published>2007-06-19T09:37:00.000-07:00</published><updated>2007-06-19T09:40:15.982-07:00</updated><title type='text'>parameters in django templates</title><content type='html'>It seems that it may be possible to have parameters within called functions in a django template.  {% url path.to.some_view arg1,arg2,name1=value1 %} (see http://www.djangoproject.com/documentation/templates/). GL!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5714953480559664816?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5714953480559664816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5714953480559664816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5714953480559664816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5714953480559664816'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/parameters-in-django-templates.html' title='parameters in django templates'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-6621313721484485809</id><published>2007-06-07T09:50:00.000-07:00</published><updated>2007-06-07T09:55:36.581-07:00</updated><title type='text'>how to host static files in a django app for development</title><content type='html'>add the following to urls.py (first line optional :)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;if settings.DEBUG: # then serve static files here :)&lt;br /&gt;    urlpatterns += patterns('',&lt;br /&gt;        (r'^static_files/(?P&lt;path&gt;.*)$', 'django.views.static.serve', {'document_root': 'C:/office_in_out/oliver/drb/static_files', 'show_indexes': True}),&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Then you can access /static_files/filename.jpg and it should work.  See the other post for production setup :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a side note, "how to change your django app from development to production" is you go to settings.py and change &lt;code&gt;DEBUG = True&lt;/code&gt; to &lt;code&gt;DEBUG = False&lt;/code&gt;. I'm not sure what to do with TEMPLATE_DEBUG after that :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-6621313721484485809?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/6621313721484485809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=6621313721484485809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6621313721484485809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6621313721484485809'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/how-to-host-static-files-in-django-app.html' title='how to host static files in a django app for development'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-7968461716371362309</id><published>2007-06-06T12:24:00.001-07:00</published><updated>2007-06-06T12:24:53.660-07:00</updated><title type='text'>Django static files, using fcgi</title><content type='html'>On blue host we use fcgi.  So here is how to make static subdirectories work.&lt;br /&gt;Django wants to host static files, for example the admin interface uses static files (hosted at /media/) for its css.&lt;br /&gt;To create these what you will want to do is create create some sym links within your public_html/whatever sub-directory, then instruct apache, in .htaccess, to follow those links.&lt;br /&gt;&lt;br /&gt;Here's an example for my admin media setup.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd public_html/subdomain&lt;br /&gt;&lt;br /&gt; ln -s media /home/wilkboar/checked_out_svn_all/edited_django_repository_files/django/contrib/admin/media&lt;br /&gt;&lt;br /&gt;(media being where ADMIN_MEDIA_PREFIX is set to in settings.py -- defaults to media)&lt;br /&gt;&lt;br /&gt;Then edit .htaccess, add &lt;br /&gt;Options +FollowSymLinks&lt;br /&gt;RewriteRule ^(media/.*)$ - [L]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;media is the same name as the directory, above.&lt;br /&gt;&lt;br /&gt;Repeat for other static files desired.  Should work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-7968461716371362309?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7968461716371362309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7968461716371362309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7968461716371362309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7968461716371362309'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/django-static-files-using-fcgi.html' title='Django static files, using fcgi'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3528645180476306945</id><published>2007-06-06T09:36:00.000-07:00</published><updated>2007-06-06T09:38:15.511-07:00</updated><title type='text'>django strange error</title><content type='html'>so...ever get one of these?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Request Method:  GET&lt;br /&gt;Request URL:  http://localhost:8000/generic_html/traffic_color_definitions.html&lt;br /&gt;Exception Type:  AttributeError&lt;br /&gt;Exception Value:  'str' object has no attribute 'resolve'&lt;br /&gt;Exception Location:  C:\office_in_out\oliver\edited_django_repository_files\django\core\urlresolvers.py in resolve, line 163&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It may be because you add to your urlpatterns, in settings.py, but forget to name it urlpatterns.  Why this sometimes works, and sometimes doesn't, I have no idea :)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    urlpatterns += ('',&lt;br /&gt;        (r'^static_files/(?P&lt;path&gt;.*)$', 'django.views.static.serve', {'document_root': 'C:/office_in_out/oliver/drb/static_files', 'show_indexes': True}),&lt;br /&gt;    )&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This is bad.  it should be patterns('',...&lt;br /&gt;GL!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3528645180476306945?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3528645180476306945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3528645180476306945' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3528645180476306945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3528645180476306945'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/django-strange-error.html' title='django strange error'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-8207013530755134706</id><published>2007-06-04T09:38:00.000-07:00</published><updated>2007-06-04T09:39:23.587-07:00</updated><title type='text'>D&amp;C thought</title><content type='html'>Well it appears there was some confusion about D&amp;C 89 on teh internet, thought I'd put in my $.02...&lt;br /&gt;&lt;br /&gt;Noticed an article of yours at &lt;a href="http://www.johnankerberg.org/Articles/apologetics/AP0501W1.htm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.johnankerberg.org&lt;wbr&gt;/Articles/apologetics/AP0501W1&lt;wbr&gt;.htm &lt;/a&gt; and I thank you for your respectful comments (I am LDS).  As a contemplative addition (something to think about), the reference in v.  7 to "strong drinks" may also be 'pointing back' to v. 5 "wine or strong drinks" which is why it is typically construed to mean alcoholic beverages.  Some people get confused and it's easy to do so.  Keep up the good work! &lt;br /&gt;&lt;span class="sg"&gt;&lt;br /&gt;--&lt;br /&gt;-Roger Pack&lt;br /&gt;"Men are that they might have joy." (2 ne 2:25)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-8207013530755134706?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/8207013530755134706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=8207013530755134706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8207013530755134706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8207013530755134706'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/06/d-thought.html' title='D&amp;C thought'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-7717707930780716383</id><published>2007-01-19T18:26:00.000-08:00</published><updated>2007-01-19T18:31:29.227-08:00</updated><title type='text'>throttling with apache</title><content type='html'>So it appears that there is no "good" throttler for apache 2.x -- mod_cband only allows a max of 123 KB/s or something like that--at least on the LAN, so I think this probably means that it is just too slow for large loads, and I cannot see another good throttler for apache 2.x&lt;br /&gt;&lt;br /&gt;So we go ahead and use apache 1.3.x &lt;br /&gt;Unfortunately this means that when you install apacche 1.3.x you need to install ./configure --enable-module=so (installs mod_so) so that you can THEN compile/use mod_throttle (found at http://www.ivor.it/throttle/)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-7717707930780716383?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/7717707930780716383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=7717707930780716383' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7717707930780716383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/7717707930780716383'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/01/throttling-with-apache.html' title='throttling with apache'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-4825310377719078516</id><published>2007-01-19T11:20:00.000-08:00</published><updated>2007-01-19T11:22:33.446-08:00</updated><title type='text'>how to setup ssh to not prompt with planetlab</title><content type='html'>so with planetlab typically it has these 600 hosts and for each one, the first time you ssh into it, it prompts you if you want to accept that one's identification key.&lt;br /&gt;To get rid of this:&lt;br /&gt;to ~/.ssh/config&lt;br /&gt;add&lt;br /&gt;stricthostkeychecking=no&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;see the docs at "man ssh_config" which was were it was found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-4825310377719078516?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/4825310377719078516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=4825310377719078516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4825310377719078516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/4825310377719078516'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2007/01/how-to-setup-ssh-to-not-prompt-with.html' title='how to setup ssh to not prompt with planetlab'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-6529525261998068626</id><published>2006-12-15T19:39:00.000-08:00</published><updated>2006-12-15T20:47:29.570-08:00</updated><title type='text'>off-center?</title><content type='html'>so...it appears that if your object is "off center" from its center, then its physics are messed up--meaning that edges of your objects might poke right through other objects, etc.--things you wouldn't anticipate. Courious, but overcome-able thankfully--center your objects  [edit mode, "object" menu,  :) transform, obData to center].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-6529525261998068626?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/6529525261998068626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=6529525261998068626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6529525261998068626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/6529525261998068626'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/off-center.html' title='off-center?'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-1538446420604744795</id><published>2006-12-15T18:34:00.000-08:00</published><updated>2006-12-15T18:35:00.795-08:00</updated><title type='text'>errors off by one</title><content type='html'>If you get an error message in blender, it says six, but error's on five, so subtract one. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-1538446420604744795?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/1538446420604744795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=1538446420604744795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1538446420604744795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1538446420604744795'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/errors-off-by-one.html' title='errors off by one'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-2426102323932274034</id><published>2006-12-12T16:09:00.000-08:00</published><updated>2006-12-12T16:11:57.563-08:00</updated><title type='text'>ipo's and parenting</title><content type='html'>I believe the best way to get the "dynamic 3d avatar" is to have a "fake person" that is attached to a real (invisible) parent, which parent has dynamics associated with it.&lt;br /&gt;&lt;br /&gt;Also, it appears that you CAN set object arbitrarily in Blender (see the  addObject2.blend example) by using "instantaddobject" and that instantreplacemesh also exists, BTW.  Then you can change it more easily on the fly.  (call "getlastcreated object" [?] immediately after calling that).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-2426102323932274034?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/2426102323932274034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=2426102323932274034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2426102323932274034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2426102323932274034'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/ipos-and-parenting.html' title='ipo&apos;s and parenting'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-660043031258181452</id><published>2006-12-07T16:57:00.000-08:00</published><updated>2006-12-07T17:08:47.554-08:00</updated><title type='text'>ipo's versus frames</title><content type='html'>It appears that sometimes frames are "dropped" for whatever reason (the "framedout" message, perhaps?) and when it does not show the frame IPO's don't advance.  So this throws off timing a little if you rely on IPO's finishing on time, but hey :-)  Now we know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-660043031258181452?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/660043031258181452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=660043031258181452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/660043031258181452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/660043031258181452'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/ipos-versus-frames.html' title='ipo&apos;s versus frames'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5563881417336734804</id><published>2006-12-06T11:19:00.001-08:00</published><updated>2006-12-06T11:19:54.482-08:00</updated><title type='text'>how to flip normals/invert them</title><content type='html'>go to edit mode (intuitively enough) and then w, invert&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5563881417336734804?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5563881417336734804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5563881417336734804' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5563881417336734804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5563881417336734804'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/how-to-flip-normalsinvert-them.html' title='how to flip normals/invert them'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-5102214428147200984</id><published>2006-12-05T15:44:00.000-08:00</published><updated>2006-12-05T15:49:11.904-08:00</updated><title type='text'>how to do buttons in blender, and also how to set object property names</title><content type='html'>So--the mouse left guy fires TWICE--once when you click down, once wuen you click up.  To check for this in the script run "sensor.isPositive()" or something like that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You CAN add things to objects on the fly "getOwner().abc = 3" BUT these are reset if the scene is reset (or hard changed, I presume).  With scene freezes I'm not sure what happens (!)&lt;br /&gt;&lt;br /&gt;So life is good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5102214428147200984?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5102214428147200984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5102214428147200984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5102214428147200984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5102214428147200984'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/how-to-do-buttons-in-blender-and-also.html' title='how to do buttons in blender, and also how to set object property names'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5735081359958671564</id><published>2006-12-05T15:42:00.001-08:00</published><updated>2006-12-05T15:42:29.258-08:00</updated><title type='text'>how to get blender to not choke when you check for a variable that doesn't exist</title><content type='html'>try:&lt;br /&gt;  print GameLogic.bbc == ""&lt;br /&gt;except AttributeError:&lt;br /&gt;  print "bad!"&lt;br /&gt;print "done"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5735081359958671564?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5735081359958671564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5735081359958671564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5735081359958671564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5735081359958671564'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/how-to-get-blender-to-not-choke-when.html' title='how to get blender to not choke when you check for a variable that doesn&apos;t exist'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-3396226935585900419</id><published>2006-12-04T12:26:00.000-08:00</published><updated>2006-12-04T12:28:37.952-08:00</updated><title type='text'>text boxes</title><content type='html'>It would seem that "text" objects don't appear in the blender game engine. It would appear that you can create a "more intense" one, however. http://download.blender.org/documentation/NaN_docs/BlenderGameReference/bitmaptext.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3396226935585900419?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3396226935585900419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3396226935585900419' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3396226935585900419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3396226935585900419'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/text-boxes.html' title='text boxes'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-1926660022928881239</id><published>2006-12-02T14:29:00.000-08:00</published><updated>2006-12-02T14:30:43.638-08:00</updated><title type='text'>empty's bounce</title><content type='html'>So...make an empty, turn it into an actor, and make it dynamic and...voila! Empty's bounce!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-1926660022928881239?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/1926660022928881239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=1926660022928881239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1926660022928881239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/1926660022928881239'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/emptys-bounce.html' title='empty&apos;s bounce'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-8386524147761999861</id><published>2006-12-01T10:37:00.002-08:00</published><updated>2006-12-01T10:39:13.836-08:00</updated><title type='text'>How to edit this blog</title><content type='html'>apparently you have to go to www.blogspot.com, then click on "blogger homepage" then click on "go to something beta" and THEN you can add a post. Intense :8&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-8386524147761999861?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/8386524147761999861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=8386524147761999861' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8386524147761999861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8386524147761999861'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/how-to-edit-this-blog.html' title='How to edit this blog'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-8782653092535467484</id><published>2006-12-01T10:37:00.001-08:00</published><updated>2006-12-01T10:37:27.732-08:00</updated><title type='text'>how to unparent in blender</title><content type='html'>alt-p&lt;br /&gt;Thanks to jdpf for this tip!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-8782653092535467484?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/8782653092535467484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=8782653092535467484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8782653092535467484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/8782653092535467484'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/12/how-to-unparent-in-blender.html' title='how to unparent in blender'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-5699744173424511607</id><published>2006-11-17T12:57:00.001-08:00</published><updated>2006-11-17T12:57:48.879-08:00</updated><title type='text'>Replace Mesh</title><content type='html'>So replacing the mesh for an empty makes Blender crash.&lt;br /&gt;&lt;br /&gt;Constistently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-5699744173424511607?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/5699744173424511607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=5699744173424511607' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5699744173424511607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/5699744173424511607'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/replace-mesh.html' title='Replace Mesh'/><author><name>Jake Biesinger</name><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-36363111.post-3872944265634703455</id><published>2006-11-17T12:33:00.000-08:00</published><updated>2006-11-17T12:43:47.369-08:00</updated><title type='text'>Merging converging</title><content type='html'>Well, this is officially my first blog post ever.  I feel like Captain Picard discovering a new galaxy...&lt;br /&gt;&lt;br /&gt;So file merging in Blender isn't everything we want it to be.  I went ahead and separated our two main scenes into two separate files, then created a new file with the two scenes merged using File-&gt;Append.&lt;br /&gt;Good News:  When a scene is deleted, its library goes with it.  This means that the merge didn't cause any library/object conflicts (we may see some if the same objects are used in multiple scenes).&lt;br /&gt;Bad News:  Actuators that move between scenes break when you separate the scenes.  If a given scene doesn't exist, the variable is clobbered in the actor pane (i.e., SCE: Navigation goes blank because it can't see the scene Navigation).&lt;br /&gt;Possible workarounds:&lt;br /&gt;    -Fix it every time we merge, or&lt;br /&gt;    -instead of deleting the scene we aren't touching, have a total of three copies of the same file.  Two are the working copies of the two scenes we will be working on, the third is a manually merged version.  To do this merge, we'd create a new blender file and append the two scenes from the other two files.  But no, this would still lack the second scene at some point, so that doesn't work.  hmmm.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-3872944265634703455?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/3872944265634703455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=3872944265634703455' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3872944265634703455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/3872944265634703455'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/merging-converging.html' title='Merging converging'/><author><name>Jake Biesinger</name><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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-2734307898595613182</id><published>2006-11-15T17:53:00.000-08:00</published><updated>2006-11-15T17:58:29.367-08:00</updated><title type='text'>can't rotate</title><content type='html'>Can't rotate anything in blender? It stands still? one of those little buttons is the culprit.   The triple dot with the arrow underneath.  Uncheck it and you are set :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-2734307898595613182?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/2734307898595613182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=2734307898595613182' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2734307898595613182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/2734307898595613182'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/cant-rotate.html' title='can&apos;t rotate'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116344952834379977</id><published>2006-11-13T12:24:00.000-08:00</published><updated>2006-11-15T17:52:34.220-08:00</updated><title type='text'>blank panels</title><content type='html'>so say you click on the 'pac man'  logic button, or the texture button, and nothing ever appears at the bottom of your screen.  Do not fear: go to "Panels" menu and choose  "View all" (or hit home).  They will magically reappear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116344952834379977?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116344952834379977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116344952834379977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116344952834379977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116344952834379977'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/blank-panels.html' title='blank panels'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116344696931778406</id><published>2006-11-13T11:41:00.000-08:00</published><updated>2006-11-15T17:52:34.149-08:00</updated><title type='text'>all white objects in blender game</title><content type='html'>So...you hit the p button and the objects come up all white?  Check 1) every object has a light in its same layer.  2) are you in 'textured' draw type--the little spikey ball at the bottom of the 3D view, before hitting p?  These may help :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116344696931778406?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116344696931778406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116344696931778406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116344696931778406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116344696931778406'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/all-white-objects-in-blender-game.html' title='all white objects in blender game'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116304177293056970</id><published>2006-11-08T19:08:00.000-08:00</published><updated>2006-11-15T17:52:34.077-08:00</updated><title type='text'>disappearing textures</title><content type='html'>So...in Blender if you create a nicely UV-mapped object, run the game engine, then it just appears as 'dots' -- you may need to change the 'material' on that object to 'texface' -- then you will see your UV-mapped images!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116304177293056970?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116304177293056970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116304177293056970' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116304177293056970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116304177293056970'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/disappearing-textures.html' title='disappearing textures'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116251496531359442</id><published>2006-11-02T16:49:00.000-08:00</published><updated>2006-11-15T17:52:33.981-08:00</updated><title type='text'>apparent blender game engine bugs</title><content type='html'>Seems that messages never make it.&lt;br /&gt;&lt;br /&gt;python is always one line off&lt;br /&gt;&lt;br /&gt;"SystemError: errror return without exception set" in one instance meant naming conflict among actuators.  Also can mean you called "addActiveActuator" on an edit object actuator without the values filled in, or it has the wrong values filled in.&lt;br /&gt;&lt;br /&gt;MouseOverAny apparently does not LIKE clicking on "square" planes.  Very weird. Weird.  It also dislikes accepting clicks over circles.&lt;br /&gt;&lt;br /&gt;seems also that if the starting mesh is a circle then if you change the mesh later it won't help it with 'mouse over' sensors.  Hmm.  It appears that 'mouse over' only uses the 'original' mesh for size, for the mouse over sensor.  Curious.&lt;br /&gt;&lt;br /&gt;Bug with Blender must be that it does not ask you to save, at all, when you exit.  A little frustrating!  I think it might save&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116251496531359442?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116251496531359442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116251496531359442' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116251496531359442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116251496531359442'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/apparent-blender-game-engine-bugs.html' title='apparent blender game engine bugs'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116249791426094816</id><published>2006-11-02T12:04:00.000-08:00</published><updated>2006-12-05T15:47:49.280-08:00</updated><title type='text'>what I wish blender had</title><content type='html'>An 'add object to this object' actuator--let's just add something :-)  Ok maybe that is infeasible, but I could have used it.&lt;br /&gt;&lt;br /&gt;I wish "controller" and "owner" and "import GameLogic" were pre-instantiated, for every script so we don't have to have them at the top of every file.  This would also make some intuitive sense.   It might not be as efficient, tho.  But, then again--we're using python so in reality efficiency is not priority number one, so perhaps it's okay.&lt;br /&gt;&lt;br /&gt;Message Actuator "getMessage" "getsubject"&lt;br /&gt;&lt;br /&gt;"getfiringactuator that fired this script"    (either that or divorce the combination logic from the middle column...)&lt;br /&gt;&lt;br /&gt;Rasterizer could use 'getmouseposition'&lt;br /&gt;&lt;br /&gt;flexible IPO's&lt;br /&gt;&lt;br /&gt;from mouse actuators "get actual x, y given some fixed z" (like translate into blender coords this x, y)&lt;br /&gt;&lt;br /&gt;on creating an object, being able to give it a position&lt;br /&gt;&lt;br /&gt;kx_networkmessageactuator has no ".name" ugh&lt;br /&gt;&lt;br /&gt;I wish there were a way to get to *every* actuator.  It makes sense that it should be possible.  That would make things so much nicer!  Like object.getActuator.  That would be so nice.  Bypass that gui stuff!&lt;br /&gt;&lt;br /&gt;A function "does such and such a mesh exist?"&lt;br /&gt;&lt;br /&gt;IPO should have a bool "am I still firing?"  "am I live?"  also each object should have a bool "am I under the influence of some IPO right now?" (since it can only have one at a time), and perhaps a method "stop whatever other ipo you have! " so that it can be replaced with others.&lt;br /&gt;&lt;br /&gt;Also a "get current frame number" call would be nice, of the IPO playing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The property panel should use an "x" to be consistent with the rest of the world :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;copy and paste with the operating system?&lt;br /&gt;&lt;br /&gt;actuators don't have getname?  that is ... interesting... they are accessed by name, so I guess it makes sense for them not to have names, but what ever :-)&lt;br /&gt;&lt;br /&gt;when you create objects, you can't seem to tell it "create it right HERE" with this velocity -- well maybe you could but I don't know how.   Oh well.&lt;br /&gt;&lt;br /&gt;if youhave two actuators with the same name attached to a python script (from two different objects) then the return value from "get actuator(schizonamed") is undefined.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116249791426094816?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116249791426094816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116249791426094816' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116249791426094816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116249791426094816'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/what-i-wish-blender-had.html' title='what I wish blender had'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116243032769249607</id><published>2006-11-01T17:17:00.000-08:00</published><updated>2006-11-15T17:52:33.825-08:00</updated><title type='text'>error message</title><content type='html'>SystemError: error return without exception set&lt;br /&gt;&lt;br /&gt;I got this when I tried to grab a mesh that did not exist, or that was associated with an empty, or something!  Also it might be caused by having a python script linked to two actuators (under two distinct objects) but such that they have the same name--then it becomes confused.&lt;br /&gt;&lt;br /&gt;Also when I compiled blender on linux, it said /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lalut&lt;br /&gt;&lt;br /&gt;it turns out that since my alut and openal were stored in 'non conventional' locations, gcc didn't want to accept LD_LIBRARY_PATH environment variable, which DID have them, so I then had to add, by hand, to the linking line (i.e. run scons BF_DEBUG=0 BF_QUIEt=0 to figure out the command line used to link blender, then add to it)&lt;br /&gt;-LnewnonStandardLibDirectory&lt;br /&gt;&lt;br /&gt;and then it works.&lt;br /&gt;&lt;br /&gt;I have no idea why.&lt;br /&gt;This makes me want to suggest that scons have a global 'include from here' and 'link from here' settings, at least for linux.&lt;br /&gt;&lt;br /&gt;It may have something to do with the environment that scons yields to the builds that it creates--it seems to create an 'internal' 'new' environment and pass that along to the child scons processes (like subdirectories).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116243032769249607?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116243032769249607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116243032769249607' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116243032769249607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116243032769249607'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/11/error-message.html' title='error message'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116233866515566540</id><published>2006-10-31T15:49:00.000-08:00</published><updated>2006-11-15T17:52:33.759-08:00</updated><title type='text'>how to import external modules</title><content type='html'>Say module is in e:\blender\shared\folder\file.py&lt;br /&gt;in blender do (in a script)&lt;br /&gt;sys.path.append("e:\\blender\\shared")&lt;br /&gt;then from folder.file import whateverStuffYouWantLikeFunctionNames&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116233866515566540?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116233866515566540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116233866515566540' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233866515566540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233866515566540'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/how-to-import-external-modules.html' title='how to import external modules'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116233830294701299</id><published>2006-10-31T15:43:00.000-08:00</published><updated>2006-11-15T17:52:33.695-08:00</updated><title type='text'>more code snippets how to get active_camera, getSensors of an object</title><content type='html'>import GameLogic&lt;br /&gt;print dir(GameLogic)&lt;br /&gt;&lt;br /&gt;print "current scene is "&lt;br /&gt;liveScene = GameLogic.getCurrentScene()&lt;br /&gt;#print dir(liveScene)&lt;br /&gt;print "now from that here is the camera:"&lt;br /&gt;print dir(liveScene.active_camera)&lt;br /&gt;&lt;br /&gt;#for o in liveScene.getObjectList():&lt;br /&gt;#    print dir(o)&lt;br /&gt;&lt;br /&gt;me = GameLogic.getCurrentController()&lt;br /&gt;&lt;br /&gt;print "controller"&lt;br /&gt;print dir(me)&lt;br /&gt;print "sensors:"&lt;br /&gt;for obj in me.getSensors():&lt;br /&gt;    print dir(obj)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116233830294701299?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116233830294701299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116233830294701299' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233830294701299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233830294701299'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/more-code-snippets-how-to-get.html' title='more code snippets how to get active_camera, getSensors of an object'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116233131585629299</id><published>2006-10-31T13:47:00.000-08:00</published><updated>2006-11-15T17:52:33.619-08:00</updated><title type='text'>disappearing blender objects</title><content type='html'>So it appears that right now if a node has an IPO associated with it AT ALL then it will apply frame 1 of that IPO at the initiation of a game.  Whether you like it or not.  So if your camera 'disappears' every time or your object jumps at the beginning of a game... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116233131585629299?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116233131585629299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116233131585629299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233131585629299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116233131585629299'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/disappearing-blender-objects.html' title='disappearing blender objects'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116225440080955186</id><published>2006-10-30T16:13:00.000-08:00</published><updated>2006-11-15T17:52:33.554-08:00</updated><title type='text'>Random Blender notes</title><content type='html'>Blender Game Engine notes:&lt;br /&gt;&lt;br /&gt;import GameLogic&lt;br /&gt;GameLogic.myVar = 3&lt;br /&gt;&lt;br /&gt;liveScene = GameLogic.getCurrentScene()&lt;br /&gt;obj = liveScene.getObjectList()["OBCube"]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With the game engine, there seems to be no way to have a script that is fired with two actuators -- i.e. if this AND this then fire this script.  Doesn't work.  One way around this would be to revamp the GUI system to have another "column" that is logic connectors.  like "add a logic connector "AND" or what not.  Then you could use those with the normals and with these.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;constraints are NOT reflected at 'game time' in the GameEngine.  Parent/child objects are.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;right now if you restart a scene, it reruns all scripts that have the "quotes" both unchecked (which hmakes them 'init' scripts). &lt;br /&gt;Ways to instantiate 'once' in the GameEngine:&lt;br /&gt;&lt;br /&gt;with solid variables:&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;  print GameLogic.bbc == ""&lt;br /&gt;except AttributeError:&lt;br /&gt;  GameLogic.bbc = "init value"&lt;br /&gt;print "done"&lt;br /&gt;&lt;br /&gt;# the above way just makes it possible to not have the script crash, as it would typically do if you checked if the variable bbc existed or had been instantiated.   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--there may be others.&lt;br /&gt;&lt;br /&gt;Note IPO's for the GameEngine are by frame count, not by frame, so if you have a faster or slower computer...watch out.&lt;br /&gt;&lt;br /&gt;Also it would be nice to have more flexible IPO actuators--i.e. they can change IPO (the name) within the one object (the IPO referring to that object), and another would be then that more objects could use more than one IPO.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's my notes so far!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116225440080955186?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116225440080955186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116225440080955186' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116225440080955186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116225440080955186'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/random-blender-notes.html' title='Random Blender notes'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36363111.post-116223944483276967</id><published>2006-10-30T12:15:00.000-08:00</published><updated>2006-11-15T17:52:33.458-08:00</updated><title type='text'>firing!</title><content type='html'>With blender mouse actuators, say you have a mouse left actuator attached to a python script.  The actuator will fire the python script TWICE per click--once when you click down, once when you click up.  So this basically requires you to double check actuatorName.isActive() every time- - just having it fire does not mean what you think it might.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116223944483276967?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116223944483276967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116223944483276967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116223944483276967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116223944483276967'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/firing.html' title='firing!'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116137901446455224</id><published>2006-10-20T12:45:00.000-07:00</published><updated>2006-11-15T17:52:33.340-08:00</updated><title type='text'>Blender GameLogic IPO's</title><content type='html'>So...it seems that IPO's have some interesting actions, if you change them 'on the fly' while they are being applied to an object.&lt;br /&gt;&lt;br /&gt;The normal "thing" for IPO actuators to do is to just play through, then stop.&lt;br /&gt;Let me explain.  If you set your IPO to be "play" and you start it, if you tell that actuator to start up again, and it has not finished playing, it will NOT restart--it ignores the command to (re) start and just continues playing.  Until it stops.  Then it will "allow" the actuator command to re-start it.&lt;br /&gt;&lt;br /&gt;Also, about IPO's (background)&lt;br /&gt;each object can only play the (single) IPO that was last associated with it (though I think it may be possible to "link" it to others, it only really uses, for the game engine, the last one you assigned to it).&lt;br /&gt;&lt;br /&gt;Currently, if an IPO object is "playing" you can't re-start it.  And here is what happens if you change the&lt;br /&gt;1) Begin frame (this is like an interruptive change fo the begin frame, or during playback).  This will cause the currrent frame to 'jump' to an offset of the amount that you changed it by.  Useful?  Perhaps.  more of an accidental "feature" I think. 2&lt;br /&gt;2) End frame.  If you change the end frame while in playback it will do nothing besides perhaps continue farther or shorter to that end frame.  if, however, the IPO had already finished playing (stopped), THEN you changed the end frame, it would just 'skip' to that frame.  Almost like assigning the IPO to the new end frame (it thought that you were at the end frame--the end frame changed.  It changed you to still be at the end frame).&lt;br /&gt;So nothing too bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116137901446455224?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116137901446455224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116137901446455224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116137901446455224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116137901446455224'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/blender-gamelogic-ipos.html' title='Blender GameLogic IPO&apos;s'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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-36363111.post-116137337276254496</id><published>2006-10-20T12:41:00.000-07:00</published><updated>2006-11-15T17:52:33.261-08:00</updated><title type='text'>First Blender thoughts</title><content type='html'>So...variables in the Blender GameEngine&lt;br /&gt;Here are some things I have noticed over the last few days.&lt;br /&gt;&lt;br /&gt;1) you can edit 'properties' of an object on the fly, thus (you don't need an actuator :-) )&lt;br /&gt;import GameLogic&lt;br /&gt;owner = GameLogic.getCurrentController().getOwner() # there might be a better way than this.&lt;br /&gt;owner.propertyname = "newValue"&lt;br /&gt;&lt;br /&gt;2) These properties 'reset' when you start or re-start a scene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36363111-116137337276254496?l=programming-gone-awry.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programming-gone-awry.blogspot.com/feeds/116137337276254496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36363111&amp;postID=116137337276254496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116137337276254496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36363111/posts/default/116137337276254496'/><link rel='alternate' type='text/html' href='http://programming-gone-awry.blogspot.com/2006/10/first-blender-thoughts.html' title='First Blender thoughts'/><author><name>Roger Pack</name><uri>http://www.blogger.com/profile/01578246846716577925</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>
