<?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>P'unk Avenue Window &#187; Tom</title>
	<atom:link href="http://window.punkave.com/author/tom/feed/" rel="self" type="application/rss+xml" />
	<link>http://window.punkave.com</link>
	<description></description>
	<lastBuildDate>Sat, 24 Jul 2010 01:15:00 +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>Google&#8217;s new &#8220;App Inventor&#8221; is a game-changer</title>
		<link>http://window.punkave.com/2010/07/12/googles-new-app-inventor-could-be-a-game-changer/</link>
		<comments>http://window.punkave.com/2010/07/12/googles-new-app-inventor-could-be-a-game-changer/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 23:36:27 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1184</guid>
		<description><![CDATA[
There are now 10,000 Android developers, as opposed to 40,000 for the iPhone. And Google is gearing up to release App Inventor, a tool for nontechnical Android app developers that is strikingly similar to the Scratch programming environment for kids. Meanwhile Android phones themselves are catching up quickly, although the iPhone 4 remains the coolest [...]]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/8ADwPLSFeY8&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8ADwPLSFeY8&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>There are now 10,000 Android developers, as opposed to 40,000 for the iPhone. And Google is gearing up to release <a href="http://appinventors.googlelabs.com/">App Inventor</a>, a tool for nontechnical Android app developers that is strikingly similar to the <a href="http://scratch.mit.edu/">Scratch</a> programming environment for kids. Meanwhile Android phones themselves are catching up quickly, although the iPhone 4 remains the coolest thing around.</p>
<p>Like many others I&#8217;m sure, I considered developing a tool like this and abandoned it after coming to grips with Apple&#8217;s harsh policies on the subject of alternative programming environments:<br />
<code><br />
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).<br />
</code><br />
Google&#8217;s reliance on crowdsourced quality control for apps isn&#8217;t perfect but it is beginning to add up to a real difference in spirit. As Android phone sales grow, making development for it an even more viable proposition, content creators will eventually vote with their feet for the platform where they feel most welcome and walk away from the walled garden. </p>
<p>I have an iPhone and I love it, in part because of Apple&#8217;s excellent quality control in the core applications. If Apple&#8217;s competition here were as bad as their competition in the MP3 player market&mdash; companies with almost no grasp of design&mdash; I wouldn&#8217;t doubt the outcome for a moment. But Android also has quality designers at play. Google&#8217;s approach to design may be a bit plodding and obsessed with A/B testing, but it does get results.</p>
<p>Apple knows they must continue to release cutting-edge hardware, but they don&#8217;t seem to grasp what it takes to maintain a welcoming developer platform once there are viable alternatives in the game.</p>
<p>I&#8217;m going out on a limb here: a year from now there will be as many Android apps as iPhone apps. 18 months from now Android phone sales will surpass iPhone sales. Apple will still have the sexiest phones, and will still command a premium price for them. But inside two years the iPhone will occupy a niche similar to that of the Macbook. </p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/07/12/googles-new-app-inventor-could-be-a-game-changer/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Symfony 2 hub-bub</title>
		<link>http://window.punkave.com/2010/06/10/symfony-hub-bub/</link>
		<comments>http://window.punkave.com/2010/06/10/symfony-hub-bub/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 19:01:25 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Apostrophe]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1169</guid>
		<description><![CDATA[Symfony is the best framework for building web applications in PHP. The forthcoming Symfony 2 is a dramatic improvement and a complete rewrite with many new features and, even more importantly, better software architecture. Enthusiasts may have heard about the State of Symfony 2 Online Conference to be held on June 23rd. Fabien and the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.symfony-project.org/">Symfony</a> is the best framework for building web applications in PHP. The forthcoming Symfony 2 is a <a href="http://www.symfony-reloaded.org/">dramatic improvement and a complete rewrite with many new features</a> and, even more importantly, better software architecture. Enthusiasts may have heard about the <a href="http://www.symfony-live.com/">State of Symfony 2 Online Conference</a> to be held on June 23rd. Fabien and the Sensio team have encouraged folks to become &#8220;Symfony conference hubs&#8221; and invite others to attend the conference from our offices and enjoy the benefits of our lovely projector, coffee, etc. And P&#8217;unk Avenue is definitely all about it. Please RSVP by commenting here. </p>
<p>WHAT: Symfony 2 Live Conference<br />
WHERE: P&#8217;unk Avenue offices, 1168 E. Passyunk Ave, Philadelphia PA<br />
WHEN: 11am Wednesday, June 23rd</p>
<p>Thanks to our hub status, <b>You do not have to buy your own Symfony 2 ticket</b> to attend at our office.</p>
<p>We&#8217;re looking forward to discussion and possibly busting out the Symfony 2 sandbox and experimenting after the conference.</p>
<hr />
Amid the excitement about Symfony 2, this would be a good time to mention our ongoing support for Symfony 1.4, and by extension Apostrophe 1.x. If Symfony 2.0 is coming, does that mean we&#8217;re going to abandon Symfony 1.x and Apostrophe 1.x?</p>
<p>No, not by a long shot, not any time soon. Symfony 2 will not be backwards compatible in a &#8220;super easy upgrade path&#8221; way, which is a valid choice to make improvements that would otherwise be impossible but an obvious problem for existing projects. And we have plenty of those. What&#8217;s more, Symfony 2 requires PHP 5.3.x at a minimum, and we know how tough it can be to move clients along just to PHP 5.2.x. </p>
<p>Fortunately, Sensio had the wisdom to make Symfony 1.4 a long-term-support release. And since Apostrophe 1.x is happily married to Symfony 1.4, that means we&#8217;re all in good shape.</p>
<p>Symfony 1.4 is supported until November of 2012, and Apostrophe 1.x will also be supported until at least November of 2012. </p>
<p>At some point, Apostrophe 2.x will come into being and it will be based on Symfony 2, but we have many client and internal projects that are purring away happily on Symfony 1.4 and we have absolutely no interest in abandoning it. So you can very safely pursue client projects based on the current stable releases of Apostrophe.</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/06/10/symfony-hub-bub/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Introducing Apostrophe&#8217;s Blog Plugin</title>
		<link>http://window.punkave.com/2010/06/07/introducing-apostrophes-blog-plugin/</link>
		<comments>http://window.punkave.com/2010/06/07/introducing-apostrophes-blog-plugin/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 14:07:48 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Apostrophe]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1161</guid>
		<description><![CDATA[Apostrophe, our content management system, now sports a nifty new blog plugin. And you can see it in action on GPTMC&#8217;s Philly360.
Wondering where the blog is? In the context of a larger website, a blog doesn&#8217;t always jump out and shake you by the lapels. On philly360 it&#8217;s the engine behind The Insider:



Notice the navigation [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apostrophenow.com/">Apostrophe</a>, our content management system, now sports a nifty new blog plugin. And you can see it in action on GPTMC&#8217;s <a href="http://philly360.visitphilly.com/">Philly360</a>.</p>
<p>Wondering where the blog is? In the context of a larger website, a blog doesn&#8217;t always jump out and shake you by the lapels. On philly360 it&#8217;s the engine behind <a href="http://philly360.visitphilly.com/the-insider">The Insider</a>:</p>
<hr />
<a href="http://www.flickr.com/photos/punkavenue/4678235935/" title="Screen shot 2010-06-07 at 9.19.17 AM by P'unk Ave, on Flickr"><img src="http://farm5.static.flickr.com/4057/4678235935_274cbc930c.jpg" width="500" height="408" alt="Screen shot 2010-06-07 at 9.19.17 AM" /></a></p>
<hr />
<p>Notice the navigation links at the left. You can spelunk by category, date or tag. </p>
<p>Don&#8217;t see the categories? That&#8217;s because, on this particular site, they have been rebranded as &#8220;Features.&#8221; This is a common way to use Apostrophe blog categories: as separate &#8220;blogs.&#8221; It&#8217;s possible to set them up with entirely separate pages at any point in the site or, as in this case, as subpages of the main blog.</p>
<p>The Apostrophe blog plugin also drives the <a href="http://philly360.visitphilly.com/events">Events page</a>:</p>
<hr />
<a href="http://www.flickr.com/photos/punkavenue/4678866010/" title="Screen shot 2010-06-07 at 9.23.19 AM by P'unk Ave, on Flickr"><img src="http://farm2.static.flickr.com/1299/4678866010_6a02f2ff82.jpg" width="500" height="323" alt="Screen shot 2010-06-07 at 9.23.19 AM" /></a></p>
<hr />
<p>But that&#8217;s not quite the whole story. In truth, the blog is front and center on the <a href="http://philly360.visitphilly.com/">home page</a>. Let&#8217;s take another look:</p>
<hr />
<a href="http://www.flickr.com/photos/punkavenue/4678865960/" title="Screen shot 2010-06-07 at 9.22.56 AM by P'unk Ave, on Flickr"><img src="http://farm5.static.flickr.com/4048/4678865960_80334ff66f.jpg" width="500" height="411" alt="Screen shot 2010-06-07 at 9.22.56 AM" /></a></p>
<hr />
<p>Notice the &#8220;News&#8221; and &#8220;Events&#8221; sections. These are Apostrophe slots pulling in recent blog posts and recent events from the blog plugin. Editors can plug in recent posts and events, or plug specific posts and events into specific pages. And designers can customize the presentation of posts to suit any page template.</p>
<p>Visitors can comment on blog posts in a spam-free environment, optionally logging in via Facebook, Twitter and several other services thanks to the excellent <a href="http://www.disqus.com/">Disqus</a> blog comment management service.</p>
<p>All of these capabilities are standard in Apostrophe&#8217;s blog plugin. And it&#8217;s open source, so <a href="http://www.symfony-project.org/">Symfony</a> developers can dive right in. Visit the <a href="http://trac.apostrophenow.org/wiki/ManualOverview">Apostrophe documentation</a> for details.</p>
<p><i>&#8220;Great, so how come your own blog is still running WordPress?&#8221;</i> That will change! It&#8217;s not broken and we have plenty of client projects to build, so it&#8217;s not our first priority today. But our blog will be migrating to punkave.com/window. We need to take a little time to design it nicely and take advantage of Disqus&#8217; &#8220;import comments from Wordpress&#8221; feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/06/07/introducing-apostrophes-blog-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>No Symfony users group meeting this week</title>
		<link>http://window.punkave.com/2010/05/10/no-symfony-users-group-meeting-this-week/</link>
		<comments>http://window.punkave.com/2010/05/10/no-symfony-users-group-meeting-this-week/#comments</comments>
		<pubDate>Mon, 10 May 2010 16:48:21 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://window.punkave.com/2010/05/10/no-symfony-users-group-meeting-this-week/</guid>
		<description><![CDATA[We&#8217;re looking at doing a meeting the following week or possibly next month. Fact is, we&#8217;re busy! 
Speaking of Symfony and being busy, if this announcement disappoints you&#8212; if you&#8217;re eager to hobnob with other Symfony developers&#8212; may I suggest you apply to work here? You&#8217;ll have all the Symfony you can eat! We&#8217;re particularly [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re looking at doing a meeting the following week or possibly next month. Fact is, we&#8217;re busy! </p>
<p>Speaking of Symfony and being busy, if this announcement disappoints you&mdash; if you&#8217;re eager to hobnob with other Symfony developers&mdash; may I suggest you <a href="http://jobs.37signals.com/jobs/6723">apply to work here</a>? You&#8217;ll have all the Symfony you can eat! We&#8217;re particularly eager to talk to experienced PHP5 framework coders, and to Ruby on Rails coders who are open to working in PHP (sekrit plans to convert us to Ruby are a bit unrealistic given the <a href="http://www.apostrophenow.com/">depth of our commitment to PHP and Symfony</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/05/10/no-symfony-users-group-meeting-this-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faster, Windows PHP! Kill! Kill!</title>
		<link>http://window.punkave.com/2010/04/26/faster-windows-php-kill-kill/</link>
		<comments>http://window.punkave.com/2010/04/26/faster-windows-php-kill-kill/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 22:23:20 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1106</guid>
		<description><![CDATA[IN WHICH our hero is narrowly saved by vague memories of a really dull presentation by some guys in suits.
You may recall my recent post on speeding up PHP on Linux without changing your PHP code. Those techniques have become standard practice around here, and the article has since been retweeted, linked to, engraved on [...]]]></description>
			<content:encoded><![CDATA[<p><i>IN WHICH our hero is narrowly saved by vague memories of a really dull presentation by some guys in suits.</i></p>
<p>You may recall my recent post on <a href="http://window.punkave.com/2010/03/08/faster-php-kill-kill/">speeding up PHP on Linux without changing your PHP code</a>. Those techniques have become standard practice around here, and the article has since been retweeted, linked to, engraved on an unobtanium disc embedded in a space probe to be launched next week by the Malaysian space forces, et cetera. So it seems we have the Linux PHP thing down to a science, for now.</p>
<p>But not every shop runs Linux, and one of our clients has asked us to deploy in a Windows environment. We&#8217;ve deployed PHP sites for them before, but that was in the Symfony 1.0 days, and there just weren&#8217;t nearly as many class files to compile. When we set out to deploy a modern site built with <a href="http://www.apostrophenow.com/">Apostrophe</a>, our content management system based on Symfony 1.4 and Doctrine, we were reminded that out-of-the-box PHP is slow, slow, slow.</p>
<p>I would gladly have addressed this the same way we do it on Linux: FastCGI, APC and Apache&#8217;s worker thread MPM. And in fact Apache for Windows seems to only support a special threaded MPM under Windows anyway, so that part is already familiar.</p>
<p>Unfortunately, the official PHP infrastructure for Windows has, frankly, undergone a bit of code rot lately:</p>
<p>The PHP binaries don&#8217;t seem to include a CGI/FastCGI binary! Shoot. Well, maybe APC alone will be enough. But APC is not standard with the Windows PHP binaries, so I need to get it from PECL. Okay, but <a href="http://pecl4win.php.net/">the PECL for Windows site</a> is &#8220;temporarily out of service.&#8221; A new solution is coming, but it&#8217;s not here yet. </p>
<p>Searches led me to <a href="http://downloads.php.net/pierre/">Pierre Joye&#8217;s folder on downloads.php.net</a>. Pierre is a core PHP developer, so I trust him, no problem there. But the version of APC found there just locks up Windows PHP, at least in my tests. I investigated alternative PHP bytecode caches and wound up with xcache. xcache worked for a while, then started spewing errors about classes being redefined, and always began doing so again within a few page views after each restart of Apache.</p>
<p>Yuck!</p>
<p>Fortunately, by this point a vague memory was stirring somewhere in my geeky cortex. I was in Paris&#8230;  I was full of pain au chocolat&#8230; I was very sleepy&#8230; two guys in suits were droning on and on about something while the crowd ignored them&#8230; AHA! Those Microsoft guys at Symfony Live! They were talking about speeding up PHP on Windows. They even mentioned hiring Pierre Joye to help out. But they didn&#8217;t demonstrate anything on Symfony, so I wasn&#8217;t paying a lot of attention&mdash;</p>
<p>Just enough as it turns out. The deal is this: Microsoft knows that PHP has, historically, sucked on Windows. And they have taken steps. And this is good news for the rest of us.</p>
<p>PHP can now be installed via the <a href="http://www.microsoft.com/web/platform/phponwindows.aspx">Microsoft Web Platform installer</a>. That gives you single-threaded PHP running via fastcgi&mdash; exactly like my Linux setup, except for the bytecode cache part.  And now the new <a href="http://www.iis.net/download/WinCacheForPHP">Windows Cache Extension for PHP</a> delivers a bytecode cache, equivalent to APC.</p>
<p>The end result is definitely in the ballpark with the performance of my Linux solution. Since I haven&#8217;t tested them on the same hardware (both boxes were VMs, and they were provided by different datacenters), I cannot say for certain which was faster. The Microsoft speakers at Symfony Live characterized it as better but still not as fast as the best PHP setups on Apache. At any rate it&#8217;s a big improvement and well worth your time if you need to host on Windows.</p>
<p>So here&#8217;s a HOWTO for configuring Symfony and PHP on Windows with good performance:</p>
<p>To configure IIS for Symfony:</p>
<p>1. Make sure IIS is installed. I know, right?</p>
<p>We want IIS 7. IIS 7 features an excellent importer for mod_rewrite rules, and Symfony loves mod_rewrite rules.</p>
<p>2. Install PHP from the <a href="http://www.microsoft.com/web/platform/phponwindows.aspx3">Microsoft Web Platform</a>. Click that link from IE running on your server (hint: remote desktop connection) for the easiest download-and-install process.</p>
<p>3. Install <a href="http://www.iis.net/download/WinCacheForPHP">Windows Cache for PHP</a> to  get acceptable speed from the above. I installed version 1.0 because 1.1 is in beta. The beta does look interesting because it has an alternate PHP session handler that uses shared memory. You&#8217;d have to configure symfony to actually use that feature I believe (welcome to factories.yml).</p>
<p>4. Let&#8217;s say your project&#8217;s short name (aka &#8220;Unix name&#8221;) is <tt>mysite</tt>. So copy your Symfony project to <tt>c:\mysite</tt>. (I&#8217;m assuming a virtual machine for a single client project. Choose a better folder structure if you&#8217;re deploying lots of sites on this box.) You can set up cygwin to allow ssh access and rsync those files with project:deploy, and in fact we do, but that&#8217;s a subject for another day. FTP also works.</p>
<p>5. Launch the IIS manager (Start -> Administrative Tools -> IIS Manager). </p>
<p>6. Open the server&#8217;s icon, then &#8220;Sites,&#8221; then delete the &#8220;default site&#8221; entry.</p>
<p>7. Add a new site entry called <tt>mysite</tt>. Map the site&#8217;s web folder to be the web subfolder of the Symfony project which you should have copied to <tt>c:\mysite</tt> by now. So the web folder path would be <tt>c:\mysite\web</tt>. Assign it to port 80. Do NOT set the web folder to be the root of your project! That is very dangerous as it exposes your databases.yml file. Point it to the web subfolder.</p>
<p>8. Always clear your Symfony cache after copying a site to a new server. At the command shell (start-&gt;run-&gt;cmd.exe), type:<br />
<tt><br />
cd \mysite<br />
php symfony cc<br />
</tt><br />
10. PHP needs write access to <tt>c:\windows\temp</tt> to store session data in order for logon sessions to work. You should have no trouble here on a new setup with just IIS I suspect, but if you previously ran Apache you might need to clean up. Clobber any existing session files in <tt>c:\windows\temp</tt>. Note that this is also the folder where the PHP error log file is found:</p>
<p><tt>c:\windows\temp\php-errors.log</tt></p>
<p>You can watch that file using a Cygwin shell and the tail -f command, or peek at it as needed with a text editor.</p>
<p>9. Try the site out, with a frontend controller name in the URL. You&#8217;ll get the home page but subpages won&#8217;t work yet without manually putting the controller name back in the URL. In IE running on the server itself, visit:</p>
<p><tt>http://localhost/index.php</tt></p>
<p>10. We need to add the mod_rewrite rules that remove the need for `/index.php`. But IIS doesn&#8217;t have mod_rewrite. Fortunately IIS7 has its own URL rewriting feature&#8230; and it can import your rules. </p>
<p>In the IIS manager, double-click <tt>mysite</tt>, then double-click &#8220;URL Rewrite.&#8221; In the &#8220;Actions&#8221; area at right, click &#8220;Import Rules&#8221; under &#8220;Inbound Rules.&#8221; </p>
<p><b>Edit:</b> if &#8220;Inbound Rules&#8221; is missing, close &#8220;URL Rewrite&#8221; and then open that feature again. Also try adding one empty rule manually first. The &#8220;incredible disappearing/reappearing &#8216;Inbound Rules&#8217; feature&#8221; appears to be a bug in the IIS manager.</p>
<p>Paste the mod_rewrite rules from your <tt>web/.htaccess</tt> file. IIS will do a pretty snazzy job of converting them when you click Import (but if you have fancy rules that go beyond the usual Symfony rules, give the end results a careful look-see). Then click &#8220;Apply.&#8221;</p>
<p><b>Edit:</b> IIS won&#8217;t tell you, but the settings you just created live in a file called <tt>web.config</tt> in the web subfolder of your project. <b>You must not crush this file</b> when you sync your project. Add the file to your project, or rsync exclude it if you&#8217;re using cygwin and project:deploy. Since you might want to add more rules to it manually I generally recommend the former. But one disadvantage of adding it to your project is that any edits you make in the GUI will get clobbered on future syncs if you don&#8217;t manually copy the resulting changes from web.config on the server back to your project. </p>
<p>11. Try the site again. You should be able to browse the entire site now.</p>
<p>12. Whoops, you can&#8217;t log in because IIS is hijacking the 401 Unauthorized error page. To fix that, go back to the IIS Manager pane for <tt>mysite</tt>. Double-click &#8220;Modules&#8221; and remove the &#8220;Custom Error&#8221; module. </p>
<p>Now your site&#8217;s login page will appear properly. Also your custom 404 and 500 error pages.</p>
<p>That&#8217;s it &#8211; you should be ready to go with much speedier Windows PHP.</p>
<p>Note that for the time being the Microsoft Web Platform seems to offer only PHP 5.2.13. This is a stable and sane choice and until recently I would have done it no differently. But PHP 5.3.2 is much better than 5.3.0 and 5.3.1 and offers new features that matter&mdash; improved memory management, faster performance and new PHP language features that the forthcoming Symfony 2.0 requires. Hopefully PHP 5.3.x will appear in the Web Platform installer soon.</p>
<p>(*) Yes, I sorted through the maze and found versions of PHP and APC that were supposedly for the same C runtime, et cetera. Still no love. xcache was better, but alas the redefined class errors put paid to that too.</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/04/26/faster-windows-php-kill-kill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Source Help Desk</title>
		<link>http://window.punkave.com/2010/04/14/open-source-help-desk/</link>
		<comments>http://window.punkave.com/2010/04/14/open-source-help-desk/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:00:15 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Apostrophe]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1103</guid>
		<description><![CDATA[TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;
CALLER: &#8220;I chose your open source project for my client project and it&#8217;s due tomorrow and it doesn&#8217;t work! This is your problem and you must fix it immediately or I will explode!&#8221;
TOM: [CLICK]

TOM: &#8220;Open source help desk, this is Tom [...]]]></description>
			<content:encoded><![CDATA[<p>TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;</p>
<p>CALLER: &#8220;I chose your open source project for my client project and it&#8217;s due tomorrow and it doesn&#8217;t work! This is your problem and you must fix it immediately or I will explode!&#8221;</p>
<p>TOM: [CLICK]</p>
<hr />
TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;</p>
<p>CALLER: &#8220;Your code has several bugs, which I am going to describe in harsh and unsympathetic but highly accurate detail.&#8221;</p>
<p>TOM: [Hangs up on caller, then fixes those bugs]</p>
<hr />
TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;</p>
<p>CALLER: &#8220;I translated your program into Swahili! Here&#8217;s the XLIFF file. Also I found a bug. Here&#8217;s a patch file.&#8221;</p>
<p>TOM: &#8220;Yay! Welcome to the cool people&#8217;s club! We&#8217;re having chocolate ice cream. Would you like some?&#8221;</p>
<hr />
TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;</p>
<p>CALLER: &#8220;500 ERROR! AAAAAAAAAAAAAA!&#8221;</p>
<p>TOM: &#8220;Lower your voice, read your log files, try the dev controller and call back.&#8221;</p>
<p>CALLER: [reads own log files, discovers glaringly obvious permissions problem, solves it, is never heard from again]</p>
<hr />
TOM: &#8220;Open source help desk, this is Tom speaking. How may we help each other?&#8221;</p>
<p>CALLER: &#8220;something isn&#8217;t quite right. When I do X, Y and Z, I get the following error message [copies and pastes complete error message].&#8221;</p>
<p>TOM: &#8220;reproducible bug reports make me deeply happy. I&#8217;ve just committed a fix in svn. Would you like some ice cream?&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/04/14/open-source-help-desk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Happy Birthday to Us!</title>
		<link>http://window.punkave.com/2010/04/01/happy-birthday-to-us-2/</link>
		<comments>http://window.punkave.com/2010/04/01/happy-birthday-to-us-2/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 22:01:04 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://window.punkave.com/2010/04/01/happy-birthday-to-us-2/</guid>
		<description><![CDATA[
P&#8217;unk Avenue is five years old today!
In honor of this momentous occasion, we&#8217;ve reshuffled our roles.
Effective immediately, I (Tom Boutell) am the lead designer.
As my first official act, I&#8217;ve changed our default font here on the window blog to the timeless and brilliant Comic Sans.
Rick has also changed jobs. Please welcome him as our lead [...]]]></description>
			<content:encoded><![CDATA[<div style="font-family: Comic Sans MS">
P&#8217;unk Avenue is five years old today!</p>
<p>In honor of this momentous occasion, we&#8217;ve reshuffled our roles.</p>
<p>Effective immediately, I (Tom Boutell) am the lead designer.</p>
<p>As my first official act, I&#8217;ve changed our default font here on the window blog to the timeless and brilliant Comic Sans.</p>
<p>Rick has also changed jobs. Please welcome him as our lead developer. I&#8217;m informed that he plans to switch us all over to Visual BASIC .NET immediately. The goal is to recreate Drupal in Visual BASIC. In the meantime we&#8217;ll be porting our <a href="http://www.apostrophenow.com/">Apostrophe</a> sites to Drupal as a transitional step.</p>
<p>Geoff is already happy in his role as chief compost engineer, and we aim to keep him that way. Jake will be making a lateral move from designer to chief executive, and Dan will be our business development lead. He plans to win new clients to our cause by explaining the Symfony embedded forms API to them, drowning them in source code until they surrender one by one.</p>
<p>Alex and John have announced plans to open a bakery producing exclusively apostrophe-shaped cookies.
</p></div>
<p><small>Just kidding, dear friends. Would we do such terrible things to you?</small></p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/04/01/happy-birthday-to-us-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Philly Symfony Users Group: ASSEMBLE!</title>
		<link>http://window.punkave.com/2010/03/25/philly-symfony-users-group-assemble/</link>
		<comments>http://window.punkave.com/2010/03/25/philly-symfony-users-group-assemble/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:49:58 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1082</guid>
		<description><![CDATA[
Sure, geeks have grabbed Philly by the balls, but that doesn&#8217;t mean we can&#8217;t sharpen our&#8230; skills&#8230; where am I going with this?
Oh yeah: the Philly Symfony Users Group. We use the Symfony framework for PHP development all day long. It&#8217;s been the basis for every single client project we&#8217;ve done since&#8230; hell, before I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://window.punkave.com/2010/03/25/philly-symfony-users-group-assemble/philly-symfony-awesome/" rel="attachment wp-att-1085"><img src="http://window.punkave.com/wp-content/uploads/2010/03/philly-symfony-awesome.png" alt="" title="philly-symfony-awesome" width="293" height="500" class="alignnone size-full wp-image-1085" /></a><br />
Sure, <a href="http://technicallyphilly.com/2010/03/15/philly-invades-south-by-southwest">geeks have grabbed Philly by the balls</a>, but that doesn&#8217;t mean we can&#8217;t sharpen our&#8230; skills&#8230; where am I going with this?</p>
<p>Oh yeah: the Philly Symfony Users Group. We use the <a href="http://www.symfony-project.org/">Symfony</a> framework for PHP development all day long. It&#8217;s been the basis for every single client project we&#8217;ve done since&#8230; hell, before I came aboard two years ago. It&#8217;s the foundation on which <a href="http://www.apostrophenow.com/">Apostrophe</a> is based. We cannot imagine suffering through web application development without it (or at least something on a similar plane of object-oriented, thoroughly modern, Model-View-Controller awesome, like Zend Framework). </p>
<p>But we haven&#8217;t met a lot of other Philly-based Symfony developers. And this is where you come in. We&#8217;d like to spread the word and help aspiring local Symfony developers get their boots on the ground. And if other experienced Symfony developers are out there reading this, we&#8217;d really, <em>really</em> like to get to know you better.</p>
<p>Announcing the Philly Symfony Users Group! Every second Thursday of the month at 6:30pm, you are cordially invited to our office at 1168 East Passyunk Avenue. We&#8217;ll start off with informal discussion (and beer), then someone will present on an aspect of Symfony development.</p>
<p>WHERE: 1168 E. Passyunk Ave<br />
WHEN: 6:30pm, Thursday April 8th<br />
WHAT: Symfony Users Group<br />
PRESENTATION: &#8220;Getting Started with Symfony,&#8221; Tom Boutell</p>
<p>At this first meeting I&#8217;ll talk about the process of installing Symfony, PHP and Apache on your own computer, focusing primarily on what it&#8217;s like to build a simple Symfony 1.4 web application. </p>
<p>You don&#8217;t have to be an experienced Symfony developer to attend! We welcome all PHP developers and those who aspire to become PHP coders. </p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/03/25/philly-symfony-users-group-assemble/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apostrophe Speaks Your Language</title>
		<link>http://window.punkave.com/2010/03/24/apostrophe-speaks-your-language/</link>
		<comments>http://window.punkave.com/2010/03/24/apostrophe-speaks-your-language/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 00:18:52 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Apostrophe]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://window.punkave.com/?p=1076</guid>
		<description><![CDATA[
We&#8217;ve just released version 1.0.9 of Apostrophe, our content management system. This is an exciting release because it includes French, German and Spanish user interfaces, as well as improved support for translating the actual content of your site into multiple languages.
If you visit our demo site and switch languages you&#8217;ll see pages with pretty translated [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://window.punkave.com/2010/03/24/apostrophe-speaks-your-language/screen-shot-2010-03-24-at-8-13-52-pm/" rel="attachment wp-att-1077"><img src="http://window.punkave.com/wp-content/uploads/2010/03/Screen-shot-2010-03-24-at-8.13.52-PM.png" alt="Apostrophe en francais" title="Apostrophe en francais" width="377" height="218" class="alignnone size-full wp-image-1077" /></a><br />
We&#8217;ve just released version 1.0.9 of <a href="http://www.apostrophenow.com/">Apostrophe</a>, our content management system. This is an exciting release because it includes French, German and Spanish user interfaces, as well as improved support for translating the actual content of your site into multiple languages.</p>
<p>If you <a href="http://demo.apostrophenow.com/">visit our demo site</a> and switch languages you&#8217;ll see pages with pretty translated chrome but no content. That, of course, is because our own demonstration web site&#8217;s content is currently only available in English. Feel free to play with translating it, but keep in mind that the demo site resets at the top of the hour. If you&#8217;re seriously interested in translating our demo site&#8217;s content to go along with the nicely translated interface, <a href="http://groups.google.com/group/apostrophenow">join the Apostrophe google group</a> and drop us a line to get involved.</p>
<p>Interested in putting this power to work on your projects? Visit <a href="http://www.apostrophenow.com/">apostrophenow.com</a> to find out how we can help you. If you&#8217;re a Symfony developer or just a ballsy webmaster who doesn&#8217;t mind learning some new tricks, head straight for the <a href="http://trac.apostrophenow.org/wiki/ManualOverview">Apostrophe manual</a> to check out our installation guide. We do documentation in a big way.</p>
<p>We&#8217;d like to thank Quentin Dugauthier (French), Frank Wenzl (German), and Pablo Godel (Spanish) for their hard volunteer work on the translations. Others are working hard on Portuguese and Greek and have been patient through our growing pains as we mastered the fine points of UTF-8 and character sets in our translation system. We&#8217;ll be sure to thank them by name when they are done, so you don&#8217;t nag them too much now. (:</p>
<hr />
<p>There are, of course, other important fixes and improvements in Apostrophe 1.0.9, including one security fix. Here&#8217;s the list:</p>
<ul>
<li>A computer abandoned by an admin who has logged out can no longer be used to edit slots the admin previously edited using cleverly constructed URLs (only an issue on the same computer and if the PHP session has not ended). Note that you must upgrade your myUser class in apps/frontend/lib to extend aSecurityUser rather than sfGuardSecurityUser to get this fix (aSecurityUser is a subclass of the latter)</li>
<li>Global or virtual-page media slots can be edited successfully on Symfony pages that are not CMS pages</li>
<li>Unpublished pages no longer interfere with aNavigationAccordion layout</li>
<li>Fixtures no longer use HTML tags our filters remove on edit</li>
<li>Plaintext slots now autolink URLs and email address (obfuscated) as described in the manual</li>
<li>Search engine updates refactored, search engine now updates when you save page settings</li>
<li>&#8216;tool&#8217; option to rich text slots now correctly activates the FCK toolbar set name you specify</li>
<li>Slot save/cancel buttons now survive form validation passes properly (thanks to Spike)</li>
<li>Date widget is XHTML correct (thanks Spike)</li>
<li>Engines now work when the CMS is not mounted at the root of the site (important for those using the CMS as a subfolder of a site dominated by other Symfony modules)</li>
<li>Attempting to attach a list of zero items to a slideshow no longer results in adding all items in the media repository</li>
<li>Cross-browser and XHTML strictness fixes</li>
<li>Moved lib/base to lib/action (you must symfony cc)</li>
<li>Lost connections between existing media slots and media items when editing other media slots: fixed. Also, slideshows etc. are no longer removed on &#8220;cancel,&#8221; and selecting zero media items no longer selects all media items</li>
<li>i18n of over 99% of the admin interface (many thanks to Quentin, Galileo, Frank, Pablo and Fotis), new languages are regularly being added to the demo project&#8217;s apps/frontend/i18n folder</li>
<li>More convenient i18n of your site content (temporary titles supplied, all navigation controls work for pages whose titles are not yet translated)</li>
<li>Aesthetic upgrades</li>
<li>Superadmins can grant superadmin status</li>
<li>Some demo-specific styles moved from a.css to demo.css</li>
<li>Optional language selector in a/login partial</li>
<li>Global admin buttons now have separate names and labels (labels can be internationalized) and a documented way to add and reorder them in app.yml</li>
<li>Alpha channel is now preserved when rendering PNGs from a PNG original with gd (not available with netpbm)</li>
<li>Compact PDF slot style, without inline preview (you can override this in aMediaPDF/normalView if you want it back and you have ghostscript)</li>
<li>Better IE6 upgrade message</li>
<li>Various private methods now protected for easier app level overrides</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/03/24/apostrophe-speaks-your-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beware of Geeks Bearing Gifts</title>
		<link>http://window.punkave.com/2010/03/11/beware-of-geeks-bearing-gifts/</link>
		<comments>http://window.punkave.com/2010/03/11/beware-of-geeks-bearing-gifts/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 18:06:38 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://window.punkave.com/2010/03/11/beware-of-geeks-bearing-gifts/</guid>
		<description><![CDATA[@odysseus is now mayor of Shiny Wooden Horse Disco Everybody Come Check It Out! on #foursquare!
@agamemnon just checked in from Shiny Wooden Horse Disco Everybody Come Check It Out! via gowalla
@cassandra IT&#8217;S A TRAP!
@priam @cassandra SHUT UP ADMIRAL AKBAR THIS HORSE IS AWESOME
@agamemnon is now mayor of Sacked Ruin of Troy BOOYEAH! on #foursquare!
]]></description>
			<content:encoded><![CDATA[<p>@odysseus is now mayor of Shiny Wooden Horse Disco Everybody Come Check It Out! on #foursquare!</p>
<p>@agamemnon just checked in from Shiny Wooden Horse Disco Everybody Come Check It Out! via gowalla</p>
<p>@cassandra IT&#8217;S A TRAP!</p>
<p>@priam @cassandra SHUT UP ADMIRAL AKBAR THIS HORSE IS AWESOME</p>
<p>@agamemnon is now mayor of Sacked Ruin of Troy BOOYEAH! on #foursquare!</p>
]]></content:encoded>
			<wfw:commentRss>http://window.punkave.com/2010/03/11/beware-of-geeks-bearing-gifts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
