<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3608897718653312723</id><updated>2012-02-16T05:30:49.597-06:00</updated><category term='apache'/><category term='design'/><category term='couchdb'/><category term='entrepreneurship'/><category term='goals'/><category term='tools'/><category term='php'/><category term='mockups'/><title type='text'>Blaisco</title><subtitle type='html'>A man on a mission.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-9074328037532040218</id><published>2009-05-18T23:38:00.000-05:00</published><updated>2009-05-18T23:38:45.862-05:00</updated><title type='text'>Moved</title><content type='html'>My blog is now at &lt;a href="http://scottblaine.com/"&gt;http://scottblaine.com/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-9074328037532040218?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/9074328037532040218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/05/moved.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/9074328037532040218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/9074328037532040218'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/05/moved.html' title='Moved'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-2730626292282647491</id><published>2009-05-15T22:00:00.005-05:00</published><updated>2009-05-16T17:17:25.468-05:00</updated><title type='text'>Catching Up</title><content type='html'>The move into the house it taking a toll on my time. Unfortunately I haven't had much time to work on the site. I'm hoping I can make some real progress this weekend, at least creating mockups of the dashboard (or search and search results page) if nothing else.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-2730626292282647491?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/2730626292282647491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/05/catching-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2730626292282647491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2730626292282647491'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/05/catching-up.html' title='Catching Up'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-5797837941083931802</id><published>2009-05-12T22:00:00.001-05:00</published><updated>2009-05-13T07:15:47.879-05:00</updated><title type='text'>The building blocks of a registration page</title><content type='html'>I&amp;#39;ve built out and pretty much completed the registration workflow at this point. It&amp;#39;s nothing fancy, you fill out a bunch of forms and upon successful completion it drops a row into the database, but it works. There were quite a few individual components that contributed to my success. &lt;br /&gt;&lt;br /&gt;First off, I used &lt;a href="http://woork.blogspot.com/2008/06/clean-and-pure-css-form-design.html"&gt;a HTML + CSS form template that I found over at woork&lt;/a&gt;. I wanted to avoid tables and this helped me to do it. Ultimately I&amp;#39;m not quite sure if its the final model I&amp;#39;ll follow for building out forms, but it&amp;#39;s working for now, so I&amp;#39;ll quit messing with it. &lt;br /&gt;&lt;br /&gt;Next I used &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; + &lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt; to style my buttons and error notifications. Google is hosting these libraries thanks to their &lt;a href="http://code.google.com/apis/ajaxlibs/documentation/"&gt;AJAX Libraries API&lt;/a&gt;. Oh, and did you know that Google also hosts the CSS for jQuery UI as of jQuery UI 1.7.0? They don&amp;#39;t mention it on their API page anywhere, but they do. Here&amp;#39;s how to load up the CSS for the jQuery UI Redmond theme via Google:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;all&amp;quot; href=&amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/redmond/jquery-ui.css"&gt;http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/redmond/jquery-ui.css&lt;/a&gt;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also rediculously helpful is &lt;a href="http://www.filamentgroup.com/examples/buttonFrameworkCSS/"&gt;a page over at the filament group that explains how to style buttons for jQuery UI&lt;/a&gt;, as well as how to do things like getting a hand icon to show up when you hover over a button. (Why doesn&amp;#39;t jQuery UI have a page like this?!)&lt;br /&gt;&lt;br /&gt;As for the actual logic behind the form, most of that is handled by the awesomeness that is CodeIgniter. They have &lt;a href="http://codeigniter.com/user_guide/libraries/form_validation.html"&gt;a fantastic form validation class&lt;/a&gt; that handles almost everything for you. Not only can you validate data, but in the same stroke you can clean data too (e.g. trim, convert to a md5 hash, etc.), like this:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;$this-&amp;gt;form_validation-&amp;gt;set_rules(&amp;#39;username&amp;#39;, &amp;#39;Username&amp;#39;, &amp;#39;trim|required|min_length[5]|max_length[12]|xss_clean&amp;#39;);&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;$this-&amp;gt;form_validation-&amp;gt;set_rules(&amp;#39;password&amp;#39;, &amp;#39;Password&amp;#39;, &amp;#39;trim|required|matches[passconf]|md5&amp;#39;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thanks to their ability to chain all of the rules together, you can literally validate and prep a field in one line. Done. Finito!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-5797837941083931802?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/5797837941083931802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/05/building-blocks-of-registration-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/5797837941083931802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/5797837941083931802'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/05/building-blocks-of-registration-page.html' title='The building blocks of a registration page'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-8303243102132058684</id><published>2009-05-09T20:00:00.011-05:00</published><updated>2009-05-09T20:31:57.058-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><title type='text'>How I stay motivated</title><content type='html'>I tend to read a lot of posts on entrepreneurship. Not necessarily because I think of myself as an entrepreneur, but more because I'm fascinated with the topic and learning about &lt;a href="http://venturebeat.com/2009/04/29/10-lessons-from-a-failed-startup/"&gt;what to do (and not to do)&lt;/a&gt;. Amongst all of the advice I'd read there's been a lot of common themes. One of them is that you'll spend a lot of time on your business, far more time than you'd spend in any regular job. The second is that &lt;a href="http://www.erica.biz/2009/perfectionism-is-your-worst-enemy/"&gt;you really need to love what you're doing&lt;/a&gt; if you want to stay motivated.&lt;br /&gt;&lt;br /&gt;As much as I love working on my website there are days when I would really rather be doing something else. Such as, for instance, when some new downloadable content comes out for &lt;a href="http://www.1up.com/do/gameOverview?cId=3170102"&gt;a game&lt;/a&gt; and I'd rather be playing that than programming. It happens. So how do I keep motivated?&lt;br /&gt;&lt;br /&gt;I've started many projects previously and I have a very bad habit of starting a project only to get halfway through it and start on a new, different project. But I've been doing something different this time, and it's working to my advantage: blogging. As simple as it sounds, keeping a blogging schedule has led me to make constant, steady progress on my site. By requiring myself to post something new every few days I &lt;i&gt;have&lt;/i&gt; to make progress on the site, otherwise I have nothing to blog about. And there's always something worth blogging about, whether it's discussing how I solved a problem, or implemented a new technology, or mockups I created for a page I'm going to build, etc. There's always something new, but only if I've been working on my site. Blogging about what I'm working on is definitely a practice I'll take with me on other projects I work on (but not before I'm done with this one!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-8303243102132058684?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/8303243102132058684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/05/how-i-stay-motivated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/8303243102132058684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/8303243102132058684'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/05/how-i-stay-motivated.html' title='How I stay motivated'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-3667446805538711719</id><published>2009-05-06T20:00:00.003-05:00</published><updated>2009-05-09T16:30:22.501-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goals'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>A framework for speed</title><content type='html'>When I first started posting to this blog I had the (unstated) goal of posting every 2 to 3 days. I've not posted for two weeks. 2 days != 2 weeks. Sorry. To be fair, I just moved into a new house, so between the packing, moving, and unpacking I've not had time for much of anything. However, if I were smart I would've planned for that by either saying I was going to take a break or making sure I'd have content ready during that time period. I did neither. Lesson learned; it won't happen again.&lt;br /&gt;&lt;br /&gt;Anyway, while I was building out the registration forms for the site I realized that I was not moving fast enough (yet again). I was diving into all sorts of intricacies of form validation when I knew there had to be a much easier way to do it. I needed a framework that could do the heavy lifting leaving me to simply build out the pages on the site without having to write so much code. I stumbled upon a couple solutions, one being &lt;a href="http://cakephp.org/" target="_blank"&gt;CakePHP&lt;/a&gt; and the other &lt;a href="http://codeigniter.com/" target="_blank"&gt;CodeIgniter&lt;/a&gt;. After studying them both I decided upon using CodeIgniter, mainly because it seemed faster, smaller, and easier to use.* It many ways it feels like an extension to PHP, providing a vast array of tools without requiring you to use any of them. And &lt;a href="http://codeigniter.com/user_guide/" target="_blank"&gt;their documentation&lt;/a&gt; supports that. You can easily grab a class or a helper, quickly reference it, complete the task you're on and move right on to the next thing.&lt;br /&gt;&lt;br /&gt;After completing the registration form I'll need to take a quick detour and work on the style for a bit. I've toyed around with a couple styling possibilities, but I need to solidify something soon or else I'm going to have to come back later and update the classes on every tag on every page. That doesn't sound like fun.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;*Note that this is entirely based on my perception, not reality, as I've not had the time to play with them both fully. Your mileage may vary.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-3667446805538711719?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/3667446805538711719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/05/framework-for-speed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3667446805538711719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3667446805538711719'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/05/framework-for-speed.html' title='A framework for speed'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-2964767250031864829</id><published>2009-04-22T21:00:00.003-05:00</published><updated>2009-04-22T21:00:00.971-05:00</updated><title type='text'>Scotchel has a home</title><content type='html'>A few days ago I registered &lt;a href="http://www.scotchel.com/"&gt;scotchel.com&lt;/a&gt;. I figured it was about time. There's nothing there yet (other than Google advertisements), but come June, there will be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-2964767250031864829?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/2964767250031864829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/scotchel-has-home.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2964767250031864829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2964767250031864829'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/scotchel-has-home.html' title='Scotchel has a home'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-195630309314260849</id><published>2009-04-22T20:00:00.001-05:00</published><updated>2009-04-22T20:00:02.623-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>On Logos</title><content type='html'>Over the weekend I set out to make a logo for my site. Perhaps not the final one, but at least something that I won't be completely ashamed of. I've made logos a few times before, and in the cases I have I typically approach it by taking the name of the site and seeing how I can make a logo out of it. So in the case of Scotchel, I just dumped the word into Photoshop and stared at it for a while. I thought about the things I wanted to convey about the site, how I want people to find love, go on dates, how it's easy to use, and friendly. I looked for parts of Scotchel that would lend themselves well to additional images. Ways I could restructure the word to get additional meanings out of it. Anything I could think of to add onto it.&lt;br /&gt;&lt;br /&gt;After a while I realized that the upper curve of the S in Scotchel looks a lot like half of a heart. And that's what started my iterations on the logo:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_ciOPu8lcNZ8/Se8n5NfqNxI/AAAAAAAABnM/J5mje3mzHOA/s1600-h/Heart-Logos.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ciOPu8lcNZ8/Se8n5NfqNxI/AAAAAAAABnM/J5mje3mzHOA/s320/Heart-Logos.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For anyone that's even halfway familiar with Photoshop these weren't hard to come up with. The basic style is just taking the S, flipping it horizontally, changing the color, and erasing the part of the S I didn't want. And shazam! We have a heart.&lt;br /&gt;&lt;br /&gt;As I worked through different iterations I realized that the serif fonts didn't convey a sense of friendliness. They conveyed a sense of formalness. Not what I wanted. So I gradually started moving to more sans-serif fonts. When I got to about the fifth font I realized that I really liked the handwritten fonts a lot. I didn't have many on my system though, so I hit up &lt;a href="http://www.urbanfonts.com/"&gt;Urban Fonts&lt;/a&gt; and started browsing through their directory of fonts. It was actually quite hard to find a handwritten font that had an S with a curve that could be used for a symmetrical heart. But, after a bunch of tries, I landed on one I liked.&lt;br /&gt;&lt;br /&gt;I finally tried a few different things with the heart on the S, though I only kept the filled in heart and the half-black/half-red heart. When I was satisfied that I had found a logo I liked I ran them past Rachel for her review. She really liked the first one and the second to last one. Personally I really liked the very last one because it was still easy to read the word but you could see the heart pretty clearly. Rachel agreed with my premise and we ended up going with the very last one, for now :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-195630309314260849?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/195630309314260849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/on-logos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/195630309314260849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/195630309314260849'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/on-logos.html' title='On Logos'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ciOPu8lcNZ8/Se8n5NfqNxI/AAAAAAAABnM/J5mje3mzHOA/s72-c/Heart-Logos.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-4265005623477704271</id><published>2009-04-19T10:35:00.001-05:00</published><updated>2009-04-22T08:50:40.429-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goals'/><title type='text'>Goal: Launch in June</title><content type='html'>Goals keep you honest. It's harder to let a date slip when you set a goal to be done by a certain date. And at least for me personally, posting my goals publicly makes me feel more accountable.&lt;br /&gt;&lt;br /&gt;Goals also help you to focus your efforts. They give you something to aim for and give you the means to adjust your plans if you're not on track. One of my goals is to launch my website in June. I've been a little loose about that, it may be June 1st or June 30th, but it's about two months from now give or take a bit.&lt;br /&gt;&lt;br /&gt;I realized that with all of my work with CouchDB that I wasn't making much real progress. Nearly three weeks of effort with nothing to show for it. Sure, I learned a lot, but I hadn't built a single page yet. That's when it occurred to me that I should just start building even if it's not in the most optimal fashion. I know how to work with MySQL databases. I can use MySQL for now and migrate the data later if/when it becomes necessary. After all, no one will know the difference except for me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-4265005623477704271?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/4265005623477704271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/goal-launch-in-june.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/4265005623477704271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/4265005623477704271'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/goal-launch-in-june.html' title='Goal: Launch in June'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-3916646056906042395</id><published>2009-04-16T20:00:00.001-05:00</published><updated>2009-05-09T20:25:39.794-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Installing PHP5.3 RC2 on Ubuntu 8.10</title><content type='html'>Over the last couple of days I've been attempting to install the second release candidate for PHP 5.3 on Ubuntu 8.10. It shouldn't have taken me more than perhaps an hour. But it took me a couple days because I was being stubborn and wanted to be more efficient (&lt;i&gt;that &lt;/i&gt;sure backfired).&lt;br /&gt;&lt;br /&gt;Anyway, I have to give my thanks to &lt;a href="http://www.thenetocracy.com/2009/03/06/installing-php53-beta-on-ubuntu-810/"&gt;Jake over at The Netocracy&lt;/a&gt; for putting together the steps that I initially followed to install PHP 5.3. I had a few variations, but it ended up being a similar process.&lt;br /&gt;&lt;br /&gt;I'm assuming that Apache2 isn't installed yet, in which case you'll need to run the following three commands to get some of the basics out of the way:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo apt-get install apache2&lt;/span&gt;  &lt;span style="font-family: courier new,monospace;"&gt;sudo apt-get install apache2-threaded-dev&lt;/span&gt; &lt;span style="font-family: courier new,monospace;"&gt;sudo apt-get install libxml2-dev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In case you're wondering why you need those, apache2 gets you your server, apache2-thread-dev gets you the apxs2 file that you'll need when you go to configure PHP, and libxml2-dev is required for configure as well.&lt;br /&gt;&lt;br /&gt;Next you'll need &lt;a href="http://snaps.php.net/"&gt;the latest PHP snapshot&lt;/a&gt;. Download and extract the contents. Good, you're ready to begin. First off you'll need to run this:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo ./configure --with-apxs2=/usr/bin/apxs2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That shouldn't give you any issues, in which case you can run this:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, before you begin installing PHP, you're going to need to edit your httpd.conf file to account for the fact that the Ubuntu installation of Apache2 doesn't use the file (it exists, but it's empty). It's pretty simple, first you need to launch an editor for the file:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo gedit /etc/apache2/httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And then add the following couple of lines into the file:&lt;br /&gt;&lt;i&gt;#stuff&lt;br /&gt;LoadModule stuff&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Great, now you're ready to install:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Everything should've installed successfully at this point, in which case we need to undo what we just did to the httpd.conf file. Run the following command and delete the contents of the file (including the LoadModule line that the PHP installer just added):&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo gedit /etc/apache2/httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Excellent. Now we need to set up the Ubuntu way of handling modules in Apache2. We're going to create a couple files, php5.conf and php5.load, starting with the former:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo gedit /etc/apache2/mods-available/&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;php5.conf&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;This is what you'll want to place in the php5.conf file:&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;i&gt;&amp;lt;IfModule mod_php5.c&amp;gt;&lt;br /&gt;AddType application/x-httpd-php .php .phtml .php3&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&amp;lt;/IfModule&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Next up is php5.load:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo gedit /etc/apache2/mods-available/&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;php5.load&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Add this to php5.load:&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;i&gt;LoadModule php5_module /usr/lib/apache2/modules/&lt;/i&gt;&lt;i&gt;libphp5.so&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Now that you've set up the files for the module, you should be able to enable the module by using this command:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo a2enmod php5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally you'll want to edit the apache2.conf file to add a line so that Apache2 doesn't complain about not having a server name every time you start or stop it. Run this command to start editing:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo gedit /etc/apache2/apache2.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And add this line at the end of the file:&lt;br /&gt;&lt;i&gt;ServerName localhost&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;You're ready to start using Apache2 with PHP 5.3. Let's get Apache2 up and running:&lt;br /&gt;&lt;span style="font-family: courier new,monospace;"&gt;sudo apache2ctl start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Success!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-3916646056906042395?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/3916646056906042395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/installing-php53-rc2-on-ubuntu-810.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3916646056906042395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3916646056906042395'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/installing-php53-rc2-on-ubuntu-810.html' title='Installing PHP5.3 RC2 on Ubuntu 8.10'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-2951075663453108105</id><published>2009-04-14T20:00:00.002-05:00</published><updated>2009-04-14T09:28:27.522-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHPillow requires PHP 5.3</title><content type='html'>I started playing with PHPillow, a PHP wrapper for CouchDB. My intent was to use this to interact with CouchDB as it would handle all of the heavy lifting and allow me to focus exclusively on my application. I downloaded the source code, got it set up, and ran the &lt;b&gt;speed_test.php &lt;/b&gt;script that they created. The first half executed successfully, creating 1000 documents and doing 5000 GETs on those documents. However, the script failed when trying to do a view, stating:&lt;br /&gt;&lt;i&gt;&lt;b&gt;Fatal error&lt;/b&gt;:  Call to undefined method phpillowUserView::user() in &lt;b&gt;[...]/speed_test.php&lt;/b&gt; on line &lt;b&gt;56&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;After reading through the code for a bit I found that it was failing because the code utilizes some functionality that's only available in PHP 5.3 (a development version) and I'm using PHP 5.2 (the latest stable version). There are several ways I could fix this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modify the code in speed_test.php (and anywhere else where I'd use similar code) to use PHP 5.2-style code. On the upside, it should be the most immediate way to fix it. However, I'll need to do some learning because I have absolutely no idea what code I'd need to fix it now. And at some point PHP 5.3 will get released and I'll want to go back and fix my code. Not a big issue, just more of a small annoyance.&lt;/li&gt;&lt;li&gt;Install PHP 5.3. Considering I'm already using two things that are in alpha (CouchDB and PHPillow), adding in a third is hardly a major concern at this point. This may actually end up being faster than modifying the code (sadly) because I just need to do some file/command-line wrangling instead of learning how to access PHPillow with PHP 5.2-style code.&lt;/li&gt;&lt;li&gt;Drop PHPillow and write my own classes/functions. I'm probably better off having someone else write the library for me though. Writing my own code might work as a short term solution to get me going now, but it's likely a bad long-term solution.&lt;/li&gt;&lt;li&gt;Drop PHP and use another language to program my site. Considering the only other language I have some familiarity with is Python, this may not be the best idea. I'm better off expanding my knowledge of PHP rather than learning something brand new.&lt;/li&gt;&lt;/ul&gt;So option 4 is definitely out. And option 3 doesn't seem very feasible if I want to make a lot of progress quickly; I'll be bogged down trying to write new code to interact with CouchDB all the time. If I had more time I'd go with a hybrid of the first two options. That is, I'd figure out how the code should be written in PHP 5.2 to expand my knowledge but install PHP 5.3 to future-proof myself. Instead I'll go with the faster option 2, install PHP 5.3 and be done with it.&lt;br /&gt;&lt;br /&gt;I should mention another option, which would be the open source way of doing this. I could add/modify code in PHPillow to make it work with PHP 5.2. Some of their code already works with it, so it's clearly possible. Someone just needs to invest the time to make it happen. Unfortunately that person is not me. I don't have the programming skill to pull off that kind of thing yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-2951075663453108105?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/2951075663453108105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/phpillow-requires-php-53.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2951075663453108105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2951075663453108105'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/phpillow-requires-php-53.html' title='PHPillow requires PHP 5.3'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-3884042878731926796</id><published>2009-04-12T11:00:00.001-05:00</published><updated>2009-04-12T11:01:02.549-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mockups'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Homepage mockups</title><content type='html'>Before coding the website I want to have a good idea of what I'm doing. While I have concepts in my head, it doesn't always translate perfectly into reality. How nice it would be to know if something will work before going to the work of programming it. Thankfully, that is where mockups come in handy. And there is no better tool for creating mockups that &lt;a href="http://www.balsamiq.com/products/mockups"&gt;Balsamiq Mockups&lt;/a&gt;. They have &lt;a href="http://www.balsamiq.com/demos/mockups/Mockups.html"&gt;a demo version of their Mockups product&lt;/a&gt; that allows you to create, import, export, and save your mockups as PNGs. The only downside is that it reminds you that it's a demo version every 5 minutes. But, it's a create way to get a taste of the product.&lt;br /&gt;&lt;br /&gt;Anyway, I wanted to start off creating mockups for the start/home page, as that sets the tone for the rest of the site. Given that, I created four different mockups that could be used for the home page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_ciOPu8lcNZ8/SeFjiydGmkI/AAAAAAAABmM/8CJC5_qOe5g/s1600-h/loginpage1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" height="249" id="BLOGGER_PHOTO_ID_5323645683839179330" src="http://1.bp.blogspot.com/_ciOPu8lcNZ8/SeFjiydGmkI/AAAAAAAABmM/8CJC5_qOe5g/s320/loginpage1.png" style="cursor: pointer; font-size: 54px; height: 166px; line-height: 60.75px; width: 320px;" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjiwytGDI/AAAAAAAABmE/ljyOq6_vZ4A/s1600-h/loginpage2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" height="249" id="BLOGGER_PHOTO_ID_5323645683392911410" src="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjiwytGDI/AAAAAAAABmE/ljyOq6_vZ4A/s320/loginpage2.png" style="cursor: pointer; font-size: 54px; height: 166px; line-height: 60.75px; width: 320px;" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjihlW8uI/AAAAAAAABl8/_jmgqjKgWco/s1600-h/loginpage3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" height="249" id="BLOGGER_PHOTO_ID_5323645679310402274" src="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjihlW8uI/AAAAAAAABl8/_jmgqjKgWco/s320/loginpage3.png" style="cursor: pointer; font-size: 54px; height: 166px; line-height: 60.75px; width: 320px;" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjigBC9GI/AAAAAAAABl0/i0LuDES3aCk/s1600-h/loginpage4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" height="249" id="BLOGGER_PHOTO_ID_5323645678889661538" src="http://4.bp.blogspot.com/_ciOPu8lcNZ8/SeFjigBC9GI/AAAAAAAABl0/i0LuDES3aCk/s320/loginpage4.png" style="cursor: pointer; font-size: 54px; height: 166px; line-height: 60.75px; width: 320px;" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I ran all four past my fiancee Rachel to get her perspective on it. She liked the fourth one the best because it had questions to get you started right on the home page, plus she liked the conversational style (the chat balloon) and that it explained the name of the site immediately.&lt;br /&gt;&lt;br /&gt;The fourth one happened to be my favorite as well, and interestingly it was the first one I worked on. So I'll be using the fourth mockup as the base for my homepage, possibly pulling in some concepts from the other mockups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-3884042878731926796?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/3884042878731926796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/homepage-mockups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3884042878731926796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3884042878731926796'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/homepage-mockups.html' title='Homepage mockups'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ciOPu8lcNZ8/SeFjiydGmkI/AAAAAAAABmM/8CJC5_qOe5g/s72-c/loginpage1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-2671632722679498832</id><published>2009-04-11T08:16:00.006-05:00</published><updated>2009-04-13T18:36:51.135-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Accessing CouchDB with PHP</title><content type='html'>I decided that I was ready to start integrating PHP with CouchDB. Using &lt;a href="http://wiki.apache.org/couchdb/Getting_started_with_PHP" target="_blank"&gt;the Getting Started with PHP wiki page&lt;/a&gt;, I tried running the first example listed on the page to at least make sure everything was set up correctly. However, I quickly hit a snag with this response from CouchDB:&lt;br /&gt;&lt;i&gt;string(64) "{"error":"unauthorized","reason":"You are not a server admin."} " &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Okay, fair, I don't want just anyone making changes to the database. However, I thought CouchDB accepted connections from localhost by default? With that in mind I went back to &lt;a href="http://books.couchdb.org/relax/getting-started" target="_blank"&gt;the third chapter of the CouchDB book&lt;/a&gt;. The PHP script is trying to add a new database, and chapter 3 had me adding a new database by command line. So let's try running that command again:&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;curl -X PUT &lt;a href="http://127.0.0.1:5984/baseball" target="_blank"&gt;http://127.0.0.1:5984/baseball&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the response:&lt;br /&gt;&lt;i&gt;{"error":"unauthorized","reason":"You are not a server admin."}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Definitely not the same response when I ran the command back in chapter 3, but at least it's consistent with what I got from PHP.&lt;br /&gt;&lt;br /&gt;So I put my thinking cap on. I remembered that in &lt;a href="http://books.couchdb.org/relax/application-deployment" target="_blank"&gt;chapter 5&lt;/a&gt; I made a change to the local.ini file adding an [admins] section. Maybe it's not happy about that? How about if we modified the curl command to this:&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;curl -X PUT &lt;a href="http://admin:ihavenosecrets@127.0.0.1:5984/baseball" target="_blank"&gt;http://admin:ihavenosecrets@127.0.0.1:5984/baseball&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Response?&lt;br /&gt;&lt;i&gt;{"ok":true}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Much better! Okay, so the PHP script isn't working because we need to provide a username and password and we're not. Now, I could just go back and remove the [admins] section from local.ini, but I kind of like that it's prompting for authentication. So how do we get it working?&lt;br /&gt;&lt;br /&gt;The script is using PHP's &lt;b&gt;fsockopen&lt;/b&gt; function. After some reading on &lt;a href="http://www.php.net/"&gt;php.net&lt;/a&gt; it would seem that fsockopen doesn't let you pass along a username and password by default, &lt;a href="http://us2.php.net/manual/en/function.fsockopen.php#32830" target="_blank"&gt;unless you want to start messing with headers and whatnot&lt;/a&gt;. That really doesn't sound very fun.&lt;br /&gt;&lt;br /&gt;The next option in line would be adding in the cURL library to use cURL instead of fsockopen. However, I've never used it before, and after reviewing the documentation it doesn't look immediately straightforward. So in the interest of speed over correctness I'm going to forgo using authentication. I went back to /usr/local/etc/couchdb/local.ini, commented out the [admins] section, and restarted the CouchDB instance using:&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;sudo /usr/local/etc/init.d/couchdb restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Running the PHP script again yields... success! Woo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-2671632722679498832?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/2671632722679498832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/php-couchdb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2671632722679498832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2671632722679498832'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/php-couchdb.html' title='Accessing CouchDB with PHP'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-5370744367787023442</id><published>2009-04-10T19:09:00.000-05:00</published><updated>2009-04-11T08:34:11.759-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Three tools every one-man tech startup needs</title><content type='html'>When you're programming a site on your own, I've found the following three tools to be indispensable.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;1. FogBugz&lt;/b&gt;&lt;br /&gt;You're going to have lots of little tasks that you need to do (program a login page, set up your database, provision for catastrophic failures, etc.). Now, you can try and keep all this straight in your head. After all, you're the only one working on a project, so it's not like you need to communicate any of these tasks to someone else. However, if you're not one of those lucky souls with a photographic memory, it may help to record all of these tasks somewhere. In comes FogBugz. They have an absolutely fantastic application for task tracking, and they have &lt;a href="http://www.fogcreek.com/FogBugz/StudentAndStartup.html"&gt;a free version of FogBugz for students and startups&lt;/a&gt;. Go try it out.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Beanstalk&lt;br /&gt;&lt;/b&gt;If you're programming anything of value you need version control. Sure, you may not have to worry about anyone else destroying your code, but there are countless ways that you can subvert yourself. Maybe you're trying to refactor your code and it doesn't turn out the way you hoped, so you need to go back to a prior version. Maybe you delete a file and realize after the fact that you &lt;i&gt;really did need it&lt;/i&gt;. Maybe your hard drive dies and you lose everything. Who knows. One thing I do know? Version control will save your arse. Thankfully the good, fine folks over at Wildbit have &lt;a href="http://beanstalkapp.com/"&gt;this fancy application called Beanstalk&lt;/a&gt; that's free up to 100mb. That's a darn lot of code.&lt;br /&gt;&lt;br /&gt;Oh, and as a nice bonus, Beanstalk integrates with FogBugz. Just includes [BugzID: 12345] in your commit message, where 12345 is your FogBugz case number, and your commit message will show up in FogBugz. Sweet!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. NautilusSvn&lt;br /&gt;&lt;/b&gt;If you've worked with Subversion on Windows then you probably know that there's this nice application called &lt;a href="http://tortoisesvn.net/"&gt;TortoiseSVN&lt;/a&gt;. It integrates right into the Windows shell allowing you to do a checkout/update/commit/etc. with a simple right-click. I was missing that functionality on Ubuntu, until I found &lt;a href="http://code.google.com/p/nautilussvn/"&gt;a great little application called NautilusSvn&lt;/a&gt; that does the same thing for the GNOME desktop. After installing it you'll see little helper icons next to each file/directory indicating if the file matches what's in the repository. That makes it incredibly easy to visually see what you've changed and what needs to be commited.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-5370744367787023442?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/5370744367787023442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/three-tools-every-one-man-tech-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/5370744367787023442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/5370744367787023442'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/three-tools-every-one-man-tech-startup.html' title='Three tools every one-man tech startup needs'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-8861573817363686264</id><published>2009-04-10T07:24:00.000-05:00</published><updated>2009-04-11T08:34:40.236-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goals'/><title type='text'>Goal: Stop spending so much time reading blogs/news/emails</title><content type='html'>I realized this morning that I'm spending far too much time reading blogs, emails, and the news. I started reading at 7am, and before I knew it I looked over at the clock and it was 7:40am. Forty (40) minutes! That's crazy! That's 40 minutes I could have spent working on my website.&lt;br /&gt;&lt;br /&gt;So, here's my new goal: &lt;b&gt;I will not spend more than &lt;u&gt;10&lt;/u&gt; minutes per day reading blogs, emails, and the news.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Hopefully that leads me to be a lot more productive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-8861573817363686264?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/8861573817363686264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/goal-stop-spending-so-much-time-reading.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/8861573817363686264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/8861573817363686264'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/goal-stop-spending-so-much-time-reading.html' title='Goal: Stop spending so much time reading blogs/news/emails'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-3261115255016562415</id><published>2009-04-08T19:16:00.001-05:00</published><updated>2009-04-10T14:24:03.640-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Setting up Apache2 and PHP5</title><content type='html'>I finished reading through the rest of the chapters in the &lt;a href="http://books.couchdb.org/relax/"&gt;CouchDB book&lt;/a&gt; and decided to start moving forward with creating my application. CouchDB doesn't really seem to be in a state where I could build the kind of app I want using only what they provide (it's still in alpha, after all) but I do plan on using it to store all of my data. To handle all of the application logic I'm planning to use my old standby, PHP. I figure learning one new technology is enough for this. And for the server I'll be using Apache.&lt;br /&gt;&lt;br /&gt;Setting up Apache on Ubuntu is a bit different than on Windows. I had no issues installing Apache+PHP, and pulling up Firefox and pointing it at http://localhost/ yielded success. So I knew everything had installed correctly. However, at this point I didn't know where to place all my html/css/etc. files. From my past experience on Windows I thought those files would be stored in an htdocs directory, so I tried searching for that. No luck. Turns out that Apache on Ubuntu sets up /var/www/ as your root directory for files. That's all well and good, but only the administrator can modify files there, meaning you end up having to use sudo for everything. Not what I want.&lt;br /&gt;&lt;br /&gt;I started looking for a way to change the root directory from /var/www/ to something else. I found a forum post stating that the file I needed to modify was at /etc/apache2/sites-available/ and called "default". Using that, and &lt;a href="http://httpd.apache.org/docs/trunk/urlmapping.html"&gt;Apache's very good documentation on setting up url mapping&lt;/a&gt;, you can get a pretty good idea of what you need to do. I set the DocumentRoot to a directory of my choosing and modified the related Directory section.&lt;br /&gt;&lt;br /&gt;But that wasn't enough by itself, I also needed to restart the Apache server. Which was pretty easy on Windows (they give you shortcuts for it), but I had no idea how to do it on Ubuntu. Thankfully I found that info on a forum post too, and it's pretty simple. You just need the following commands:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo /etc/init.d/apache2 stop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo /etc/init.d/apache2 start&lt;/span&gt;&lt;br /&gt;or&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo /etc/init.d/apache2 restart&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-3261115255016562415?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/3261115255016562415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/setting-up-apache2-and-php5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3261115255016562415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3261115255016562415'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/setting-up-apache2-and-php5.html' title='Setting up Apache2 and PHP5'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-4260997478215647601</id><published>2009-04-06T05:33:00.001-05:00</published><updated>2009-04-10T14:24:17.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>Further frustrations and successes</title><content type='html'>I don't know if I'm just having a rough morning or what, but here's the situation:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frustation:&lt;/span&gt; .couchapprc is MIA. Maybe it's supposed to be MIA, maybe I'm supposed to create it. I'm not sure, because there's nothing in the book indicating as much. Further, since it doesn't already exists somewhere, I have no idea where to create it. I could guess, but I don't like guessing. So, since this isn't mission critical at the moment, I'm going to skip it. Mabe I'll figure it out later and come back.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Success:&lt;/span&gt; I was able to set up my admin account. However, the book says, "You, the author, are the administrator and the only one who can add and edit posts." Which is cool, but then why am I adding who's an administrator at the couchdb level? Shouldn't it be at the tutorial app level? What happens if I have another app that has different admins? Also, the book says, "If you don’t like your passwords lying around in plain-text files, don’t worry. The next time CouchDB starts up and reads this file, it takes your password and changes it to an unreverseengineerable hash." Which is really super cool, by the way. My only question is: how do I restart couchdb? This may be a case of RTFM, but I haven't seen it (or remembered seeing it, at least) in my reading so far.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frustration:&lt;/span&gt; I got to the part in Chapter 5 where I ran the following command (replacing &lt;span style="font-style: italic;"&gt;admin &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;ihavenosecrets &lt;/span&gt;with the values I'd set previously):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;couchapp push . http://admin:ihavenosecrets@127.0.0.1:5984/blogdb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The command line said everything was cool, but this is the response when I went to http://127.0.0.1:5984/blogdb/_list/sofa/index/recent-posts:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{"error":"not_found","reason":"missing"}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Why, couchdb? &lt;span style="font-style: italic;"&gt;Why?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Success:&lt;/span&gt; I looked back at the the command line response, as it had spat out some similar yet different-looking URLs. Turns out I really should have gone to this URL instead: http://127.0.0.1:5984/blogdb/_design/sofa/_list/index/recent-posts&lt;br /&gt;&lt;br /&gt;Moral of the story? Always rely on the documentation closest to the code first. I think the hierarchy of documentation goes something like this: command line &gt; README &gt; Wiki &gt; Book&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-4260997478215647601?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/4260997478215647601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/further-frustrations-and-successes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/4260997478215647601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/4260997478215647601'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/further-frustrations-and-successes.html' title='Further frustrations and successes'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-6323596398793705238</id><published>2009-04-06T04:36:00.001-05:00</published><updated>2009-04-10T14:24:29.010-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>Trying to get onto the Sofa</title><content type='html'>I've started going through the &lt;a href="http://books.couchdb.org/relax/"&gt;CouchDB book&lt;/a&gt;'s chapters on setting up their tutorial app, Sofa. It starts at Chapter 5. The first thing out of the gate that I had an issue with was running this command:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo easy_install couchapp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For those uninitiated, easy_install is part of python, and doesn't work unless you've installed &lt;span style="font-weight: bold;"&gt;python-setuptools&lt;/span&gt;. Install'd and fix'd! The second issue was, not surprisingly, trying to run the following:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;git clone git://github.com/jchris/sofa.git&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was easily remedied by installing &lt;span style="font-weight: bold;"&gt;git-core&lt;/span&gt;, but it would be nice if they'd listed off some additional dependencies beforehand. It's kind of like &lt;a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html"&gt;Joel Spolsky's post on how controlling your environment makes you happy&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;  &lt;blockquote&gt;So that's what days were like. A bunch of tiny frustrations, and a bunch of tiny successes. But they &lt;span style="font-style: italic;"&gt;added up&lt;/span&gt;. Even something which seems like a tiny, inconsequential frustration affects your mood. Your emotions don't seem to care about the magnitude of the event, only the quality.&lt;br /&gt;&lt;br /&gt;  And I started to learn that the days when I was happiest were the days with lots of small successes and few small frustrations.&lt;br /&gt;&lt;br /&gt;I've had a bunch of tiny successes so far, but man, I'd love to eliminate those tiny frustrations.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Anyway, I digress. Back to that git command... having never used git before, but understanding the basics of it, I know it's going to drop a bunch of files into a directory for me. But do those files need to be in a specific directory on my machine? I sure hope not, because I just saved them into a subdirectory of my home. At least they were kind enough to include &lt;a href="http://books.couchdb.org/relax/figure/draft/missing.jpg"&gt;an image of a bird&lt;/a&gt; to help me relax. (It's almost like they saw this coming.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-6323596398793705238?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/6323596398793705238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/trying-to-get-onto-sofa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/6323596398793705238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/6323596398793705238'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/trying-to-get-onto-sofa.html' title='Trying to get onto the Sofa'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-1751658492624012936</id><published>2009-04-03T18:04:00.003-05:00</published><updated>2009-04-11T08:20:18.931-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>CouchDB on VMware</title><content type='html'>I use a Windows box as my main machine. Since CouchDB currently only runs on Linux I figured I'd just set it up on another machine. I have another box laying around that I use rarely at best. I wanted to be able to VNC into the box which I was able to do with &lt;a href="http://www.tightvnc.com/"&gt;TightVNC&lt;/a&gt; on the Windows box. I have no complaints with TightVNC, but since the box running CouchDB was working off of a wireless connection the VNC connection was sub-par.&lt;br /&gt;&lt;br /&gt;I figured I'd be a bit more intelligent about this and set up an Ubuntu instance on VMware on my Windows box and run couchdb off of that (at least for my initial development work). There's &lt;a href="http://www.ubuntupocketguide.com/download.html"&gt;a free book called the Ubuntu Pocket Guide&lt;/a&gt; which has a great chapter (pg. 15) on setting up Ubuntu on a virtual machine. It even gives you the files you need to set it up. Pretty sweet.&lt;br /&gt;&lt;br /&gt;However, if you're going to use it, here are a couple tips:&lt;br /&gt;&lt;br /&gt;1. The default behavior of VMware is to display a small bar at the top of the screen that allows you to minimize or close the window. That's cool, but it gets in the way any time you're trying to do something at the top of the screen. Which is all the time since Ubuntu has it's own bar at the top of the screen. If you want to disable VMware's bar, find the preferences.ini file (it should be at C:\Documents and Settings\USERNAME\Application Data\VMware\), open it with a text editor, and add the following line at the end:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref.vmplayer.fullscreen.nobar = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To break out of full screen, you simply press Ctrl + Alt.&lt;br /&gt;&lt;br /&gt;2. Ubuntu periodically feels the need to do a system beep. And by periodically I mean every startup. You might not think that's such an annoyance unless you happen to wear headphones. In which case your eardrums will shatter every time to start up Ubuntu. If you'd like to avoid that scenario (highly advised), find your .vmx file (e.g. ubuntupocketguide.vmx), open it with a text editor, and add the following line at the end:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mks.noBeep = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Your eardrums will thank you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-1751658492624012936?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/1751658492624012936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-on-vmware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/1751658492624012936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/1751658492624012936'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-on-vmware.html' title='CouchDB on VMware'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-140609402111631046</id><published>2009-04-01T20:11:00.002-05:00</published><updated>2009-04-10T14:24:58.791-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>CouchDB Wiki</title><content type='html'>Over lunch today I discovered that CouchDB also has &lt;a href="http://wiki.apache.org/couchdb/"&gt;a very nice wiki&lt;/a&gt;. They have code samples for working with CouchDB in more than a dozen languages, a very thorough FAQ, JavaScript code snippets for CouchDB views, and more.&lt;br /&gt;&lt;br /&gt;Through the wiki I also discovered an excellent article on &lt;a href="http://www.cmlenz.net/archives/2007/10/couchdb-joins"&gt;what SQL joins look like in CouchDB&lt;/a&gt;. As with all programming, there are many ways to skin a cat, and multiple solutions are given for the same problem. The interesting part is that CouchDB really makes you take a step back and think about your problem a bit differently. You have to throw out your relational database knowledge and really understand what it is you're trying to accomplish before you begin. The solution often depends on how your users will be interacting with the data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-140609402111631046?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/140609402111631046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-wiki.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/140609402111631046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/140609402111631046'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-wiki.html' title='CouchDB Wiki'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-2172467406262978952</id><published>2009-04-01T00:38:00.001-05:00</published><updated>2009-04-10T14:25:03.891-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>CouchDB likes manual installs</title><content type='html'>So, if I were clever, I would've read in the manual that "Until CouchDB has reached the 0.9 release, it is better to install it from source." I quickly reversed course with an apt-get remove.&lt;br /&gt;&lt;br /&gt;A subversion checkout of CouchDB was easy enough. However, CouchDB is needing &lt;a href="http://svn.apache.org/repos/asf/couchdb/trunk/README"&gt;a lot of packages&lt;/a&gt; in order to get up and running. Nearly 60mb worth. Thank goodness for broadband connections...&lt;br /&gt;&lt;br /&gt;Anyway, now that I've got that mess out of the way I got the following message after building:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Apache CouchDB has started. Time to relax.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Whew, thanks CouchDB, I'm feeling better already! Oh, and the response to &lt;span style="font-family:courier new;"&gt;curl http://127.0.0.1:5984/&lt;/span&gt;?&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{"couchdb":"Welcome","version":"0.9.0"}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Much better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-2172467406262978952?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/2172467406262978952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-likes-manual-installs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2172467406262978952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/2172467406262978952'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/04/couchdb-likes-manual-installs.html' title='CouchDB likes manual installs'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608897718653312723.post-3420570959090347120</id><published>2009-03-31T23:59:00.001-05:00</published><updated>2009-04-10T14:25:15.542-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>First issues with CouchDB</title><content type='html'>I got my development machine up and running with Ubuntu. My wireless card gave me some trouble (apparently a common phenomenon) but the Windows Wireless Drivers utility came to my rescue.&lt;br /&gt;&lt;br /&gt;I've been reading &lt;a href="http://books.couchdb.org/relax/getting-started"&gt;CouchDB's fantastic little book&lt;/a&gt; and I'm in the process of getting CouchDB installed. No issues with apt-get install couchdb. After running the first curl command, &lt;span style="font-family:courier new;"&gt;curl http://127.0.0.1:3984/&lt;/span&gt;, I get this message:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;curl: (7) couldn't connect to host.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uh oh.&lt;br /&gt;&lt;br /&gt;Further damning evidence that couchdb isn't happy: running &lt;span style="font-family:courier new;"&gt;couchdb&lt;/span&gt; gives me this message:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Apache CouchDB needs write permission on the data directory: /var/lib/couchdb/0.8.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Looks like it's time to break out &lt;a href="http://svn.apache.org/repos/asf/couchdb/trunk/README"&gt;the trusty readme file&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608897718653312723-3420570959090347120?l=blaisco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blaisco.blogspot.com/feeds/3420570959090347120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blaisco.blogspot.com/2009/03/first-issues-with-couchdb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3420570959090347120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608897718653312723/posts/default/3420570959090347120'/><link rel='alternate' type='text/html' href='http://blaisco.blogspot.com/2009/03/first-issues-with-couchdb.html' title='First issues with CouchDB'/><author><name>Scott</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
