<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog &#124; BenHollis.net &#187; Random</title>
	<atom:link href="http://benhollis.net/blog/category/random/feed/" rel="self" type="application/rss+xml" />
	<link>http://benhollis.net/blog</link>
	<description>News about BenHollis.net and articles about Ben&#039;s interests</description>
	<lastBuildDate>Sat, 06 Mar 2010 01:54:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Glowback &#8211; Arduino-powered glowing ceramic creature</title>
		<link>http://benhollis.net/blog/2010/02/04/glowback-arduino-powered-glowing-ceramic-creature/</link>
		<comments>http://benhollis.net/blog/2010/02/04/glowback-arduino-powered-glowing-ceramic-creature/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 07:37:02 +0000</pubDate>
		<dc:creator>Ben Hollis</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[ceramics]]></category>
		<category><![CDATA[creatures]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[eva funderburgh]]></category>
		<category><![CDATA[leds]]></category>

		<guid isPermaLink="false">http://benhollis.net/blog/?p=439</guid>
		<description><![CDATA[While I spend most of my time in front of a keyboard and monitor, my wife Eva Funderburgh spends her time sculpting amazing, imaginary ceramic creatures. Her beasts are assembled out of different clays and wood-fired. About a year ago she enlisted my help in building a new type of beast with egg-shaped domes on [...]]]></description>
			<content:encoded><![CDATA[<p>While I spend most of my time in front of a keyboard and monitor, my wife <a href="http://evafunderburgh.com/">Eva Funderburgh</a> spends her time sculpting amazing, imaginary ceramic creatures. Her beasts are assembled out of different clays and <a href="http://www.flickr.com/photos/genkigecko/sets/72157600474448683/">wood-fired</a>. About a year ago she enlisted my help in building a new type of beast with egg-shaped domes on its back. The idea was to have the domes glow and pulse with an organic, bioluminescent light. (Note: This was way before we&#8217;d seen Avatar!) Eva had already built and fired the beast a few months earlier, using thin shells of translucent Southern Ice porcelain for the domes. She left a few of the domes unattached so we could get lights inside after the firing.</p>
<p class="blogimage"><a href="http://www.flickr.com/photos/genkigecko/3289094697/" title="The start of the Glowback by Eva Funderburgh, on Flickr"><img src="http://farm4.static.flickr.com/3510/3289094697_aff0938390.jpg" width="500" height="375" alt="The start of the Glowback" /></a></p>
<p><span id="more-439"></span></p>
<p>We decided to use the open-source <a href="http://www.arduino.cc/">Arduino</a> microcontroller platform to drive LEDs inside the domes &#8211; that way we could have a bunch of independently-controlled lights and set their behavior with software. We chose the <a href="http://www.adafruit.com/index.php?main_page=product_info&#038;cPath=19&#038;products_id=72&#038;zenid=a5c5d30926597b735087248132f9c378">Boarduino</a> Arduino clone from <a href="http://www.adafruit.com/">Adafruit Industries</a> because it&#8217;s cheap, easy to assemble, and much smaller than the full-size Arduinos. Soldering it together only took an hour or so.</p>
<p class="blogimage"><a href="http://www.flickr.com/photos/dalangalma/3116793147/" title="Completed Boarduino by dalangalma, on Flickr"><img src="http://farm4.static.flickr.com/3041/3116793147_80ca2e8f84.jpg" width="500" height="375" alt="Completed Boarduino" /></a></p>
<p>After that we connected a total of 11 superbright LEDs (ordered from <a href="http://www.digikey.com/">DigiKey</a>) to the Boarduino. Since the Boarduino only has 6 <a href="http://en.wikipedia.org/wiki/Pulse-width_modulation">PWM</a> pins (which can be used to &#8220;fade&#8221; LEDs in and out), we put 5 really bright LEDs on their own PWM pins (for the big domes) and wired the remaining LEDs (slightly less blindingly bright ones) in parallel to the 6th pin. The LEDs are unbelievably bright &#8211; even after covering them in an anti-static bag they are tough to look at directly.</p>
<p class="blogimage"><a href="http://www.flickr.com/photos/genkigecko/3210517110/in/set-72157612706914935/" title="Franken Beast, glowing by Eva Funderburgh, on Flickr"><img src="http://farm4.static.flickr.com/3430/3210517110_dfb127fd4d.jpg"  width="500" height="375" alt="Franken Beast, glowing" /></a></p>
<p>At this point we had to sketch up some software to actually control the lights. Eva wanted a random, organic pulsing, so I started by having each light animate through 360 degrees and used trigonometric functions to create a smooth curve of lighting and fading. We tried a whole bunch of different speeds, patterns, brightnesses, and randomization (some different tests: <a href="http://www.flickr.com/photos/genkigecko/3210532398/in/set-72157612706914935/">1</a> <a href="http://www.flickr.com/photos/genkigecko/3209687767/in/set-72157612706914935/">2</a> <a href="http://www.flickr.com/photos/genkigecko/3290779507/in/set-72157612706914935/">3</a> <a href="http://www.flickr.com/photos/genkigecko/3290784971/in/set-72157612706914935/">4</a>) before settling on <a href="http://gist.github.com/290912">the final code</a>. The code is a bit messy because of all the things that got changed around. I ended up using 1 &#8211; abs(sin(&theta;)) as the main brightness function, which gave the lights a sort of &#8220;breathing&#8221; effect.</p>
<p class="blogimage"><img src="http://benhollis.net/blog/wp-content/uploads/2010/02/inv_abs_sin.png" alt="1 - abs(sin(&theta;))" title="1 - abs(sin(&theta;))" width="500" height="77" class="alignnone size-full wp-image-477" /></p>
<p>The 0-1 values from that function got converted into a brightness from 0-255 for the PWM output. Actually, the brightnesses were always between a set minimum and maximum brightness, so they never quite go all the way out. Each cycle the speed of the fade gets randomly modified, so the lights never line up in any pattern &#8211; it&#8217;s pretty hypnotic to stare at.</p>
<p class="blogimage"><a href="http://www.flickr.com/photos/genkigecko/3289968288/in/set-72157612706914935/" title="the belly of the beast. by Eva Funderburgh, on Flickr"><img src="http://farm4.static.flickr.com/3310/3289968288_14aaa1f015.jpg" width="500" height="375" alt="the belly of the beast." /></a></p>
<p>After this Eva had the unenviable task of stuffing the whole works into the beast. She built little foam stoppers for each LED, and pushed one up into each dome. Then she carefully crammed all the wires inside, and the Boarduino, a switch, and the 9V battery. It ended up being way too cramped, resulting in a lot of broken wires, resoldering, and hot glue burns. Lesson learned &#8211; the next glowing beast will be bigger, with more open access to the inside.</p>
<p class="blogimage"><object width="480" height="385"><param name="movie" value="http://www.youtube-nocookie.com/v/KgvbQ0YYFAA&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/KgvbQ0YYFAA&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
<p>The end result is really captivating. Eva ended up displaying it at Gallery Madeira in Tacoma, WA along with some of <a href="http://www.flickr.com/photos/genkigecko/collections/72157600257525140/">her other creatures</a>. Since we both put a lot of personal attention the two of us put into the Glowback, and the fact that due to all the hairy wiring inside it&#8217;s sort of &#8220;high maintenance&#8221;, we decided to keep it for ourselves instead of offering it for sale. However, Eva&#8217;s not done with the idea of lit beasts containing microcontrollers.</p>
<p>Eva&#8217;s<a href="http://evafunderburgh.com/2010/02/06/glowing-beasts-past-and-present/"> has written up a post on the Glowback</a> from her perspective on <a href="http://evafunderburgh.com/blog/">her own blog</a> &#8211; I suggest checking it out to get more detail on the concept and lineage of the piece.</p>
]]></content:encoded>
			<wfw:commentRss>http://benhollis.net/blog/2010/02/04/glowback-arduino-powered-glowing-ceramic-creature/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Middle mouse button on a ThinkPad</title>
		<link>http://benhollis.net/blog/2009/01/15/middle-mouse-button-on-a-thinkpad/</link>
		<comments>http://benhollis.net/blog/2009/01/15/middle-mouse-button-on-a-thinkpad/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 07:25:37 +0000</pubDate>
		<dc:creator>Ben Hollis</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[middle button]]></category>
		<category><![CDATA[thinkpad]]></category>

		<guid isPermaLink="false">http://brh.numbera.com/blog/?p=286</guid>
		<description><![CDATA[File this under small victories, I guess. A couple months ago my trusty old ThinkPad R51 decided to cook itself to death, so I went ahead and got a shiny new ThinkPad T500. It&#8217;s quite an upgrade, but I missed one feature from my old machine. ThinkPads have this weird hybrid pointing device called a [...]]]></description>
			<content:encoded><![CDATA[<p>File this under small victories, I guess. A couple months ago my trusty old ThinkPad R51 decided to cook itself to death, so I went ahead and got a shiny new ThinkPad T500. It&#8217;s quite an upgrade, but I missed one feature from my old machine. ThinkPads have this weird hybrid pointing device called a TrackPoint which consists of a trackpad and two buttons, then a nubbin-pointer and <em>three</em> buttons for that. On my old ThinkPad I could use the nubbin&#8217;s center button as a middle-click, which is great for opening links in new tabs, closing tabs, Unix-style copy/paste, etc.</p>
<p class="blogimage"><img src="http://brh.numbera.com/blog/wp-content/uploads/2009/01/t500.jpg" alt="t500" title="t500" width="388" height="400" class="alignnone size-full wp-image-287" /></p>
<p>I didn&#8217;t even use the nubbin, I just used its button. However, on my new ThinkPad, the center button switched the nubbin to scrolling mode, and turning that off in the driver just made the button do nothing! However, I recently stumbled upon the solution. If you completely uninstall the UltraNav driver, the middle button becomes a normal middle mouse button again, and the nubbin and trackpad still work. Tab management is easy again!</p>
]]></content:encoded>
			<wfw:commentRss>http://benhollis.net/blog/2009/01/15/middle-mouse-button-on-a-thinkpad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Posts I haven&#8217;t written</title>
		<link>http://benhollis.net/blog/2008/10/14/posts-i-havent-written/</link>
		<comments>http://benhollis.net/blog/2008/10/14/posts-i-havent-written/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 07:02:29 +0000</pubDate>
		<dc:creator>Ben Hollis</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[BenHollis.net]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[HAML]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SASS]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://brh.numbera.com/blog/?p=222</guid>
		<description><![CDATA[I haven&#8217;t been updating this blog too much recently. I never meant for this blog to run on a schedule, but I did intend to post more frequently than this. My original idea was that the blog would serve two major purposes. First, it is a place for me to announce new projects or updates [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t been updating this blog too much recently. I never meant for this blog to run on a schedule, but I did intend to post more frequently than this. My original idea was that the blog would serve two major purposes. First, it is a place for me to announce new projects or updates to software and websites I&#8217;ve already released. It&#8217;s done that quite well, though I haven&#8217;t had much to announce recently. My job has been taking the majority of my development time, and most of the projects I&#8217;ve been working on at home are either private or haven&#8217;t been released in the form I&#8217;d like to because my employer hasn&#8217;t approved them for release yet.</p>
<p>The second major purpose for my blog is as a place for me to record the solution to problems I run across while developing software, so that others won&#8217;t have to spend hours Googling or using trial and error to come to the same conclusion. I didn&#8217;t intend to rehash things that were easily found or that had already been discussed &#8211; only to post when I felt it was something that added value to the internet that hadn&#8217;t been there before. So a lot of the blog posts are not really a narrative or running commentary &#8211; they&#8217;re not meant to be subscribed to, but found individually. It&#8217;s for this reason that my most popular posts tend to include the exact text of error messages. This type of post has suffered both because I haven&#8217;t been doing as much development, because I can&#8217;t discuss a lot of what I&#8217;ve learned due to the nature of the projects I&#8217;m working on, and because I&#8217;ve been learning new stuff (like Ruby on Rails) and haven&#8217;t done enough to have solved problems others haven&#8217;t already posted solutions for.</p>
<p>The third reason I have this blog is to occasionally talk about my thoughts on different technical topics, from web development to video games. Again, I don&#8217;t like to make a post unless I think I&#8217;m adding something new, and most of the topics I&#8217;ve wanted to talk about have already been covered. I had a lot of draft posts sitting around about web development, web standards, and the evolution of browsers, but then I discovered <a href="http://alex.dojotoolkit.org/">Alex Russell&#8217;s blog</a> and it turns out he&#8217;s already said most of what I wanted to say, and better than I could. Other stuff, like my impressions of Windows Vista, critique of <a href="http://stackoverflow.com">stackoverflow.com</a> and suggestions for the Xbox Live Arcade lineup, have been covered to my satisfaction in plenty of places. Maybe some of them will end up posted, but probably not.</p>
<p>Another part of the reason I haven&#8217;t posted much is the sheer weight of unfinished posts I have. Right now I have 64 drafts and only 52 real posts! So I&#8217;m going to attempt to clear things out by writing a little about what I haven&#8217;t posted. A lot of this stuff wasn&#8217;t posted because it fell under that third point above, but some of it I was just too lazy to flesh out into real posts. Some of it&#8217;s just random stuff. So here&#8217;s what&#8217;s been happening in the last year:</p>
<p><span id="more-222"></span></p>
<p>I got on the bandwagon and picked up iPhone 3Gs for myself and my wife. Everything good you&#8217;ve heard about the iPhone is true. Also, almost everything bad you&#8217;ve heard about them is true. I really like the device, the UI, and the web browsing, and now that the NDA over the SDK is gone, I might even try to write an app if I get an idea.</p>
<p>I <a href="http://flickr.com/photos/dalangalma/sets/72157594581121699/">built a new computer</a> in March of &#8216;07 to replace the machine I had built for college. The new machine is set up as a developer machine primarily, with the additional goal of being as quiet as possible. I can&#8217;t say I&#8217;m entirely happy with it, since I&#8217;ve had some trouble with the hardware and overheating issues mean I have to run the fans above &#8220;totally silent&#8221; mode. It does its job well enough but I might just buy a Dell next time. The <a href="http://flickr.com/photos/dalangalma/416869374/in/set-72157594581121699/">huge CPU heatsink</a> I used is awesome, though.</p>
<p>I&#8217;ve been running Windows Vista x64 since my new machine came online. While I think it&#8217;s a disappointing release given the 5-year gap between it and Windows XP, I generally like it. It&#8217;s certainly better than Windows XP and I wouldn&#8217;t go back. I&#8217;ve hit some trouble related to using x64, but overall it&#8217;s pleasant.</p>
<p>Before that, I was getting pretty sick of the aging Windows XP, so I bought a Mac Mini and ran it, using OS X 10.4, on a second screen next to my XP machine, joined via <a href="http://synergy2.sourceforge.net/">Synergy</a>. I liked it a lot, but never moved much of my work over there. After getting set up with Windows Vista, the difference between OS X and Windows wasn&#8217;t so great, and I unplugged the Mac so I could have both screens for Windows. I moved the Mini up to my TV and used it with Front Row as a media center. Then the Xbox 360 got the ability to play DivX videos, so I stopped using it for that and brought it back downstairs. I was using it for browser testing, but then Apple released a Windows version of Safari. Now it mostly stays off, except when I want to use Handbrake (which won&#8217;t work on Vista x64). I still like it, and I really miss having an OS with a real command line, especially now that I&#8217;m doing Rails stuff and spelunking through a lot of badly-documented libraries. I&#8217;m not sure I&#8217;ll ever make the switch though. That said, my trusty old Thinkpad finally died last week, and if I can&#8217;t revive it I might look towards the rumored lower-priced MacBooks that should come out soon.</p>
<p>I got <a href="http://flickr.com/photos/genkigecko/sets/72157603357487037/">two awesome cats</a> named Ozette and Skagit. A lot of my time at home just involves relaxing and petting the cats these days.</p>
<p>After years of using Thunderbird, I switched to GMail as my main mail client so I could use it from the web and use IMAP on my iPhone. I set it up to read all my old POP mailboxes, and I use Google Chrome&#8217;s application mode (I used to use <a href="http://labs.mozilla.com/projects/prism/">Mozilla Prism</a>) to make it look like a standalone app on my desktop. It&#8217;s an OK mail reader, especially since I get a lot less email to my personal accounts these days. The main annoyance is spam &#8211; I used to use <a href="http://getpopfile.org/">POPFile</a> to filter spam, and it was perfect, with almost no false positives. In contrast, I get maybe 50 pieces of spam leaking through on GMail a week.</p>
<p>Spam has not been limited to my inbox: my <a href="http://forums.numbera.com">support forums</a> are basically nothing but spam and people complaining about stuff I&#8217;ve given them for free. It takes a lot of maintenance, and I&#8217;m thinking of either trying to transition them to something less attractive to spammers, or just shutting them down entirely.</p>
<p>Back when IE7 was in beta I wrote a handful of bug repro&#8217;s for problems I found with it. Recently I&#8217;ve been running across all kinds of crazy things in both Firefox and IE, so I&#8217;ve been <a href="http://brh.numbera.com/experiments/browserdemos/">cataloguing them</a> with little examples. Most of them have been fixed with the latest release of each browser, but I figure they&#8217;re still useful if anybody&#8217;s seeing those problems happen.</p>
<p>I went to <a href="http://flickr.com/photos/genkigecko/sets/72157606388198812/">Southeast Asia</a> for two and a half weeks. We toured Vietnam, Cambodia and Thailand. It was incredible.</p>
<p>I finally got so sick of CSS that I decided to write a processor that would take an &#8220;evolved&#8221; CSS syntax that supported named constants, nested selectors, arithmetic, mixins, and such and spit out real CSS. I had it all sketched out and was ready to start implementing when I found <a href="http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html">SASS</a>, from the same guy who awesome-ified HTML with <a href="http://haml.hamptoncatlin.com/">HAML</a>. SASS is feature-by-feature the exact same thing I wanted to do (except for the whitespace-significant thing, but I can deal). I love it.</p>
<p>I&#8217;ve been pretty disillusioned with ASP.NET as a web platform &#8211; the web forms are too inflexible and unfriendly to clean markup and unobtrusive JavaScript, and C# feels too rigid and verbose for what I&#8217;m doing. LINQ and the other 3.5 features help a lot, but my host is stuck on 2.0. I still haven&#8217;t found any templating system that trumps Web Forms, which is why I&#8217;m still stuck on Windows hosting for the most part &#8211; a lot of my sites are built on ASP.NET for nothing more than the templating. While I&#8217;m keeping my eye on ASP.NET MVC, I&#8217;m more interested in cross-platform web technologies that give me a bit more choice in hosting.</p>
<p>To that effect, I&#8217;ve started a personal project on Ruby on Rails, mostly to learn the platform. So far I&#8217;ve really been liking it &#8211; having a functional, dynamic language is great, and the structure Rails gives you really helps to quickly get things running. Hopefully I&#8217;ll be able to show what I&#8217;m making at some point, assuming it works to my satisfaction.</p>
<p>I actually went through a big comparison of different web platforms and different languages, trying to gauge what would be the best for me to develop for. I&#8217;m not sure I&#8217;ll ever publish my full results, but Ruby on Rails was obviously up there, and Django / Python looked good too. </p>
<p>Speaking of languages, before I discovered <a href="http://jquery.com">jQuery</a> I didn&#8217;t really do much JavaScript if I could avoid it. Now I&#8217;m writing tons of JavaScript to produce some really nice interactive web apps. I have never been as impressed with a library or platform as I have been with jQuery.</p>
<p>I&#8217;ve actually been using Eclipse a lot lately, both for Aptana and for straight Java development, and while it&#8217;s slower and buggier than Visual Studio, a free copy of Eclipse plus all the free plugins make it much more compelling than the Visual Studio Express products I use for C# work. Stuff like the outline view, refactoring support, quick fix mode, and real unit testing and source control plugins make all the difference.</p>
<p>I think that&#8217;s about all I wanted to get off my chest for now. Hopefully I&#8217;ll have a chance to flesh some of that out into full posts sometime, but at least I won&#8217;t have so many unwritten drafts staring at me every time I log in to Wordpress.</p>
]]></content:encoded>
			<wfw:commentRss>http://benhollis.net/blog/2008/10/14/posts-i-havent-written/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website work</title>
		<link>http://benhollis.net/blog/2008/06/19/website-work/</link>
		<comments>http://benhollis.net/blog/2008/06/19/website-work/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 06:33:08 +0000</pubDate>
		<dc:creator>Ben Hollis</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://brh.numbera.com/blog/index.php/2008/06/19/website-work/</guid>
		<description><![CDATA[I&#8217;ve been pretty quiet on the blog lately, partly because I went on a long vacation and partly because I&#8217;ve been too busy with real work to do anything much on at-home projects (at least, at-home code projects). Another reason is that I&#8217;ve been working on a couple websites that hadn&#8217;t launched until recently. The [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been pretty quiet on the blog lately, partly because I went on <a href="http://flickr.com/photos/genkigecko/collections/72157605111675616/">a long vacation</a> and partly because I&#8217;ve been too busy with real work to do anything much on at-home projects (at least, at-home code projects). Another reason is that I&#8217;ve been working on a couple websites that hadn&#8217;t launched until recently. The first project was a website for <a href="http://butterflyhaptics.com">Butterfly Haptics</a>, which is my parents&#8217; new company. They&#8217;re producing a really cool magnetic levitation haptic interface &#8211; a sort of super-high-tech 3D mouse that lets you feel virtual objects as if they were solid. I&#8217;m really excited about what they&#8217;re building, and I&#8217;ll be at SIGGRAPH this year manning their booth in the New Tech Demos area. </p>
<p class="blogimage"><a href='http://butterflyhaptics.com' title='Butterfly Haptics Screenshot'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/06/butterflyhaptics.jpg' alt='Butterfly Haptics Screenshot' /></a></p>
<p>The other site, which just launched, is my wife&#8217;s <a href="http://evafunderburgh.com">new art site</a>. She makes wood-fired ceramic sculptures of bizarre, cute creatures, and the new site was hand-drawn by her to reflect their style. It&#8217;s implemented as a Wordpress theme, which gives her a much easier way to manage the content of the site, and it also means that she can now blog about her process and other art topics. Check out some of the cool time-lapse videos of her sculpting the critters.</p>
<p class="blogimage"><a href='http://evafunderburgh.com' title='evafunderburgh.com Screenshot'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/06/evafunderburgh.jpg' alt='evafunderburgh.com Screenshot' /></a></p>
<p>Anyway, that&#8217;s what I&#8217;ve been up to. Hopefully soon I&#8217;ll be able to get back to building more cool things and talking about them, as well as clearing out my backlog of draft blog posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://benhollis.net/blog/2008/06/19/website-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up IIS7 (with bonus PHP instructions!)</title>
		<link>http://benhollis.net/blog/2008/03/09/setting-up-iis7-with-bonus-php-instructions/</link>
		<comments>http://benhollis.net/blog/2008/03/09/setting-up-iis7-with-bonus-php-instructions/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 05:16:00 +0000</pubDate>
		<dc:creator>Ben Hollis</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Xbox 360]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://brh.numbera.com/blog/index.php/2008/03/09/setting-up-iis7-with-bonus-php-instructions/</guid>
		<description><![CDATA[Every time I try to set up IIS7 on a Windows Vista machine I run into the same series of problems. You&#8217;d think I&#8217;d have learned by now, but I usually just struggle through the cryptic error messages and get it working one way or another, then forget about it until the next time I [...]]]></description>
			<content:encoded><![CDATA[<p>Every time I try to set up IIS7 on a Windows Vista machine I run into the same series of problems. You&#8217;d think I&#8217;d have learned by now, but I usually just struggle through the cryptic error messages and get it working one way or another, then forget about it until the next time I need IIS7 on a machine that doesn&#8217;t have it. Finally I&#8217;d had enough and so I decided to write myself a little guide here so I won&#8217;t waste as much time next time. These instructions are basically the same as <a href="http://hajuria.blogspot.com/2007/11/installing-iis7-php5-25-on-windows.html">these</a>, but with additional detail and screenshots. </p>
<p><span id="more-158"></span></p>
<p>The first step is to actually install IIS7. Unlike in Windows XP, IIS isn&#8217;t installed by default. That&#8217;s great, but it can be kind of hard to find it when I need it.</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/windows-features-control-panel.png' title='Add or remove Windows features'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/windows-features-control-panel-thumb.png' alt='Add or remove Windows features' /></a></p>
<p>You&#8217;ve got to click this link that says &#8220;Turn Windows features on or off&#8221; which will (after some time) bring up a big tree of features you can check or uncheck.</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/windows-features-iis.png' title='Windows Features - IIS'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/windows-features-iis-thumb.png' alt='Windows Features - IIS' /></a></p>
<p>You&#8217;re going to want most of &#8220;World Wide Web Services&#8221;. If you are also interested in installing PHP, make sure everything I&#8217;ve circled in red is checked. I just added everything to be safe. What&#8217;s important is that you have the ISAPI and CGI stuff. I also checked the IIS6 compatibility bit so that installers for things like PHP might have a better chance at automatically configuring things (fat chance).</p>
<p>At this point you can start dropping things into <tt>C:\inetpub\wwwroot</tt> and everything should be peachy. I don&#8217;t put my sites there since I have them checked out into various folders in my Documents folder. So I need to create some virtual directories to point to my sites. This probably won&#8217;t work off the bat &#8211; you&#8217;ll get 403 errors that complain about wrong permissions or something. You need to make sure that the &#8220;IIS_IUSRS&#8221; and &#8220;Authenticated Users&#8221; users have read access to the directory. I&#8217;m not sure why &#8220;Authenticated Users&#8221; needs to be there but it made it work. Make it look like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/permissions.png' title='Setting permissions for IIS7'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/permissions-thumb.png' alt='Setting permissions for IIS7' /></a></p>
<p>At this point your folder should be accessible from the virtual directory, and any ASP.NET stuff will probably work. If you&#8217;re not interested in installing PHP, you can stop here.</p>
<h3>Installing PHP on IIS7</h3>
<p>PHP doesn&#8217;t really play well with IIS. However, we can get it going good enough for local testing of your PHP code. First, go install PHP5 from <a href="http://php.net/">php.net</a>. Choose to install it as an ISAPI extension for IIS, but don&#8217;t worry too much, since it won&#8217;t work anyway. Now open up IIS Manager. If you&#8217;ve followed the steps above (specifically, selecting the correct &#8220;Windows features&#8221;), your IIS manager should look something like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/what-to-look-for-iis.png' title='IIS Manager with ISAPI and CGI'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/what-to-look-for-iis-thumb.png' alt='IIS Manager with ISAPI and CGI' /></a></p>
<p>What&#8217;s important is that you have the parts outlined in red &#8211; the &#8220;CGI&#8221; icon, the &#8220;ISAPI Filters&#8221; icon, and the &#8220;ISAPI and CGI Restrictions&#8221; icon. Those mean the right bits are installed. </p>
<p>Now double-click the &#8220;Handler Mappings&#8221; icon, and click &#8220;Add Script Map&#8230;&#8221; Fill out the form like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/edit-script-map.png' title='Add PHP script map'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/edit-script-map-thumb.png' alt='Add PHP script map' /></a></p>
<p>Make sure it&#8217;s pointing to your real copy of php5isapi.dll. At this point your Handler Mappings screen should look like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/handler-mappings.png' title='IIS handler mappings'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/handler-mappings-thumb.png' alt='IIS handler mappings' /></a></p>
<p>Also make sure that your &#8220;ISAPI Filters&#8221; screen looks like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/isapi-filters.png' title='ISAPI filters'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/isapi-filters-thumb.png' alt='ISAPI filters' /></a></p>
<p>If not, add PHP like this:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/edit-isapi-filter.png' title='Edit ISAPI filters'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/edit-isapi-filter-thumb.png' alt='Edit ISAPI filters' /></a></p>
<p>If you&#8217;re running the 64-bit version of Vista like I am, there&#8217;s one last thing to do in IIS Manager. Since the PHP ISAPI extension is a 32-bit app, you&#8217;ll need to set your app pool to run in 32-bit mode. I&#8217;ve already <a href="http://brh.numbera.com/blog/index.php/2007/03/27/using-myodbc-with-aspnet-in-iis7-on-vista-x64/">written one blog post on this</a> (to get MySQL working with ASP.NET), and the instructions are the same. Basically open up the app pool&#8217;s advanced settings dialog and flip it to 32-bit mode:</p>
<p class="blogimage"><img src="http://brh.numbera.com/blog/wp-content/uploads/2007/03/iis32bit.png" alt="IIS 32-bit app pool" /></p>
<p>If you forget this you&#8217;re likely to get errors that look like &#8220;Calling LoadLibraryEx on ISAPI filter &#8220;C:\Program Files (x86)\PHP\php5isapi.dll&#8221; failed&#8221;.</p>
<p>If you load up your PHP files you&#8217;ll probably get something like &#8220;failed opening required&#8221; blah blah. This is because the PHPRC environment variable isn&#8217;t set correctly by the PHP installer. We&#8217;ll have to do it ourselves. Go to the Control Panel and search for &#8220;env&#8221;:</p>
<p class="blogimage"><a href='http://brh.numbera.com/blog/wp-content/uploads/2008/03/control-panel-env.png' title='Environment variable link'><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/control-panel-env-thumb.png' alt='Environment variable link' /></a></p>
<p>Now add a System environment variable like this (point it at the directory PHP is installed):</p>
<p class="blogimage"><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/edit-system-variable-thumb.png' alt='PHPRC env variable' /></p>
<p>At this point you must reboot your computer to get the environment variable to take effect. Annoying but true. At this point PHP should work, more or less.</p>
<p>I still have some problems with PHP the way I&#8217;ve described configuring it. The most obvious is that the IIS worker crashes every once in a while:</p>
<p class="blogimage"><img src='http://brh.numbera.com/blog/wp-content/uploads/2008/03/iis-crash.png' alt='IIS worker crash because of PHP' /></p>
<p>I suspect reconfiguring PHP to be run as a CGI handler instead of an ISAPI module would help here, but it hasn&#8217;t been annoying enough to make me go change it. Another avenue to investigate is the new <a href="http://learn.iis.net/page.aspx/272/installing-php-on-windows-vista-with-fastcgi/">FastCGI support that&#8217;s available for IIS7</a>.</p>
<p>The other problem I&#8217;ve had is that I have a handful of image files in one of my sites that are managed by <a href="http://subversion.tigris.org">Subversion</a> and get locked and unlocked pretty frequently. After I&#8217;ve committed an image, it loses its permissions and can&#8217;t be served from IIS anymore, and I need to go reset the permissions. That&#8217;s pretty annoying, and I&#8217;m not sure if it&#8217;s a bug in Subversion or in one of my SVN clients (<a href="http://tortoisesvn.tigris.org">TortoiseSVN</a> and <a href="http://subclipse.tigris.org">Subclipse</a>).</p>
<p>At least this setup works enough to try things out quickly. I hope it helps anyone else who&#8217;s struggling with one of these setups.</p>
<p><strong>Update:</strong> You might want to try out the new <a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx">Microsoft Web Platform Installer</a> which purports to set up PHP along with anything else you might need.</p>
 <div class="postAdsense">
<script type="text/javascript"><!--
google_ad_client = "pub-0806135767465122";
/* BRH Blog Post */
google_ad_slot = "2708897180";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
]]></content:encoded>
			<wfw:commentRss>http://benhollis.net/blog/2008/03/09/setting-up-iis7-with-bonus-php-instructions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
