<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SquarePeg Systems</title>
	
	<link>http://squarepegsystems.com</link>
	<description>Open Source Experts In Omaha</description>
	<lastBuildDate>Mon, 03 May 2010 23:00:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SquarepegSystems" /><feedburner:info uri="squarepegsystems" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>SquarepegSystems</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Adventures With A Broken Screen</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/AB9MxUZVyYI/</link>
		<comments>http://squarepegsystems.com/2010/05/adventures-with-a-broken-screen/#comments</comments>
		<pubDate>Mon, 03 May 2010 23:00:06 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[broken screen]]></category>
		<category><![CDATA[laptop]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=118</guid>
		<description><![CDATA[A older friend of mine stopped me in church a few weeks ago.  He said their granddaughter&#8217;s laptop was broken.    It starts up and it just beeps. The laptop isn&#8217;t a big deal, but the files on there are &#8212; it&#8217;s all of her files for her graduate degree.
I know these people well, and I [...]]]></description>
			<content:encoded><![CDATA[<p>A older friend of mine stopped me in church a few weeks ago.  He said their granddaughter&#8217;s laptop was broken.    It starts up and it just beeps. The laptop isn&#8217;t a big deal, but the files on there are &#8212; it&#8217;s all of her files for her graduate degree.</p>
<p>I know these people well, and I know they don&#8217;t know much about technology.  I don&#8217;t know their granddaughter at all, but since she has no backup I assume that she&#8217;s not real savvy.  I really don&#8217;t like doing these things, but it&#8217;s for a friend and I understand the hardship this can create.  I also understand how much a repair shop would charge for this, and it wasn&#8217;t going to be pretty.</p>
<p>My guess was a virus finally destroyed the boot record, or some DLL and now refused to boot.  My idea was to boot from a CD, find the files,  copy them, and call it done.  However, it had been a while since I have done any search-and-rescue operations, so I started looking for the latest tools &#8212; meaning,  a Linux CD to boot with and to move those files off.  <a href="http://www.sysresccd.org/Main_Page">My choice</a>, however, didn&#8217;t actually matter.</p>
<p>I got the laptop a couple of days later and verified that nothing came up on the screen.  And by nothing, I mean the light of the display as well.  &#8220;Odd,&#8221; I thought. I looked at the case and noticed that it was horribly cracked around the hinge of the screen. That means that it wasn&#8217;t an OS problem &#8212; the screen was broken.  A call to the granddaughter confirmed it, &#8220;Yeah, I dropped it a few times.&#8221;  My advice: &#8220;Don&#8217;t do that!&#8221;</p>
<p>So this is a bit of a different animal, but didn&#8217;t seem so hard. I hooked it up to a monitor, thinking that the VGA port would still work. Nope, no luck. No amount of switching the input would help it.  I guess all those drops ruined the port as well.</p>
<p>Now I was back to square one. I mucked around with moving the screen and could, as some points, get the screen light up so I could see the login screen. It may have only lasted a second, but at least it lasted.  After some toying around, I figured out if I left the laptop on the floor and moved the screen back as far as I could, I could see it well enough to log in.  After that, my plan was to install <a href="http://www.tightvnc.com/">TightVNC</a>, log in remote, and copy the files.</p>
<p>This was thwarted by the simple fact that Windows Vista couldn&#8217;t find my wireless network! No kidding!  It never ever listed it!  Maybe it was from the position the laptop was in, but I couldn&#8217;t move that because I knew I could see the screen consistently while sitting there. I then realized that this laptop had a CD burner on it. I got a blank CD, slipped it in, and burned a copy of the My Documents folder.  I barely had enough room but I got them all.</p>
<p>But then, of course, my MacBook Pro refused to read the CD!  So I went to the Linux box  I have and it could read the CD well  enough.  Then I uploaded the files to <a href="https://www.dropbox.com/referrals/NTUyNTYwNjc5">my Dropbox account</a>, shared the folder with owner, and then I was done.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/AB9MxUZVyYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/05/adventures-with-a-broken-screen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/05/adventures-with-a-broken-screen/</feedburner:origLink></item>
		<item>
		<title>How To Get Your Data To Disappear Completely</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/LCkDuvW0N2U/</link>
		<comments>http://squarepegsystems.com/2010/04/how-to-get-your-data-to-disappear-completely/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 23:00:38 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[hard drive]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=115</guid>
		<description><![CDATA[Some thoughts on how to completely erase a hard disk and then a simple recommendation on something that does it.]]></description>
			<content:encoded><![CDATA[<p>I occasionally ask how to completely wipe a hard drive.  Usually someone is selling their PC, giving their old one away, etc., and know all the risks of leaving bits of their identity on their hard disk.    I have been telling people where to get a basic security CD that runs Linux and run scrub, but that can take a long time (someone told me it took the better part of a weekend on their old laptop!).  I ran into <a href="http://www.dban.org/">Darik&#8217;s Boot  And Nuke </a> (DBAN) recently and that may be what I suggest from now on.</p>
<p><a href="http://www.dban.org/about">From their website:</a></p>
<p style="padding-left: 30px;">Darik&#8217;s Boot and Nuke (&#8220;DBAN&#8221;) is a self-contained boot disk that  securely wipes the hard disks of most computers. DBAN will automatically  and completely delete the contents of any hard disk that it can detect,  which makes it an appropriate utility for bulk or emergency data  destruction.</p>
<p>Why DBAN?  It seems faster, has more methods, and has a nice little package to install everything. If you still aren&#8217;t trusting, then simply smash your drive with a hammer &#8212; sounds strange, but it will work.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/LCkDuvW0N2U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/04/how-to-get-your-data-to-disappear-completely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/04/how-to-get-your-data-to-disappear-completely/</feedburner:origLink></item>
		<item>
		<title>Windows Maintence Tips</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/zEfUE_I5eWI/</link>
		<comments>http://squarepegsystems.com/2010/04/windows-maintence-tips/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 23:00:26 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[company]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[windows maintence]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=96</guid>
		<description><![CDATA[I found this post at LifeHacker to be a good list of stabilizing Windows.  I knew somethings already, but some of the items were surprising to me.  The list tries to prove, or disprove, any misconceptions you may have.  Some of my thoughts:

Who knew that Microsoft  Security Essentials was really that good? I would [...]]]></description>
			<content:encoded><![CDATA[<p>I found <a href="http://www.lifehacker.com.au/2010/04/windows-maintenance-tips-the-good-bad-and-useless/">this post at LifeHacker </a>to be a good list of stabilizing Windows.  I knew somethings already, but some of the items were surprising to me.  The list tries to prove, or disprove, any misconceptions you may have.  Some of my thoughts:</p>
<ul>
<li>Who knew that <a href="http://www.microsoft.com/Security_Essentials/">Microsoft  Security Essentials</a> was really that good? I would have never thought that.</li>
<li>I agree with being very careful with Admin rights and only use them when you need to.  Nothing else gives you more security headaches than some malware installed as Admin.</li>
<li><a href="http://www.revouninstaller.com/">Revo</a> is a good thing!  Most Uninstallers leave lots of stuff behind.</li>
<li>I&#8217;m glad to know that defragging is finally going away in the Windows 7/Vista world and beyond.  It&#8217;s been around too long.</li>
</ul>
<p>Maintenance on your PC is something you need to do,  just like you need to do dishes, take out the garbage, etc.  Do it regularly, before things start smelling, er, crashing.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/zEfUE_I5eWI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/04/windows-maintence-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/04/windows-maintence-tips/</feedburner:origLink></item>
		<item>
		<title>Weave: The Best FireFox Plugin You Aren’t Using</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/tq2v6hMIE-k/</link>
		<comments>http://squarepegsystems.com/2010/04/weave-the-best-firefox-plugin-you-arent-using/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 23:00:52 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[bookmarks]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=90</guid>
		<description><![CDATA[(This is shamelessly cross-posted from my personal blog. But I think it&#8217;s worth spreading the news even more.)
I&#8217;m not sure how I stumbled onto it &#8212; I think I was reading  something at Ars Technica and saw a link for this article about Mozilla Weave.  I never  heard of it before &#8212; it [...]]]></description>
			<content:encoded><![CDATA[<p>(This is shamelessly cross-posted <a href="http://mike.hostetlerhome.com/2010/03/18/weave-the-best-firefox-plugin-you-arent-using/">from my personal blog.</a> But I think it&#8217;s worth spreading the news even more.)</p>
<p>I&#8217;m not sure how I stumbled onto it &#8212; I think I was reading  something at Ars Technica and saw a link for<a href="http://arstechnica.com/open-source/reviews/2010/02/mozilla-weave-10-take-your-tabs-and-bookmarks-everywhere.ars"> this article </a>about <a href="https://mozillalabs.com/weave/">Mozilla Weave</a>.  I never  heard of it before &#8212; it sounded interesting.  After a month of heavy  use, let me just say that it&#8217;s not just interesting &#8212; it&#8217;s downright,  wicked cool.</p>
<p>Let me tell you my pattern &#8212; I use FireFox in two places: Work and  at Home.  Many times I wish I stumble onto a site I want to read at  home.  Usually I just save it to <a href="http://www.diigo.com/user/thehaas">Diigo</a>. But sometimes I  forget.  The biggest annoyance is passwords. Yes, I save a ton of  website passwords in FireFox.  But it stinks when I save it on the home  machine but want to get into my account at work, and I can&#8217;t remember  what password I used there.</p>
<p>Weave solves all these problems.  And ones that I didn&#8217;t know I even  had.</p>
<p>So now when am I work, I don&#8217;t worry about saving an address to Diigo  just so I can read it at home. Instead, I do nothing special.  When I  go home, I start FireFox, I wait about 15 seconds and I see that it  starts to sync. After that, I have all my history from my last session.   Yes, you read that.  All my history from my work browsing session.  Oh,  and if I setup a web account during the day at work and save the  passwords, that is synced too.  Preferences?  Check, but in a smart way.  Like my proxy server config from the office is not moved to home.   That&#8217;s a good thing.  Bookmarks? Check. Yes, I still use bookmarks and I  probably use them more now because they are synced between my machines.</p>
<p>A neat feature is tabs.  Yes, tabs are saved across browsing sessions  on different machines.  So if I want to quickly see what I was looking  at last night at home, I can go to History-&gt; Tabs from other  computers while at work.</p>
<p>Many of you may be thinking. &#8220;How is this different than FoxyMarks/XMarks that installs spyware and publishes your web history?&#8221;  Well, not only does Mozilla not publish or  track your history but t<a href="https://wiki.mozilla.org/Labs/Weave/Sync_Client_Security_Review#Security_and_Privacy">hey  also encrypt all data with a passphrase of your choosing. </a>So, yeah,  they thought of that too.  If you are truly paranoid you can <a href="https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup">setup your  own Weave server.</a></p>
<p>So I think it&#8217;s worth a go, especially if you are still using FireFox  instead of Chrome (which I still am on the fence about, but that&#8217;s  another discussion.)</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/tq2v6hMIE-k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/04/weave-the-best-firefox-plugin-you-arent-using/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/04/weave-the-best-firefox-plugin-you-arent-using/</feedburner:origLink></item>
		<item>
		<title>Download Insurance? Seriously?</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/DNINxALcx-A/</link>
		<comments>http://squarepegsystems.com/2010/04/download-insurance-seriously/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 23:16:17 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[antivirus]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=86</guid>
		<description><![CDATA[My mother-in-law alerted to me  something Symantec was offering in the latest version of the Norton Security Suite &#8212; Download Insurance. What?  Huh?  Yes,  Download Insurance.  For $9.95 Symantec will give you the opportunity to download the software that you originally bought from them for up to one year.  Without the insurance, they will only [...]]]></description>
			<content:encoded><![CDATA[<p>My mother-in-law alerted to me  something Symantec was offering in the latest version of the Norton Security Suite &#8212; <a href="http://buy-static.norton.com/estore/html/NDI.html">Download Insurance.</a> What?  Huh?  Yes,  Download Insurance.  For $9.95 Symantec will give you the opportunity to download the software that<em> you originally bought from them</em> for up to one year.  Without the insurance, they will only let you download the software <em>that you paid for</em> only 60 days.</p>
<p>Note that you don&#8217;t pay $9.95 when you need to download it &#8212; you pay $9.95 up front and maybe you will need it. Or maybe you won&#8217;t.</p>
<p>What a rip-off!  Symantec should let you download it as long as that version is current &#8212; not just 60 days.  It really costs them little money to store a file on a server these days.</p>
<p>So I&#8217;ll tell you how you can keep your software available for a year &#8212; or longer &#8212; for a lot less money than $9.95.  Just burn it onto a well-labeled CD and put it in a safe place.  If you think you will lose it, then setup a free account at <a href="https://www.dropbox.com/referrals/NTUyNTYwNjc5">DropBox </a>and upload your file there.</p>
<p>Please, don&#8217;t let Symantec still your money!</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/DNINxALcx-A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/04/download-insurance-seriously/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/04/download-insurance-seriously/</feedburner:origLink></item>
		<item>
		<title>My own “Oh My ZSH”</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/RpDeN1spkvI/</link>
		<comments>http://squarepegsystems.com/2010/04/my-own-oh-my-zsh/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 12:57:48 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[zsh shell]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=82</guid>
		<description><![CDATA[I&#8217;ve been thinking about cleaning up my own ZShell config and putting  it out in the wild, but that just didn&#8217;t seem to happen. I was looking  for something in ZShell &#8212; I think it  was getting version control information at the prompt and I  stumbled upon a mention of Oh [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about cleaning up my own ZShell config and putting  it out in the wild, but that just didn&#8217;t seem to happen. I was looking  for something in ZShell &#8212; I think <a href="http://michael-prokop.at/blog/2008/12/15/mikas-advent-calendar-day-15-zsh-vcs_info/">it  was getting version control information</a> at the prompt and I  stumbled upon a mention of<a href="http://github.com/robbyrussell/oh-my-zsh/"> Oh My ZSH</a> which is a bunch of powerful ZShell configs arranged in a nice way.</p>
<p>I tried it and I liked it. But it didn&#8217;t have everything that I used.  But, heck it&#8217;s on github &#8212; easy forking.  <a href="http://github.com/squarepegsys/oh-my-zsh">So I did.</a> My  changes are:</p>
<ul>
<li>Change the <code>xiong-chiamiov-plus</code> theme to use <code>vcs_info</code> instead of being git-specific.  Gave the new theme the original name of  <code>mikeh</code>.</li>
<li>Option to configure a terminal with strange settings (labor   intensive on the first run, perfectly wonderful after that.)</li>
<li>Will automatically rehash the path, so new commands will be found   immediately</li>
<li>Added realias to quickly make a new shell alias/function (EDITOR env  variable required)</li>
<li>Removed upgrade checker (I don&#8217;t expect you to trust me)</li>
<li>Share history with your zsh’s on the same host</li>
</ul>
<p>More changes coming as time permits.  Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/RpDeN1spkvI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/04/my-own-oh-my-zsh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/04/my-own-oh-my-zsh/</feedburner:origLink></item>
		<item>
		<title>Free from 37Signals</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/gG9UTy8-QWc/</link>
		<comments>http://squarepegsystems.com/2010/03/free-from-37signals/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 19:39:14 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[company]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/2010/03/free-from-37signals/</guid>
		<description><![CDATA[How come I didn&#8217;t know that 37Signals offers free versions their applications?  Sure, they are someone limited down, but for where I am now, they are perfect &#8212; or, at the very least, manageable.
Both BaseCamp and HighRise are excellent tools.  You&#8217;d be remiss if you didn&#8217;t at least try them out.
]]></description>
			<content:encoded><![CDATA[<p>How come I didn&#8217;t know that 37Signals offers free versions their applications?  Sure, they are someone limited down, but for where I am now, they are perfect &#8212; or, at the very least, manageable.</p>
<p>Both <a href="http://basecamphq.com/">BaseCamp</a> and <a href="http://highrisehq.com/">HighRise</a> are excellent tools.  You&#8217;d be remiss if you didn&#8217;t at least try them out.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/gG9UTy8-QWc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/03/free-from-37signals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/03/free-from-37signals/</feedburner:origLink></item>
		<item>
		<title>One Year Later . . .</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/ygNMGPxyhOA/</link>
		<comments>http://squarepegsystems.com/2010/01/one-year-later/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 17:08:02 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[company]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[one-year]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=74</guid>
		<description><![CDATA[It&#8217;s now been one year ago when I put my shingle out on this website and created SP Information Systems, LLC, aka SquarePeg Systems.  It was an experiment after doing a year of somewhat consistent side-projects outside of my day job by taking a step forward and being, well, a bit more serious about it [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s now been one year ago when I put my shingle out on this website and created SP Information Systems, LLC, aka SquarePeg Systems.  It was an experiment after doing a year of somewhat consistent side-projects outside of my day job by taking a step forward and being, well, a bit more serious about it while still trying to maintain my day job and my family.</p>
<p>2009 was a memorable year for a lot of people, as it was for the Hostetler house for several reasons.  For my little LLC, though, it was all really good.  I was as busy as I wanted to be &#8212; usually busier.  One surprising thing was how busy I was &#8212; there were really no lulls yet I didn&#8217;t have to market myself at all.  My customers usually found me, or at least inquired about getting help from someone.</p>
<p>What did I do the most of?  Nothing. Or, really, everything.  Including:</p>
<ul>
<li>PHP</li>
<li>Django/Python</li>
<li>JavaScript</li>
<li>Networking</li>
<li>Linux Administration</li>
<li>SCO Administration</li>
<li>Window Vista</li>
<li>WordPress consulting</li>
<li>Web Design</li>
<li>Database Design</li>
<li>eCommerce</li>
<li>SEO</li>
</ul>
<p>I did more of some things than others, of course.  But I still dipped my toes into each and every thing on that list.  Amazing, huh?</p>
<p>Thanks for a great first year &#8212; the shingle it out. Let&#8217;s keep it going.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/ygNMGPxyhOA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2010/01/one-year-later/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2010/01/one-year-later/</feedburner:origLink></item>
		<item>
		<title>Have Your Cake and Your PHP too.</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/vtmIg0b59VA/</link>
		<comments>http://squarepegsystems.com/2009/12/have-your-cake-and-your-php-too/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 23:21:33 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=66</guid>
		<description><![CDATA[I&#8217;ve never had a great love for PHP the Language. It seems like if someone wanted functionality into the core language, they just vomited it up inside the code base, submitted it, and it was accepted. They are trying to make this better in the core, but alas it&#8217;s still too easy to do dumb [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never had a great love for PHP the Language. It seems like if someone wanted functionality into the core language,<a title="A wrong solution to a problem." href="http://us.php.net/goto"> they just vomited it up inside the code base,</a> submitted it, and it was accepted. They are trying to make this better in the core, but alas it&#8217;s still too easy to do dumb things.  And let&#8217;s not get started <a href="http://www.phpfreaks.com/tutorial/php-security">on the security problems.</a></p>
<p>But PHP the Platform is much more interesting to me.  You can deploy PHP applications in just about any cheap web host solution.  Run it inside of Apache via mod_php or maybe under FastCGI &#8212; doesn&#8217;t matter.  It really is a write-once, run anywhere language.  And lots of big applications use it &#8212; WordPress, Joomla, osCommerce, etc. You may not like the Language, but since it is married to the Platform, the Language is here to say.</p>
<p>I&#8217;ve mucked with <a href="http://cakephp.org/">CakePHP </a>a time or two. It&#8217;s an interesting project to say the least.  It&#8217;s a web development framework a la Ruby on Rails or Django, but for PHP.  It strictly enforces<a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller"> the MVC pattern</a>, which leans itself to more maintainable code.  But, unlike RoR or Django, the Views are not written in a whole new templating language, but in PHP itself, and it gives you the objects that have your data in it to display.</p>
<p>Another interesting thing about CakePHP is how it creates Models.  In RoR or Django, you create fields in Model objects and then run a script and it creates the database for you.  In CakePHP, you just name your model appropriately and, when CakePHP needs that Model, it does a <a href="http://dev.mysql.com/doc/refman/5.0/en/describe.html">DESCRIBE</a> on the table and populates the data points accordingly. This is good and bad &#8212; it means your database is the king. It also means that you have to follow strict set of conventions or configure everything in your Model object as to what is what.  This means that you could use CakePHP with any database structure &#8212; in theory.  More on conventions later.</p>
<p>Anyway, CakePHP has been in the back of my mind for a year or so (at least) when I got approached with an opportunity to do a POC of a simple CRUD application. The POC would be hosted on a cheapo shared hosting provider, so anything like Django or Rails was out.  So I dug out CakePHP and finished the POC.  When it was over, the customer liked it and we really discovered what he was after &#8212; and it wasn&#8217;t just a simple CRUD application anymore!  When we were specing it out and decided that the customer needed to get some high-quality, dedicated hosting, I asked if we wanted to write the real thing in Django or RoR.  It was decided no for the simple thing that PHP developers are much easier to find.  If I was unavailable and fixes were needed, they could easily find a PHP developer to do it.  Not necessarily so with Django and with RoR (though I think there are more RoR developers than Django, but there are still more PHP people out there!).</p>
<p>So I put CakePHP through some tests and am still using it.  Is it my favorite?  No &#8212; that&#8217;s still Django.  But it&#8217;s very livable, especially under the constraints I was in.  And, hey, it&#8217;s making PHP relatively painless to code in, and it&#8217;s not even making me feel dirty.</p>
<p>One thing nice about CakePHP is <a href="http://book.cakephp.org/view/108/The-CakePHP-Console">their console application,</a> although they don&#8217;t tell you about that until you are on page, like, 100 of their docs. There is no mention of it in their tutorial! Blech!  It&#8217;s pretty easy though:</p>
<pre class="brush: bash;">
cake bake &lt;name&gt;
</pre>
<p>which will bring up a menu and you choose Model, View, or Controller.  You can also do:</p>
<pre class="brush: bash;">
cake bake model &lt;name&gt;
cake bake view &lt;name&gt;
cake bake controller &lt;name&gt;
</pre>
<p><a href="http://www.webdevelopment2.com/cakephp-bake-baking-models-controllers-views-cakephp-12/">More information here.</a></p>
<p>One thing about CakePHP that bugs me (and, actually, it bugs me about RoR, too) is that the naming conventions aren&#8217;t conventions I would use.   <a href="http://book.cakephp.org/view/328/Cake-Conventions">I finally  found this page</a> which explains all the conventions in on place.  Also notice that it&#8217;s on the last page of their documentation.</p>
<p>This seems sort of a mixed review, but it&#8217;s not.  If you are working on a PHP application from scratch, it would behove you to at least look at CakePHP.  I like it &#8212; for PHP.  Would I rather be doing Django? Yes &#8212; but I can&#8217;t always be able to do that.  It&#8217;s good to have a framework on a ubiquitous, yet annoying,  language.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/vtmIg0b59VA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2009/12/have-your-cake-and-your-php-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2009/12/have-your-cake-and-your-php-too/</feedburner:origLink></item>
		<item>
		<title>When PHP Simply Stops</title>
		<link>http://feedproxy.google.com/~r/SquarepegSystems/~3/5iTH160mpEc/</link>
		<comments>http://squarepegsystems.com/2009/08/when-php-simply-stops/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 13:10:31 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[unix]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[suhosin]]></category>

		<guid isPermaLink="false">http://squarepegsystems.com/?p=59</guid>
		<description><![CDATA[A lot of people have problems with PHP the language, but I&#8217;ve never come into this problem involving Apache PHP module before.
A long time customer got back in touch with me.  A web app he&#8217;s been working on was getting ready to go prime time and they ran a security audit on the server. That [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people have problems with PHP the language, but I&#8217;ve never come into this problem involving Apache PHP module before.</p>
<p>A long time customer got back in touch with me.  A web app he&#8217;s been working on was getting ready to go prime time and they ran a security audit on the server. That audit found several things wrong, and strongly recommended an upgrade to PHP 5.2.10.  As of this writing, PHP 5.2.10 was very new and Debian testing didn&#8217;t even have a package for it yet.  So I fiddled around and finally found did the right combination of <a href="http://wiki.debian.org/AptPinning">pinning </a>to install PHP 5.2.10 from unstable.  If you are thinking &#8220;Yikes!&#8221; then you are already ahead of me.</p>
<p>The next day, I get an email saying that their webapp just stops.  I get on and, sure enough, sometimes, randomly, you get a blank page.  Not a 404, 405, or another error &#8212; just a blank white page.  A reload it works fine.  I checked out <code>/var/log/apache2/error.log</code> and see tons of messages with the following:</p>
<pre>[notice] child pid 24483 exit signal Segmentation fault (11)
[notice] child pid 24485 exit signal Segmentation fault (11)
[notice] child pid 24481 exit signal Segmentation fault (11)
[notice] child pid 24489 exit signal Segmentation fault (11)</pre>
<p>Oh, that&#8217;s bad.   Playing around with it demonstrates that the seg fault happens when the page doesn&#8217;t show up &#8212; just like I thought.</p>
<p>Now I get into detective mode and try to figure out what the heck is going on.  I found <a href="http://www.dotdeb.org/">DotDeb</a>, which makes fresh Debian packages for older releases &#8212; like PHP 5.2.10!  But the installers of that package <a href="http://www.dotdeb.org/2009/06/25/php-5-2-10-packages-for-lennyetch-are-now-available/">was having the same problems I had</a>.  By careful reading, it seems that Debian installed at least part of the <a href="http://www.hardened-php.net/suhosin/">Suhosin </a>patch and that seems to be culprit.  Users commented that disabling it seemed to stop the seg faults &#8212; but how do you do that?</p>
<p>I looked at the configurations in <code>/etc/php5 </code> and there was a file in <code>conf.d</code> called <code>suhosin.ini</code>, but no mention of it in the main <code>apache2/php.ini</code> file (the main PHP config for Apache2). In a lark I moved<code> suhosin.ini </code>to <code>suhosin.ini.bad</code> and restarted Apache.   And the problem when away.  Like magic.</p>
<p>This is the problem when you are forced to always have the latest and greatest tools. And PHP is a hard one &#8212; you are always chasing your tail with it&#8217;s security.  But it really should &#8220;just work&#8221;.</p>
<img src="http://feeds.feedburner.com/~r/SquarepegSystems/~4/5iTH160mpEc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://squarepegsystems.com/2009/08/when-php-simply-stops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://squarepegsystems.com/2009/08/when-php-simply-stops/</feedburner:origLink></item>
	</channel>
</rss>
