<?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:blogger='http://schemas.google.com/blogger/2008' 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-9585363</id><updated>2024-01-31T02:50:10.868-05:00</updated><title type='text'>A Cubicle Coder&#39;s Journey</title><subtitle type='html'>The ongoing tale of a cubicle dwelling coder (a.k.a Jay) attempting to escape from the dull, corporate Company both by becoming technically savvy, and (maybe some day) having a business of his own.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Cubicle Coder</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9585363.post-117018631808654090</id><published>2007-01-30T14:41:00.000-05:00</published><updated>2007-01-30T14:45:18.120-05:00</updated><title type='text'>Goodbye</title><content type='html'>Enough is enough.  I&#39;ve decided to kill this blog.  FWIW, I still think highly of the microISV concept and will try to start one someday.  Thanks to everyone who&#39;s been reading, and I wish you all well.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/117018631808654090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=117018631808654090' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/117018631808654090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/117018631808654090'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2007/01/goodbye.html' title='Goodbye'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-116874645538241333</id><published>2007-01-13T22:26:00.000-05:00</published><updated>2007-01-13T22:47:35.396-05:00</updated><title type='text'>Not Dead Yet</title><content type='html'>It&#39;s been ages since I posted.   I&#39;ve considered deleting this blog many times over the last 6 months.  I may yet do so.  But it seems like I should try to bring it to some kind of closure.&lt;br /&gt;&lt;br /&gt;First, my health got worse.  I let the stress of working get to me, let my diet go to hell, and ... it wasn&#39;t pretty.  The good news - I&#39;ve recently pulled out of that tailspin and am doing better.  I&#39;m a long way from healthy, but I&#39;m moving on the right track for now.&lt;br /&gt;&lt;br /&gt;Work has been mostly terrible, but what is terrible changes from time to time.  I can say that some of the bad guys in earlier posts seem to be suffering some karmic retrubition.  It seems the Company is never going to be a decent place to work again. &lt;br /&gt;&lt;br /&gt;The big question for me is what comes next.  I promised myself that my biggest priority will be getting healthy.  Everything comes second to that.  So, logically, I shouldn&#39;t even toy with the micro-ISV idea.  Starting a new business while working a crappy job sounds mega-stressful, and I won&#39;t make the mistake of skipping on exercise again.  Hell, even healthy people shouldn&#39;t do that, as the loss of energy from not exercising totally overshadows any extra working time.&lt;br /&gt;&lt;br /&gt;I&#39;m not giving up yet.  I&#39;ll keep the job, and keep trying to get healthy again.  And in the odd spare moments, I&#39;ll try to find a problem crying out for a software solution.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/116874645538241333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=116874645538241333' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/116874645538241333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/116874645538241333'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2007/01/not-dead-yet.html' title='Not Dead Yet'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-114953014927996188</id><published>2006-06-05T12:49:00.000-05:00</published><updated>2006-06-05T12:55:49.313-05:00</updated><title type='text'>Survival Mode</title><content type='html'>Man, it has been ages since the last post.  Hard for me to believe how long.  Why? Because everything blew up at work.&lt;br /&gt;&lt;br /&gt;The story is complicated, multi-dimensional, and really should be looked at from many points of view.  But since this is my blog, I&#39;m going to skip all that and just give it from my point of view.&lt;br /&gt;&lt;br /&gt;Long and short of it, I totally messed up on the political front.  I took the big boss&#39; assurance that he wanted to hear what I really thought, and have been speaking my mind for awhile, as asked to do.  At some point, he decided he didn&#39;t want to hear it - but didn&#39;t tell me.&lt;br /&gt;&lt;br /&gt;Instead, he stuck me under the best &quot;company man&quot; manager and told him that I was no longer productive and needed a little shaking up.  The new boss told me this during a performance review, and made it damn clear that I was dead meat if things didn&#39;t change - as well giving me some mindless corporate blather on how valuable I could be, if I just tried.&lt;br /&gt;&lt;br /&gt;Ironically, I thought I was being helpful pointing out just how wrong-headed the current directions are - and why, with facts to back it up.  All I can say is - yeah, I was an idiot for thinking that the big boss wanted really wanted me to point out where he was screwing up.  The fact he asked me my opinion was irrelevant.&lt;br /&gt;&lt;br /&gt;So I&#39;ve been working under a microscope, trying to keep my mouth shut and just get things done.  I&#39;m not happy about this, but I don&#39;t need to lose my job right now.  I&#39;m saving my pennies still, as I suspect that doing what they tell me to do without comment is only delaying the Company from kicking me out.  The big boss in question was promoted recently, and I&#39;ve no doubt that he&#39;ll get around to getting rid of me when the next round of downsizing comes up.  Which will probably be soon, given the way they&#39;re transferring stuff to India.&lt;br /&gt;&lt;br /&gt;On the plus side, I think I&#39;m almost out from under the microscope.  My guess is my spirit has been deemed crushed enough, that I know my place and have been properly punished enough, that the big boss is satisfied for now.  I think if I keep quiet I&#39;ll be left alone ... until the next downsizing.  That may be a while in the future.&lt;br /&gt;&lt;br /&gt;Time, maybe, to stop living day to day in survival mode.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/114953014927996188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=114953014927996188' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/114953014927996188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/114953014927996188'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/06/survival-mode_05.html' title='Survival Mode'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-114953002552418565</id><published>2006-06-05T12:13:00.000-05:00</published><updated>2006-06-05T12:53:45.540-05:00</updated><title type='text'>Survival Mode</title><content type='html'>Man, it has been ages since the last post.  Hard for me to believe how long.  Why? Because everything blew up at work.&lt;br /&gt;&lt;br /&gt;The story is complicated, multi-dimensional, and really should be looked at from many points of view.  But since this is my blog, I&#39;m going to skip all that and just give it from my point of view.&lt;br /&gt;&lt;br /&gt;Long and short of it, I totally messed up on the political front.  I took the big boss&#39; assurance that he wanted to hear what I really thought, and have been speaking my mind for awhile, as asked to do.  At some point, he decided he didn&#39;t want to hear it - but didn&#39;t tell me.&lt;br /&gt;&lt;br /&gt;Instead, he stuck me under the best &quot;company man&quot; manager and told him that I was no longer productive and needed a little shaking up.  The new boss told me this during a performance review, and made it damn clear that I was dead meat if things didn&#39;t change - as well giving me some mindless corporate blather on how valuable I could be, if I just tried.&lt;br /&gt;&lt;br /&gt;Ironically, I thought I was being helpful pointing out just how wrong-headed the current directions are - and why, with facts to back it up.  All I can say is - yeah, I was an idiot for thinking that the big boss wanted really wanted me to point out where he was screwing up.  The fact he asked me my opinion was irrelevant.&lt;br /&gt;&lt;br /&gt;So I&#39;ve been working under a microscope, trying to keep my mouth shut and just get things done.  I&#39;m not happy about this, but I don&#39;t need to lose my job right now.  I&#39;m saving my pennies still, as I suspect that doing what they tell me to do without comment is only delaying the Company from kicking me out.  The big boss in question was promoted recently, and I&#39;ve no doubt that he&#39;ll get around to getting rid of me when the next round of downsizing comes up.  Which will probably be soon, given the way they&#39;re transferring stuff to India.&lt;br /&gt;&lt;br /&gt;On the plus side, I think I&#39;m almost out from under the microscope.  My guess is my spirit has been deemed crushed enough, that I know my place and have been properly punished enough, that the big boss is satisfied for now.  I think if I keep quiet I&#39;ll be left alone ... until the next downsizing.  That may be a while in the future.&lt;br /&gt;&lt;br /&gt;Time, maybe, to stop living day to day in survival mode.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/114953002552418565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=114953002552418565' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/114953002552418565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/114953002552418565'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/06/survival-mode.html' title='Survival Mode'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113950040364867166</id><published>2006-02-09T09:11:00.000-05:00</published><updated>2006-02-10T06:25:51.106-05:00</updated><title type='text'>The Irresistible Project</title><content type='html'>If I&#39;m going to code for 20 hours a week,  I need a project.  I actually thought it would be easy to come up with something to do, but it&#39;s been pretty hard. This is going to take up the little bit of free time I&#39;ve got these days.  I don&#39;t want to try to do something I&#39;m going to hate.&lt;br /&gt;&lt;br /&gt;Finally, I made a list of ideas.  I wrote down every idea I could remember considering at one time or another.  And as I stared at the list, I realized that there was one idea not on it.  And I really didn&#39;t want to put it there.  But I didn&#39;t have a choice.  I wrote it down, at the very top.&lt;br /&gt;&lt;br /&gt;You see, I&#39;ve been resisting this idea for a long time.  It seems juvenile, stupid, and totally useless intrinsically and from a business perspective.  And yet ... deep down, I really want to do this.  Despite everything I&#39;ve said, for some reason I can&#39;t really figure out, I&#39;ve got to do this.&lt;br /&gt;&lt;br /&gt;Confession time - I&#39;m a pseudo-reformed roleplayer.  Ever since I played D and D with my cousins when I was 9, I&#39;ve been fascinated by roleplaying.  I&#39;ve got a huge number of books for a whole bunch of different games that I&#39;ve collected over the years.  And one of the things I miss the most from college are the hours where I could actually play in various games.  I don&#39;t play anymore due to lack of time.  But I still buy books, read magazines and try to keep up with the hobby in general.&lt;br /&gt;&lt;br /&gt;And like any computer literate roleplayer, I&#39;ve thought about using computers to take out some of the tedium in the calculation and book keeping.  I even wrote a program in BASIC to help me play Car Wars on my C-64.  That was the program I had the most fun doing, and is in some ways the one I&#39;m most proud of.  And I&#39;ve often thought, over the years, that I could do something like that again.  Someday.&lt;br /&gt;&lt;br /&gt;Of course, its all been done already.  There are tons of programs like this out there for free, as well as a large number of little companies selling commercial products.  This was true even when I wrote my little BASIC program.  Not liking the idea of going down a path that thousands have already tread, I didn&#39;t do much more than think wistfully about the idea.  An idea whose time was past.&lt;br /&gt;&lt;br /&gt;And so it was inevitable that when I first started thinking about web applications, web 2.0, and AJAX that this idea would resurface.  Instead of being yet another RPG program, it could be a web app!  Being older and wiser, I thought about the commercial prospects of this, and they don&#39;t look that good.  Small market, not financially well off, and well served by conventional applications.  Forget it, I told myself.&lt;br /&gt;&lt;br /&gt;But I haven&#39;t been able to.  It keeps popping up in my head.  No amount of stern lectures will make it go away.  I keep arguing with myself about the business prospects, thinking it could, done just right, do well in a smaller niche of the RPG market.  And maybe be the gateway to even more interesting ideas.  I know this is likely nonsense, but part of me isn&#39;t giving up.&lt;br /&gt;&lt;br /&gt;I give up!  I&#39;m not going to fight myself on this anymore.  I need a project, I need to get with web application development, and I clearly want to do this.  I accept that it likely will never make money in and of itself.  At best, it will just be a fun learning project.&lt;br /&gt;&lt;br /&gt;Since my favorite system these days is &lt;a href=&quot;http://www.sjgames.com/gurps&quot;&gt;GURPS&lt;/a&gt;, I&#39;ve decided to start work on a web application that helps you build a &lt;a href=&quot;http://www.sjgames.com/gurps&quot;&gt;GURPS&lt;/a&gt; character.  There is an official program that does this for the most current rules, so that will be the benchmark for this.  The current plan is to do this in Ruby, using Rails so I can get more up to speed with both.&lt;br /&gt;&lt;br /&gt;I should note that company behind &lt;a href=&quot;http://www.sjgames.com/gurps&quot;&gt;GURPS &lt;/a&gt;(&lt;a href=&quot;http://www.sjgames.com&quot;&gt;Steve Jackson Games&lt;/a&gt;) does allow fans to create game aids like this.  However, in order to maintain their intellectual property rights (which I totally support, by the way) they need to approve of such products before they go public.  That will put some restrictions on me as I build this.  In particular, I won&#39;t be able to make partially usable stuff open to the public at large.  I&#39;ll have to think about how I give progress reports on this effort.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113950040364867166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113950040364867166' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113950040364867166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113950040364867166'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/02/irresistible-project.html' title='The Irresistible Project'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113949429733087691</id><published>2006-02-09T08:37:00.000-05:00</published><updated>2006-02-10T06:19:37.493-05:00</updated><title type='text'>Progress Report #1</title><content type='html'>I&#39;m one week into my &quot;new year.&quot;  Here&#39;s the first report on goal progress:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Lose 1-2 lbs per week:&lt;/span&gt;  I blew this one - I&#39;ve gained about a pound.  Rob warned me in a comment to my last post that losing weight without changing my diet wasn&#39;t going to work.  This pretty much proves him right. Thus I&#39;m modifying goal:  To eat only 1500-2000 calories a day, starting today.  I &lt;span style=&quot;font-style: italic;&quot;&gt;hate&lt;/span&gt; calorie counting but its got to be done.  If I do this, plus exercise I should lose 1-2 lbs a week.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Exercise 4-5 times a week for at least 30 minutes: &lt;/span&gt; I did it!  I exercised 4 times - my minimum, but hey, its a start.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Spend only $100 a month on things like books, eating out, etc:&lt;/span&gt;  So far, so good.  But there are two really interesting technical books out there now that I&#39;m likely to buy.  I&#39;ll save money and buy the eBook versions, but it will make hitting the budget for the month tough.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Spend 20 hrs a week coding:&lt;/span&gt;  Total failure here as not one bit of time spent coding.  My problem was that I didn&#39;t have anything I wanted to code.  I&#39;ve spent the time that I should have been doing something trying to come up with something to do.  I decided on a project yesterday.  I&#39;ll talk about it in my next post.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Blog at least once a week: &lt;/span&gt; Assuming I do the post today on my next project, I&#39;ll meet this one.&lt;/li&gt;&lt;/ol&gt;Overall, I generously give myself a C for this week.  Gaining a pound is a real disappointment, but it made me refine my goal to be more specific and measurable.  So I&#39;ll let that go as a learning experience.  Lack of coding is also bad, but I really should have picked a project first.  Everything else is OK so far.&lt;br /&gt;&lt;br /&gt;The biggest thing I have to do is not let my disappointment make me lose sight of my goals.  I&#39;ve let small setbacks completely derail me in the past.  As in &quot;well I already had two cookies today, so I might as well eat the whole box.&quot;  I&#39;m telling myself its a brand new week.  So the problems from last week don&#39;t matter anymore.  Tune in next week to see how I do.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113949429733087691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113949429733087691' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113949429733087691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113949429733087691'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/02/progress-report-1.html' title='Progress Report #1'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113872132741640183</id><published>2006-01-31T10:00:00.000-05:00</published><updated>2006-01-31T23:34:04.510-05:00</updated><title type='text'>Re-inventing a Cubicle Coder</title><content type='html'>My last post ended with me wondering what my Company&#39;s moves to offshoring meant.  Will my job disappear in a year?  Or will everything be sweetness and light as management promises?  I&#39;ve been struggling with best &amp; worst case scenarios, so I can figure out what to do.&lt;br /&gt;&lt;br /&gt;It finally hit me this morning:  It doesn&#39;t matter what I think might happen!  I can&#39;t predict the future.  I&#39;ve got to start getting ready for the worst case.  Anything else would be irresponsible of me.&lt;br /&gt;&lt;br /&gt;To put it in bold terms:  I have decided that I have one year, at most, to prepare for a new future.  The question is - what future?&lt;br /&gt;&lt;br /&gt;As soon as I put things like this, I knew that it was time to re-invent myself.  Hard to say why this seemed so clear.  Probably because of the blogs I&#39;m reading.  First, &lt;a href=&quot;http://ripples.typepad.com/ripples&quot;&gt;David St. Lawrence&lt;/a&gt; is doing a new series one re-inventing yourself (check out parts &lt;a href=&quot;http://ripples.typepad.com/ripples/2006/01/reinventing_you.html&quot;&gt;I&lt;/a&gt;, &lt;a href=&quot;http://ripples.typepad.com/ripples/2006/01/reinventing_you_1.html&quot;&gt;II&lt;/a&gt;, and &lt;a href=&quot;http://ripples.typepad.com/ripples/2006/01/reinventing_you_2.html&quot;&gt;III&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;And I&#39;m actually something of a fan of &lt;a href=&quot;http://www.stevepavlina.com/blog/&quot;&gt;Steve Pavlina&#39;s blog&lt;/a&gt;.  Steve has a number of posts and great articles on self improvement, most of which are well worth checking out.  Note that Steve has a number of unconventional ideas.  If you hate seeing &quot;weird&quot; and out of the ordinary ideas, you should go elsewhere.  Personally, I think Steve is full of shit on a number of points, but I like reading people with different view points.  And the fact that Steve is successfully unemployed, making tons of money with his site, is healthy, happy and doing what he loves should make it easy for him to ignore critics.  Especially fat, diabetic critics who are frightened about losing a job they hate :)  Seriously, there&#39;s good stuff there, check it out and don&#39;t let the stuff you disagree with keep you from learning from the good.&lt;br /&gt;&lt;br /&gt;Whatever the reason, I&#39;ve decided that I need to change.  A new me for a new future.  And since grand sweeping generalizations like this are just so much B.S., I decided to come up with concrete goals that are measurable so I can make actual progress.&lt;br /&gt;&lt;br /&gt;So, to make things easy, I&#39;ve decided that my reinvention period will be exactly one year long - starting Feb. 1, 2006 to Feb. 1, 2007.  That&#39;s my timeframe.&lt;br /&gt;&lt;br /&gt;What do I need to do?  Let&#39;s deal with the obvious first:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Lose weight, get healthy:&lt;/span&gt;  This is really a no brainer.  If I need to find a new job, it will be a lot easier to get one if I&#39;m not grossly overweight.  If you&#39;re going to tell me discrimination is illegal, I&#39;d agree but I doubt you can prove it.  Additionally,  being thin would likely get me off of pills, which would be nice if I lose insurance.  And getting healthy will give me the energy to pursue more than just another cubicle coding gig.  So losing weight is a goal.  To be specific:  my goal is to lose between 1 and 2 pounds every week.  Ideally, I&#39;d drop 100 lbs in the year (2 pounds a week) but I&#39;ll be satisfied with 75 lbs.  This will be accomplished with diet and exercise.  As for exercise:  My goal is 30 minutes of aerobic exercise 4 or 5 times a week.  I may add a bit of weight training to the mix, but I think this is ambitious enough to start.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Less spending:&lt;/span&gt;  Again - duh!  No job == no income for me, so I need to save money.  A lot of it.  Given the job market locally, need at least enough to survive a year.  I hope I&#39;ll be doing more than just looking for a job, but either way I&#39;ll need money.  There are lots of tips to saving cash, but what works best for me is an allowance.  So my goal here is to:  Spend no more than $100 dollars a month on eating out, books, etc.  If I don&#39;t drop money on little things like Xbox 360 games, or a new computer, or a really cool big screen high def TV ... I&#39;ll be a lot better off.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;More coding:&lt;/span&gt;  I love programming.  Whatever I end up doing, I hope coding is a part of it.  Many will say that is stupid as coding is mindless work that is all going offshore.  I still think that&#39;s a crock.  Software is still a craft, and master craftsman will be rare and valuable.  American corporations may too stupid to see that, but that will ultimately be their doom.  I think there is a future in software in the U.S., either as a microISV of one, or being part of a very small company of really skilled folks.  Think 37signals.  So my goal is at least 20 hrs a week coding on my own projects.  Key point:  Not 20 hrs in front of the computer (surfing, e-mail, blogs).  Those 20 hrs need to be doing real work.  This is going to be a hard one, but I think it is critical.  You can&#39;t be a master if you don&#39;t even do the work.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;More blogging:&lt;/span&gt;  I think blogging is helping me.  Just setting words on the screen gives focus, and I&#39;ve gotten kind words of encouragement and good advice.  That leads to the goal:  One blog post per week.  I&#39;ll also do a post each week comparing what I did, vs. my goals.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;And I&#39;m going to stop here for now.  The above doesn&#39;t look like much.  But I&#39;ve read that too many new goals at once is doomed to fail.  You can&#39;t completely re-invent yourself all at once.  You&#39;ve got to do it in iterations.  This looks like enough for iteration #1.  So I&#39;ll end with one last goal - to do a new iteration at least every month.&lt;br /&gt;&lt;br /&gt;And sorry for these last posts being so &quot;me&quot; focused.  With this crap out of the way I&#39;ll get back to technology and business.  Can&#39;t say that will be the last of these though.  It really is a personal journal for this coder.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113872132741640183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113872132741640183' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113872132741640183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113872132741640183'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/01/re-inventing-cubicle-coder.html' title='Re-inventing a Cubicle Coder'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113868023679744458</id><published>2006-01-30T22:15:00.000-05:00</published><updated>2006-01-30T23:04:00.160-05:00</updated><title type='text'>Highs &amp; Lows</title><content type='html'>&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Highs&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;I lost 10 pounds in the last month:&lt;/span&gt;  Okay, not a big deal in the grand scheme of things.  But, all I did was cut out junk food and eating out so much.  Imagine what I could do if I really tried ... Something I&#39;ll talk about soon.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Surviving Infancy:&lt;/span&gt;  My youngest is still an infant, but it feels like the worst aspects of this stage are over.  She goes to bed at a reasonable hour, sleeps most of the night, is eating solid food without complaint and just started saying &quot;ma ma.&quot;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Xbox 360:&lt;/span&gt;  I should probably make this a low as I waste a shitload of time playing games.  But - it is so cool! I love &quot;Kameo.&quot;  Even a video game loser like me can have fun playing the easier modes.  And the graphics are incredible.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;The Lows&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;There really is only one low. But its huge.  The Company has just started pushing offshoring in a really big way.  Lots of people, mostly contractors, just got the boot so we can use more folks in India.  Of course management tells us how wonderful all of this is going to be for us.  The optimists I work with are totally geeked about all this.  The realists are &quot;concerned.&quot;  And the cynical pessimists figure most of the present U.S. development staff has got a year or two left.&lt;br /&gt;&lt;br /&gt;I can&#39;t help it.  I&#39;ve seen too much crap at this place, heard too much B.S. from management, to buy the rosy picture they&#39;re painting.  I&#39;ve been trying hard to figure out whether the realists or the cynics are closer to being right.  Given IT employment in my neck of the woods, losing this job could have serious implications for me.  As in - end of a career.  Scary stuff.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;... and sealevel&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I usually focus on the lows in my life.  And I was doing the same thing this time.  But I&#39;ve pulled myself out of the pit, using the highs to soften the blow.  I think I&#39;m back in a state where I can objectively figure out what to do.  That will be my next post, assuming I ever figure it out ;)</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113868023679744458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113868023679744458' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113868023679744458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113868023679744458'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2006/01/highs-lows.html' title='Highs &amp; Lows'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113609126500217689</id><published>2005-12-31T23:37:00.000-05:00</published><updated>2005-12-31T23:54:25.016-05:00</updated><title type='text'>Happy New Year!</title><content type='html'>Out with the old, in with the new.  I&#39;m actually pretty excited.  I didn&#39;t make my deadline for my food log app, but I have made more progress this vacation then I have in months.  It&#39;s coming along better than I thought, given how little time I&#39;ve been able to put into it.  Funny how the holidays seem to have less free time than normal work days.&lt;br /&gt;&lt;br /&gt;I do have to say that so far Rails kicks ass!  It is really easy to get started, and the automatic scaffolding is really helpful.  In particular, it gives me a good place to start work on the web UI.  That is where I&#39;m really weak. Having a working thing to start tweaking is really helpful.&lt;br /&gt;&lt;br /&gt;Thanks to rails, I&#39;ve got the part of the app where you provide nutritional information on individual food items more or less functional (ugly as sin, but working).  Next comes the daily food log page, and a simple login page.  Once those three are down, I&#39;ll have something barely usable - which is all I&#39;m shooting for now.&lt;br /&gt;&lt;br /&gt;Lastly, I&#39;m thankful for all the kind wishes and comments to my last post.  It really means more than I can say!&lt;br /&gt;&lt;br /&gt;Wishing you and yours all the best next year!</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113609126500217689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113609126500217689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113609126500217689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113609126500217689'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/12/happy-new-year.html' title='Happy New Year!'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113527648236830936</id><published>2005-12-22T13:02:00.000-05:00</published><updated>2005-12-22T13:34:42.400-05:00</updated><title type='text'>Spherical Coder Story</title><content type='html'>I&#39;ve been quiet a long time.  There&#39;s a reason, and talking about it is something I&#39;ve been avoiding.  So no blogging.  But I&#39;m going to talk about it now, and get unstuck again.&lt;br /&gt;&lt;br /&gt;One of the great things about the internet is that you can&#39;t see me.  Most people who see me before they know me think I&#39;m stupid.  Why?  Because I&#39;m fat.  I really &lt;span style=&quot;font-weight: bold;&quot;&gt;hate&lt;/span&gt; that word.  I usually say &quot;overweight.&quot;  Actually, I hide behind it.  Because the sad truth is, when you&#39;re over 100 pounds your ideal weight you&#39;re at least fat.  Or, as the medicos put it &quot;Morbidly Obese.&quot;  The thin of you reading this may be retching now ... I find it upsets people, as if it were a contagious disease, or fear that I must be horrible in half a dozen other ways (e.g., stupid, lazy).  I&#39;m actually a pretty nice, smart guy in most ways though, so you might as well read the rest.&lt;br /&gt;&lt;br /&gt;I even joke about it.  When I first got the cubicle coder domain, I actually bought cubical coder by mistake first.  &quot;Ha!&quot;, I said.  &quot;Would have made more sense to grab spherical coder instead.&quot;  But jokes can only protect the mind.  You may have heard that being this overweight carries health risks. I sure have.  I didn&#39;t give much thought to it.  Or didn&#39;t want to.  As usually happens when you ignore risks, it caught up to me recently.  I now have Type II diabetes.&lt;br /&gt;&lt;br /&gt;I&#39;ll be honest.  I&#39;ve been depressed by this news.  Combined with my admission of defeat about getting a business going, trouble at work, and so on I&#39;ve felt terrible.  Its like being caught in a whirlpool, spiraling down.  If it wasn&#39;t for my family I&#39;d be in real trouble.&lt;br /&gt;&lt;br /&gt;But a new year is approaching.  I&#39;ve lost weight in the past.  Now that I have a real reason to do so, I can do it again.&lt;br /&gt;&lt;br /&gt;I&#39;m also inspired to do more than just go on yet another diet.  I&#39;ve looked for things on the web to help people lose weight.  None of them work for me for some reason or another.  Ditto on managing Type II diabetes.  I&#39;m going to start putting together the tools I want.  I don&#39;t care if anyone else uses them.  But I&#39;ll try and make whatever I come up with freely available.  Any luck, someone else will avoid the problems I&#39;m going though.&lt;br /&gt;&lt;br /&gt;And to kick things off, I&#39;m setting myself a hard goal.  I&#39;m going to have a tiny piece of something up on the web by the end of the year.  Its going to be really small, really ugly (I can&#39;t do UI to save my life).  Everyone can laugh at it.  But come what may, I&#39;ll get something up. &lt;br /&gt;&lt;br /&gt;I&#39;m starting off with a food log.  Seems that most people can lose weight easier when they log what they&#39;re eating.  No idea why that would be so.  But it seems like the right size for a rush job like this.  Especially since I&#39;ve never done a real web application before.&lt;br /&gt;&lt;br /&gt;I&#39;m going with Ruby on Rails to build this.  Seems like just the thing to get an app out the door quick.  Especially if you don&#39;t care about it being pretty.  And I&#39;ll try and blog about it as I go.&lt;br /&gt;&lt;br /&gt;Wish me luck!</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113527648236830936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113527648236830936' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113527648236830936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113527648236830936'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/12/spherical-coder-story.html' title='Spherical Coder Story'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-113223589587513902</id><published>2005-11-17T08:53:00.000-05:00</published><updated>2005-11-17T08:58:15.886-05:00</updated><title type='text'>Comment Span</title><content type='html'>Comment Spam - scourage of the blogosphere.  Even though I&#39;ve not posted in forever (life has been &quot;interesting&quot;) the spammers have been swarming over this blog.  I don&#39;t have the time to moderate tons of spam, so I am turning on comment verification - sorry about that.  I hate making people prove they&#39;re human.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/113223589587513902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=113223589587513902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113223589587513902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/113223589587513902'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/11/comment-span.html' title='Comment Span'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112906264579048800</id><published>2005-10-13T21:45:00.000-05:00</published><updated>2005-10-13T21:45:46.503-05:00</updated><title type='text'>Of Aggregators, Laptops, Ruby and SOAP</title><content type='html'>A while back I ran into a link for a &lt;a href=&quot;http://www.newsgator.com/ngs/api/contest/default.aspx&quot;&gt;NewsGator Contest&lt;/a&gt;. The contest is to come up with innovative applications using the NewsGator API. First prize is a laptop, and second is a Nano. This contest struck a cord with me for a few different reasons. First, my laptop gave up the ghost, and now I get to share with my wife.  Who doesn&#39;t really want to share. And the laptop isn&#39;t up to spec as a developer machine. So the idea of winning a new laptop has some appeal, especially since I&#39;m saving pennies so I can pursue the microISV idea. Of course my odds of winning are tiny.  I don&#39;t really have the time to do a great app (see previous posts). But that leads to the second reason this has appeal.  I really want a better aggregator. I currently use bloglines, and it has a lot of positive aspects. But there have been problems lately, as discussed &lt;a href=&quot;http://www.russellbeattie.com/notebook/1008639.html&quot;&gt;here&lt;/a&gt;. Lastly, reading feeds is a significant time sink. I&#39;ve often felt that a tool customized the way I would like could speed things up. So I really would like to build something like this anyway, even if there wasn&#39;t a contest. Lastly, if nothing else I can open source a lib for talking to NewsGator helping someone else out in the future.&lt;br /&gt;&lt;br /&gt;I&#39;ve already mentioned that I had decided that I needed to get real world experience using ruby. I decided this was as good a project as any. A quick look at the NewsGator API documentation shows that SOAP is the preferred way to work with their API. It also points out that you need to do either HTTP Digest Authentication or HTTP Basic Authentication. The doc also strongly recommends that basic authentication only be done when using SSL. WSDL is provided, so this seems like it ought to be straightforward. I knew Ruby 1.8.2 comes with SOAP, so hard can it be? Yes, I came to regret thinking that.&lt;br /&gt;&lt;br /&gt;Looking at the Pragmatic Programmer &quot;Programming Ruby&quot; book, everything seems simple enough. The following code seems like it ought to work:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require &#39;soap/wsdlDriver&#39;&lt;br /&gt;require &#39;pp&#39;&lt;br /&gt;&lt;br /&gt;factory   = SOAP::WSDLDriverFactory.new(&#39;Locations.wsdl&#39;)&lt;br /&gt;&lt;br /&gt;locations = factory.create_rpc_driver&lt;br /&gt;locationList = locations.GetLocations(&#39;QWERTY&#39;)&lt;br /&gt;results = locationList.getLocationsResult.location&lt;br /&gt;&lt;br /&gt;pp results&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Note that I prefetched the WSDL file for testing purposes. I also I am sending &#39;QWERTY&#39; instead of the developer key. This seems to work for testing purposes, but you really need to register for a developer key for each app you develop. Anyway, when I run this I get a 401 error - which makes sense since I need to do some kind of authentication as I mentioned above. &lt;span style=&quot;font-weight: bold;&quot;&gt;NOTE:&lt;/span&gt;  I also don&#39;t have an SSL connection here.  Keep that in mind if you try your own thing - its not secure - yet!&lt;br /&gt;&lt;br /&gt;And now the fun begins - how the heck do I do authentication? Googling doesn&#39;t get me a satisfactory answer. Like a lot of young projects, soap4r has a fair amount of churn. So one thing will say that there is no support for authentication, and there are various others that imply there is some support - though how much is unclear! Since most people don&#39;t bother giving version info, it&#39;s darn hard to figure out what&#39;s going on that way. Even the official articles on the soap4r trac don&#39;t have version info. And are rather minimalist to boot. Ultimately, I get frustrated and pull up the RDoc for my specific version. I figured that I could glean enough from here to solve the problem.&lt;br /&gt;&lt;br /&gt;And here is where I get my first taste of &quot;culture&quot; shock. I&#39;ve been totally in the &quot;official&quot; java world for years now. The java docs are usually quite good.  Explanation of what the methods are for, example code, and detailed specification of input and output are all together in one nice package.&lt;br /&gt;&lt;br /&gt;Not so here - no examples, no explanatory text. And - most shocking to me - no description of what the methods return! This blows my mind - how the &#39;F&#39; am I supposed to know what to do if I have no clue what gets returned.  Best I can tell - you can&#39;t just use the RDoc - and I&#39;m guessing this is intentional. Since ruby uses &quot;&lt;a href=&quot;http://www.rubygarden.org/ruby?DuckTyping&quot;&gt;duck typing&lt;/a&gt;&quot; it makes sense. Hell, now that I think about it, the same function can return multiple concrete types - anything that&#39;s an Object, really. Probably we&#39;re supposed to look at unit tests and samples to see how code is used. I&#39;ve not tried that yet. Instead, I started poking around in the source. That way I can at least figure out what methods return. And more importantly, reading ruby code ought to help me get better at writing it.&lt;br /&gt;&lt;br /&gt;Eventually, grepping code and running the above code in the ruby debugger (just run the code using something like &quot;ruby -r debug test.rb&quot;).  I figured out that there is a way to specify the url, name, and password for basic authentication. I want to try this, but since basic authetication sends your password in clear text, I want to use SSL. For now, I&#39;ve hacked the Locations.wsdl to specify https for the address to the newsgator SOAP service.&lt;br /&gt;&lt;br /&gt;It looks like all I need to have is a soap directory, with a file named property in it. Unfortunately, my first try at this fails to work at all - it can&#39;t seem to find the file. Hmm. A bit more reading I see that it is expecting this soap directory to be part of the &quot;load path.&quot; The loadpath is kind of like the classpath in java - its the list of directories that ruby looks in when for &#39;require&#39;d code and the like. Not wanting to muck around in these system areas (since I couldn&#39;t do that on a user&#39;s machine), I looked for way to append to the load path. This can be done easily by specifying -I directory on the command line when running ruby, which appends directory to the load path. So I create the soap dir and property file in the directory where I&#39;ve got the ruby source, and I run ruby now with something like:&lt;br /&gt;ruby -r debug -I . test.rb&lt;br /&gt;I can see by tracing through the code that the properties are getting read.&lt;br /&gt;&lt;br /&gt;But the property names are not exactly intuitive - trial and error and the debugger helped me come up with the file that looks something like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[client.protocol.htpp.basic_auth]&lt;br /&gt;url=* # I&#39;ve not figured out what this is yet, so stuck an &#39;*&#39; for now&lt;br /&gt;userid=coder&lt;br /&gt;passwd=SecurePasswordGoesHere&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This seems to be right, as when I follow through the debugger the properties seems to be getting read correctly. But - the code is still failing with a 401. What gives?&lt;br /&gt;&lt;br /&gt;Well, tracking into things line-by-line, I eventually find the problem. There is a module method (A method on a module that can be used without the module being mixed into a class ... sort of like a static method in Java) that is responsible for dealing with configuring basic authentication configuration.&lt;br /&gt;&lt;br /&gt;In particular, if you&#39;re dealing with soap4r, version 1.5.4 look at httpconfigloader.rb. The module is HTTPConfigLoader, and the method I&#39;m looking at is set_basic_auth. Here&#39;s the code:&lt;br /&gt;&lt;pre&gt; &lt;br /&gt;def set_basic_auth(client, basic_auth)&lt;br /&gt;basic_auth.values.each do |url, userid, passwd|&lt;br /&gt;  client.set_basic_auth(url, userid, passwd)&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pretty simple, eh? Yet, as far as I can tell it is just plain broke (under ruby 1.8.3, at least). See, basic_auth is actually a SOAP::Property class, and values is a method that returns an array, where the array is the result of calling the values method on an internal Hashmap in the SOAP::Property class. So the second line of code is calling each on an array - which simply iterates through all the elements of the array and passes them individually to the block. This clearly isn&#39;t the intent here, as the array contains [&#39;*&#39;, &#39;coder&#39;, &#39;SecurePasswordGoesHere&#39;]. This means that the set_basic_auth function is called three times, with url being one of the items in the array and the other two parameters being nil.&lt;br /&gt;&lt;br /&gt;So, once I stopped swearing, I had to figure out a way to deal with this. I could certainly change the code, but then anyone else trying to make use of my work would need to do the same thing. What to do? I thought about all the standard tricks that I could try in Java ... but eventually I realized I was being stupid. There is a really easy solution in languages like ruby. But it still seems bizarre to me, after my years in static languages. All you need to do is override the method.&lt;br /&gt;&lt;br /&gt;See, classes are never closed in ruby. You can always add new methods to a class, or replace old ones. This applies to all classes and modules - not just yours. So, if I want, I can fix the broken method by redefining it. Here&#39;s some code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;require &#39;soap/wsdlDriver&#39;&lt;br /&gt;&lt;br /&gt;require &#39;pp&#39;&lt;br /&gt;&lt;br /&gt;module SOAP&lt;br /&gt; module HTTPConfigLoader&lt;br /&gt;   module_function&lt;br /&gt;   def set_basic_auth(client, basic_auth)&lt;br /&gt;     client.set_basic_auth(nil,basic_auth[&quot;userid&quot;], basic_auth[&quot;passwd&quot;])&lt;br /&gt;   end&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;factory   = SOAP::WSDLDriverFactory.new(&#39;Locations.wsdl&#39;)&lt;br /&gt;&lt;br /&gt;locations = factory.create_rpc_driver&lt;br /&gt;locationList = locations.GetLocations(&#39;QWERTY&#39;)&lt;br /&gt;results = locationList.getLocationsResult.location&lt;br /&gt;&lt;br /&gt;pp results&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Seems weird, but it got me to the next step ... but I think this post is long enough. I&#39;ll pick this up next time. Why not run the code above and see if you can anticipate the next post?&lt;br /&gt;&lt;br /&gt;In the meantime, anyone have any thoughts/questions on the above, please feel free to comment, and I&#39;ll be happy to answer. I&#39;m sure I didn&#39;t explain things as well as I should have. Hopefully practice will help.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112906264579048800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112906264579048800' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112906264579048800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112906264579048800'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/10/of-aggregators-laptops-ruby-and-soap.html' title='Of Aggregators, Laptops, Ruby and SOAP'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112891363899967818</id><published>2005-10-09T21:36:00.000-05:00</published><updated>2005-10-09T22:07:19.013-05:00</updated><title type='text'>Step 3 - When there isn&#39;t enough time</title><content type='html'>Why so quiet? That was the question someone e-mailed to me. Short answer: I&#39;ve been dreading this post. No, I&#39;m still not giving up ... exactly. But I&#39;ve analyzed the time commitments I have, and I&#39;ve decided that for the near future I don&#39;t have the time to build great apps as well as a business. Until the baby is older, I have to be able to help my wife out when I&#39;m not working. So for the few months I&#39;m not going to persue the microISV dream.&lt;br /&gt;&lt;br /&gt;I&#39;ll still be thinking about ideas, and reading the blogs of my successful peers. But more importantly, I&#39;ll be in technology mode. That means I&#39;ll be working with the technologies I plan on using in building my app. This works better given my limited time, as I don&#39;t need large blocks of time to get into the Flow necessary for building a great app. And this way I&#39;ll be ready on the technology front.&lt;br /&gt;&lt;br /&gt;So my blog posts will shift into my reporting on what I find as I work with things as a cubicle coder. Expect to see posts on building little apps in ruby as well as ruby on rails. And like everyone else in the Universe, it seems, I&#39;ll talk about trying to make sense of Ajax and the fuss about web 2.0. And whatever else seems cool to me. Expect to see actual code - something this cubicle coder hasn&#39;t done to date, ironically enough. And expect to see posts more than once in a blue moon.&lt;br /&gt;&lt;br /&gt;I also want to say thanks to everyone who&#39;s stuck with the blog, and gave such good advice. I really do expect to make good on that with a microISV in the near future. And I&#39;m also saving money so that, if I have to, I can leave the day job and persue this really seriously. In the meantime, I hope my technology research will prove interesting and valuable to anyone going down the microISV road.&lt;br /&gt;&lt;br /&gt;Lastly, I&#39;m happy to say I&#39;ve been going down this road for a bit now. I&#39;ve got code to show in the next post, as well as some subjective observations on working with ruby. For reasons I&#39;ll discuss, I&#39;ve been trying to use SOAP from ruby - and its been &quot;interesting.&quot;</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112891363899967818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112891363899967818' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112891363899967818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112891363899967818'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/10/step-3-when-there-isnt-enough-time.html' title='Step 3 - When there isn&#39;t enough time'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112621014923650159</id><published>2005-09-08T14:20:00.000-05:00</published><updated>2005-09-08T15:09:09.243-05:00</updated><title type='text'>Getting Organized: Step 2 - Admit There&#39;s No Silver Bullet</title><content type='html'>So I&#39;ve been trying to get organized, which so far has entailed me researching the various systems for organizing out there.  And I&#39;m very disappointed to say that I couldn&#39;t find the perfect system.  What would be perfect?  A system that would let me do everything I want to along with what needs to get done.&lt;br /&gt;&lt;br /&gt;Sounds like magic, doesn&#39;t it?  But somehow I think that there&#39;s &quot;got to be a way!&quot; to get everything done.  But the better systems out there are pretty up front about this - there are only so many hours in a day, and most people have so much stuff that they&#39;d like to do that there is no way that there will ever be enough time for it all.  The best you can do is use your time more effectively, and make sure you do the right things.  You can&#39;t do all things no matter how effective you are.&lt;br /&gt;&lt;br /&gt;Funny thing is, I&#39;m acting like the product manager types at work I sometimes despise.  They focus on what &quot;has to get done&quot; while I argue that their wants/needs are irrelevant if what they&#39;re asking for is impossible.  And here I am doing the exactly same thing.&lt;br /&gt;&lt;br /&gt;What finally got me to see the light was a suggestion from the &quot;Getting Things Done&quot; book, which is to start making a list of all the projects and ideas that you&#39;ve got floating about in your head.  The goal is to capture it in a trusted system so you no longer unconsciously worry about it.  I&#39;m not there yet.  But around the point I&#39;d written over one hundred to-do items, I realized that I&#39;m never going to do it all.&lt;br /&gt;&lt;br /&gt;I&#39;m still not giving up though.  I don&#39;t have time for everything, but there is still time.  I just have to focus on using that time for what&#39;s really important.  Sadly, it only looks like an hour or two most nights. I decided family time is non-negotiable right now.  So I lose a bit of sleep, and work instead.  I&#39;m not going to be setting speed records.  But if I focus on doing just one thing with that time, I&#39;ll make progress.&lt;br /&gt;&lt;br /&gt;And the one thing?  Nothing new - its the requirements app discussed a few posts back.  I still care about the idea, and want to see it built.  So that is what my focus will be.  If I start off small, even with the limited time available I should get something usable before my kids graduate high school.  &lt;br /&gt;&lt;br /&gt;So far I&#39;ve spent a few hours building the initial vision/requirements doc.  When it fleshes out more I&#39;ll be posting it here.  I find writing things down helps, as I can do little bits at a time, and when I get interrupted I can re-read what I wrote and get back quicker to where I was before the interruption.  &lt;br /&gt;&lt;br /&gt;Based on this, I&#39;m going to write a detailed plan, and I&#39;ll then execute off of it.  This should make it easier to work in the little windows of available time outside the planning stages.  Big chunks of work will have to wait for weekends where I steal a day for the project.&lt;br /&gt;&lt;br /&gt;I&#39;m also moving forward with GTD (as &quot;Getting Things Done&quot; is known by).  I&#39;ll have a really solid list of ideas, projects, and what not ready to go if I need to make a change of direction.  And I do think that having everything captured will keep me from worrying on ideas so much.  Just capturing ideas for the Ruby eBooks made it a lot easier to let the ideas go.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112621014923650159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112621014923650159' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112621014923650159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112621014923650159'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/09/getting-organized-step-2-admit-theres.html' title='Getting Organized: Step 2 - Admit There&#39;s No Silver Bullet'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112508360537055770</id><published>2005-08-26T13:45:00.000-05:00</published><updated>2005-08-26T14:16:43.416-05:00</updated><title type='text'>Getting Organized: Step 1 - Admit You Have a Problem</title><content type='html'>So I&#39;ve been thinking a lot about giving up the microISV dream (WARNING - A bit of whine will now be served).  Life is hectic.  My role at work is changing, and I can&#39;t seem to get traction with all the projects I&#39;m &quot;sort of&quot; involved in.  I&#39;ve already dropped several balls.  Home life totally revolves around the kids.  And my new baby girl can&#39;t decide if she wants to sleep at night or just party.  I never know when there will be down time.  And when a break comes along, I don&#39;t really have a clue what to do - read the books on business I&#39;ve bought?  Read through the 500 feeds I follow? Read the new technical books for work?  Write an eBook on Ruby (really cool idea Brandon suggested in a comment)?  Define requirements for the requirements gather tool?  I need to get tons done - and the more I need to do, the less I get accomplished.  So giving up is pretty attractive (end of whine - mostly).&lt;br /&gt;&lt;br /&gt;Fortunately, I&#39;m a stubborn son of a bitch.  I can&#39;t just quit!  I&#39;ve decided the real problem is that I&#39;m totally disorganized.  Somehow I&#39;ve got to get a grip on all the things I&#39;ve got or want to have going on, get organized enough so that I can start making progress again.  I&#39;ve always been bad about organizing things - mostly I rely on memory to keep things straight.  That&#39;s never really worked well, but it has been sufficient up until now.&lt;br /&gt;&lt;br /&gt;The real problem I think is time.  Before the kids, I could always devote a weekend or two to something that really needed doing and power through it.  Or at least get enough momentum going that I could carry on from that point.  Can&#39;t do that anymore.  I&#39;ve been faltering ever since kid #1.  Enough so that I&#39;ve got a couple of time management books lying around the house, and even actually read them.  But somehow I couldn&#39;t make the ideas in the books work.  Somewhere deep down inside me, I totally rebel against getting organized.  So I&#39;ve done nothing except make some time management gurus richer.&lt;br /&gt;&lt;br /&gt;I think the biggest problem is that I was still able to hobble along.  Why change when things aren&#39;t that bad?  Well, now they&#39;re that bad, I think.  Failing to make progress on important initiatives, dropping balls at work, and so on is so unbearable that I will make changes.  I can do that, I think, now that I&#39;ve admitted that there is a problem.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112508360537055770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112508360537055770' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112508360537055770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112508360537055770'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/08/getting-organized-step-1-admit-you.html' title='Getting Organized: Step 1 - Admit You Have a Problem'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112381357944351144</id><published>2005-08-11T22:59:00.000-05:00</published><updated>2005-08-11T23:07:36.213-05:00</updated><title type='text'>Ruby:  Blocks + DSLs == Super-Cool ?</title><content type='html'>New project, another chance to re-evaluate technologies. I decided to stick with Ruby on Rails. I wish I could say I had deep, compelling technical reasons. But the truth is, all the cool kids are playing with rails these days, as well as people I respect (Dave Thomas, Pragmatic Programmer). And I love learning new stuff, so that helps me maintain my passion for the project.&lt;br /&gt;&lt;br /&gt;I decided it made sense to do a little digging into Ruby itself, which is what I&#39;ve been doing lately. Pretty boring (until recently), so I&#39;ve not blogged much. When looking at a language in terms of classes, conditionals, and other low-level details there&#39;s not a lot of excitement. Seen one language, seen them all.&lt;br /&gt;&lt;br /&gt;But I&#39;m getting to the point where I can begin to see what makes Ruby so cool. And it just so happens that a couple of interesting items came up in my News Reader that explain some details that have been eluding me. So this post is going to be a bit of mess - I&#39;m stirring high theory and low details together trying to paint a coherent picture. Don&#39;t say I didn&#39;t warn you.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Language Theory:  Are some programming languages just plain better?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I think most working programmers starting out saying &quot;Yes - the best language is the one I use&quot; ;). Many more experienced programmers see languages as tools, and would argue that the &quot;best&quot; language is the one that most closely fits the job you&#39;re doing. Writing a video driver - use C. Huge scale enterprise app - use Java or C++. Need to parse grungy text files for a report - use Perl. In this view, arguing about better languages is stupid - it&#39;s like asking if a screwdriver is better than a hammer. Obviously, the answer depends on what you&#39;re trying to do. Certainly this matches my experience, and I&#39;ve used more than a dozen languages over the years.&lt;br /&gt;&lt;br /&gt;But there are some really smart people who think that it is not that simple.  &lt;a href=&quot;http://www.paulgraham.com/&quot;&gt;Paul Graham&lt;/a&gt; argues that &lt;a href=&quot;http://www.paulgraham.com/avg.html&quot;&gt;some languages are more powerful&lt;/a&gt;. Why? In a nutshell, he sees lisp as being more powerful because you can customize the language to better work with the problem you&#39;re working on. He refers to this as &lt;a href=&quot;http://www.paulgraham.com/progbot.html&quot;&gt;programming bottom-up&lt;/a&gt;. Note that while I&#39;m really a fan of Paul&#39;s writings, I don&#39;t agree with everything he says. His slam of Java programmers is out of line, IMHO. And the whole programmer as artist thing bugs me too. But I think his writings are well worth the time, and he&#39;s on target a good deal of the time.&lt;br /&gt;&lt;br /&gt;This ties in with work others of done around the idea of &quot;little languages&quot; or &quot;Domain Specific Languages&quot; (DSLs from here on out). There are dozens of great examples of leveraging the idea in Unix - awk being one of the better known ones. Programming from the bottom-up is bit different, in that rather than creating a new language from scratch, you add DSL features to an existing high level language. This saves you from inventing new languages from scratch, and from having to re-invent and re-implement features already in your high level language.&lt;br /&gt;&lt;br /&gt;Does this really work? Can&#39;t answer that myself - I&#39;ve not tried it yet. But I&#39;ve used &quot;little languages&quot; before, and even written a couple. And it is amazing how powerful it can be, once you get it right. So the idea of bottom-up programming seems promising to me.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Ruby Blocks Rule&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So I&#39;m going through my intro Ruby book, and it is pretty dull at first: conditionals, strings, and so on. But then I get to blocks. Blocks are the first thing I encountered in Ruby that feel really new to me.&lt;br /&gt;&lt;br /&gt;So just what is a block? It&#39;s hard for me to explain. There really isn&#39;t anything like it in the languages I&#39;ve dealt with as a cubicle coder, though apparently language mavens can point to esoteric languages that have similar features. So I&#39;ll probably botch the explanation. Fortunately, you can view this &lt;a href=&quot;http://www.rubyist.net/%7Ematz/slides/oscon2005/mgp00001.html&quot;&gt;slideset&lt;/a&gt; by Ruby&#39;s creator rather than suffer with just what I have to say.  Also, &lt;a href=&quot;http://www.martinfowler.com/&quot;&gt;Martin Fowler&lt;/a&gt; describes Ruby blocks, or as they are more generically known to the language mavens, &lt;a href=&quot;http://martinfowler.com/bliki/Closure.html&quot;&gt;Closures&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I&#39;ll begin by saying a block seems like a chunk of executable code you can just define. Kind of like a function, but without having to define it. What makes this neat is that you can actually pass a block to a function, which can then execute the block you pass it. My initial reaction was &quot;so what?&quot; But when you look at how Ruby &lt;a href=&quot;http://martinfowler.com/bliki/CollectionClosureMethod.html&quot;&gt;leverages the idea in the collection classes&lt;/a&gt;, you can see how powerful and elegant the idea is. Java programmers often get a kick out of how much nicer this can be when you want to associate specific behavior with an instance of a generic class. For example, its a pain in the ass when doing Swing UI programming, because you need to create classes that are descendents of listeners so you can add behavior to deal with things like a window being closed. You could just tell the object to use block X when event Y occurs without all the nonsense of anonymous classes and such.&lt;br /&gt;&lt;br /&gt;At this point you might be thinking this isn&#39;t a big deal at all, its just a convenient way of doing function pointers from C. But its not that simple. There&#39;s more going on with blocks than I&#39;ve mentioned. The other neat thing about blocks is that they can reference variables that were visible when they were created. So its more than just a function pointer for that reason. But Martin Fowler argues in &lt;a href=&quot;http://martinfowler.com/bliki/Closure.html&quot;&gt;Closure&lt;/a&gt; that the more significant difference is that they can be defined with very little syntax. That makes it a lot easier to use them. Again, you could do all of this (more or less) in Java with anonymous inner classes. But it is really painful to program that way given the syntax. Which leads to...&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:130%;&quot; &gt;Rake:  An Example of Programming Bottom-Up in Ruby&lt;/span&gt;&lt;br /&gt;And now I can finally get to the meat of this post.  Martin Fowler just posted/updated an article looking at &lt;a href=&quot;http://martinfowler.com/articles/rake.html&quot;&gt;Rake&lt;/a&gt;, the tool used to build Ruby programs. Rake is Ruby&#39;s equivalent of make and ant, so I was poking into it as well. But I didn&#39;t get that this was a DSL until reading Fowler&#39;s article. And when I combined this with Matz&#39;s &lt;a href=&quot;http://www.rubyist.net/%7Ematz/slides/oscon2005/mgp00001.html&quot;&gt;slideset&lt;/a&gt;, I suddenly saw how building a DSL in Ruby works.&lt;br /&gt;&lt;br /&gt;You see, Matz stressed that the syntax of blocks is key. In particular, he points out in Ruby, you just stick a block at the end of method. Because ruby methods don&#39;t need parentheses, you get code like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;employees.each do |e|&lt;br /&gt; e.do_something&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The neat thing about this is that begins to look more like a DSL, rather than generic programming. Let&#39;s look at an example from the Rake article:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;task :build_refact =&gt; [:clean] do&lt;br /&gt; target = SITE_DIR + &#39;refact/&#39;&lt;br /&gt; mkdir_p target, QUIET&lt;br /&gt; require &#39;refactoringHome&#39;&lt;br /&gt; OutputCapturer.new.run {run_refactoring}&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This DSL is saying something like, &quot;There is a build task called build_reflect which depends on the clean task. When the build_refact task is executed, run the code between do-end.&quot;&lt;br /&gt;&lt;br /&gt;In this case the method is called task, and the do-end is really just a block.  In Ruby, &lt;code&gt;:foo&lt;/code&gt; is the symbol foo.  &lt;code&gt;[a,b]&lt;/code&gt; is an array and &lt;code&gt;{a =&gt; b, c =&gt; d}&lt;/code&gt; is a hashmap. And Ruby doesn&#39;t need the curly braces on a hashmap if there is only one item in the map. Which means that task is ultimately just a function that takes two arguments - a Asimov and a block. But, it &lt;span style=&quot;font-weight: bold;&quot;&gt;looks&lt;/span&gt; like a DSL. And more importantly, it feels like one. You don&#39;t think in terms of functions, args, and blocks - it just comes out naturally.&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:130%;&quot; &gt;&lt;br /&gt;Summary&lt;/span&gt;&lt;br /&gt;So I think I&#39;ve glimpsed some of the power of Ruby. Blocks, useful in their own right, really kick ass when doing a DSL because the syntax is almost transparent. I think I begin to see how I&#39;d go about building a DSL with Ruby. Not sure yet how useful this for my app yet. But I&#39;m trying to keep an open mind. I&#39;d certainly like to believe Graham is right; it would mean I have an extra edge. We shall see.&lt;br /&gt;&lt;br /&gt;Next time:  Not so theoretical (I hope)</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112381357944351144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112381357944351144' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112381357944351144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112381357944351144'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/08/ruby-blocks-dsls-super-cool.html' title='Ruby:  Blocks + DSLs == Super-Cool ?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112312363729955795</id><published>2005-08-03T21:50:00.000-05:00</published><updated>2005-08-03T21:47:17.306-05:00</updated><title type='text'>Business Motivation for New Project</title><content type='html'>As I said in the last post, I&#39;m switching to a new project. My goal now is to build a tool for managing software requirements in an agile way. I gave my personal reason for going this way. I love tool building. But I was vague on the business motivation.&lt;br /&gt;&lt;br /&gt;My thinking here is heavily influenced by this &lt;a href=&quot;http://37signals.com/svn/archives2/sidebusiness_software_the_neglected_software_market.php&quot;&gt;post&lt;/a&gt; from Jason at &lt;a href=&quot;http://37signals.com/&quot;&gt;37 Signals&lt;/a&gt;. Short version - there may well be a lot of opportunities to write small applications for small businesses that are becoming more common. For more that trend, read &lt;a href=&quot;http://ripples.typepad.com/ripples/&quot;&gt;David St. Lawrence&lt;/a&gt;&#39;s new series on &lt;a href=&quot;http://ripples.typepad.com/ripples/2005/08/choosing_your_m.html&quot;&gt;micro-businesses&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Suppose this is all true. There are tons of opportunities for small teams to develop special applications for a huge number of micro-businesses. If the developers are microISVs, they&#39;ll want to collaborate with their customers over the internet as much as possible. Both for speed and low expense. And microISV will want tool cost to be low because the micro-business owner won&#39;t be able to pay as much as a large business. Thus there could be a real demand for an inexpensive requirement management tool that allows for collaboration over the internet.&lt;br /&gt;&lt;br /&gt;That&#39;s my reasoning, anyway. I&#39;m not sure this will really hold up to the level that you can make a lot of money selling an inexpensive requirements tool. But if nothing else, perhaps such a tool would be an advantage if I went into the very uncertain business of building custom software for micro-businesses.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112312363729955795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112312363729955795' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112312363729955795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112312363729955795'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/08/business-motivation-for-new-project.html' title='Business Motivation for New Project'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112304121211867960</id><published>2005-08-02T22:13:00.000-05:00</published><updated>2005-08-02T22:53:32.126-05:00</updated><title type='text'>A new beginning, a new direction</title><content type='html'>My new little one isn&#39;t sleeping through the night yet, but she&#39;s sleeping well enough that I can get back to work. The good thing about the time off is that I could step back and evaluate how I&#39;ve been doing. And my conclusion is that I&#39;ve sucked pretty bad when it comes to getting something done.&lt;br /&gt;&lt;br /&gt;Why? I kept asking myself that, and I finally figured it out. I don&#39;t care much for the book web-app idea. Not just from a business perspective either. I simply don&#39;t like the idea of coding something like that up. Put better - I&#39;m not passionate about the idea. And I really need to be passionate if I&#39;m going to be carving time out from my family on nights and weekends. It&#39;s a big sacrifice. I just can&#39;t make myself do it for something I don&#39;t care about.&lt;br /&gt;&lt;br /&gt;So what do I care about? Honestly, I really like building tools for application development more than apps themselves. Now you&#39;re probably thinking something along the lines of &quot;idiot! That market is saturated! And competing against big development companies in such a strategic area for them is suicide!&quot; But I think there is a gap.&lt;br /&gt;&lt;br /&gt;In particular, I haven&#39;t found a simple, cheap, agile requirements gathering tool centered on the case where the customer and developer are working together through the net. Note I mentioned cheap. I do so because I actually think the requirement tools out there are too expensive for microISVs and small startups. And nothing I&#39;ve seen supports interaction with a community of &lt;span style=&quot;font-style: italic;&quot;&gt;potential&lt;/span&gt; customers over then net. I wanted something like this when I started the book web-app. Best I found were generic tools like wikis. I like the idea of a web-app focused on agile requirements gathering.&lt;br /&gt;&lt;br /&gt;Is this a huge opportunity? I doubt it. But I am passionate about this idea, because I know that I&#39;ll use it at least. Collaborative development with potential customers seems like an edge microISVs will want. We can be fast and nimble, but without feedback on what customers really want its hard to build something that is acceptable - let alone F&#39;ing Amazing. Maybe a tool like this will help us (or me, at least) reach that next step.&lt;br /&gt;&lt;br /&gt;To all the other microISVs out there - is this something you&#39;d like to use? Any specific wants/needs? I&#39;d love some feedback. Until the app is built, comments on this blog is the best we can do ;)</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112304121211867960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112304121211867960' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112304121211867960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112304121211867960'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/08/new-beginning-new-direction.html' title='A new beginning, a new direction'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112303861336270497</id><published>2005-08-02T22:00:00.000-05:00</published><updated>2005-08-02T22:10:13.363-05:00</updated><title type='text'>Adding in Syndication links</title><content type='html'>A few readers have been kind enough to point out that getting my feed is pain in the ass, since I don&#39;t have links to it anywhere. I&#39;m trying to fix that right now - and apparently I need to actually write a post to get images for the icons into blogger.&lt;br /&gt;&lt;br /&gt;Here is my icon for the default atom feed (provided by blogger):&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/3765/704/1600/atomvalid.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/3765/704/320/atomvalid.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here is the image for RSS (feed conversion to be done by feedburner)&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/3765/704/1600/rss_icons.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/3765/704/320/rss_icons.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With a bit of luck, my next post will have the icons in place and will have some real content.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112303861336270497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112303861336270497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112303861336270497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112303861336270497'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/08/adding-in-syndication-links.html' title='Adding in Syndication links'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112087770730499323</id><published>2005-07-08T21:47:00.000-05:00</published><updated>2005-07-08T21:55:07.310-05:00</updated><title type='text'>Fundware Idea Taking Off?</title><content type='html'>A while back, I posted some ideas on &lt;a href=&quot;http://cubiclecoder.blogspot.com/2005/06/how-do-you-make-money-on-internet.html&quot;&gt;ways to make money on the Internet&lt;/a&gt;. The oddest one of the lot was what I called fundware. Fundware is where you use sites like fundable.org to get money to work on projects, or keep sites running.&lt;br /&gt;&lt;br /&gt;Ran across this &lt;a href=&quot;http://business.newsforge.com/business/05/07/07/1330241.shtml?tid=33&amp;tid=138&amp;amp;tid=150&amp;amp;tid=93&quot;&gt;story&lt;/a&gt; on the Net, and it seems like some people are actually using this to get software written.  Pretty cool.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112087770730499323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112087770730499323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112087770730499323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112087770730499323'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/07/fundware-idea-taking-off.html' title='Fundware Idea Taking Off?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-112015379496632950</id><published>2005-06-30T12:39:00.000-05:00</published><updated>2005-06-30T12:49:54.970-05:00</updated><title type='text'>Early Completion of Project</title><content type='html'>Actually, it&#39;s my wife who is done early.  We just had a little girl!  I&#39;ll be back once we convince her that sleeping in the day time is a good idea.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/112015379496632950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=112015379496632950' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112015379496632950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/112015379496632950'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/06/early-completion-of-project.html' title='Early Completion of Project'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-111975111233642902</id><published>2005-06-25T20:59:00.000-05:00</published><updated>2005-06-25T20:58:32.340-05:00</updated><title type='text'>Success and Failures</title><content type='html'>Been a busy week so didn&#39;t get a lot done. But I did get to try some of the techniques I was hoping to use. One success on this front, and some failures. Here&#39;s a summary.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;User Stories&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This little idea has actually worked well. Just sitting down with a stack of notecards and pen was amazingly productive. I wrote down 30 or so story titles on each note card in a short period of time. Somehow this really helps me brainstorm. I now have new ideas, and a enough stories to last multiple iterations.&lt;br /&gt;&lt;br /&gt;I even picked the first set of stories for the first release. For those stories I wrote I wrote out a bit of narrative, and feel like I&#39;ve made a good start on requirements. I need to go over it again and probably add a bit more detail - thoughts on tests that should pass and the like. All and all, I&#39;m happy with this technique.&lt;br /&gt;&lt;br /&gt;On the downside, I failed to get the stories moved to a wiki on my site. This stems mostly from technical difficulties which I don&#39;t have the time to power through right now. Plus, I don&#39;t quite care for how the wiki I was planning on using is &quot;all-or-nothing&quot; regarding editing. I&#39;d really like to lock down the stories to me, and allow others to write comments and such. Something I&#39;ll have to think more about later.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Paper Prototyping&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;For me, this was a failure. I think that has more to do with me than the technique. My problems are I&#39;m not visual and I don&#39;t really grok modern web UI. When I try to draw a prototype by hand, I don&#39;t really know what HTML is capable of. The more I doodle, the more convinced I am that I need more experience to pull this off.&lt;br /&gt;&lt;br /&gt;So I&#39;m going to spend some time reading up on web site design, modern HTML and the like. Then I&#39;ll actually make prototype screens. Later on, when I have experience in web UI, I&#39;ll try paper prototyping again. But for now, it&#39;s just a waste of time for me. And maybe, as fast as web design evolves it will always be a waste of time if you want to shoot for the best possible UI.&lt;br /&gt;&lt;br /&gt;Hopefully more progress next time.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/111975111233642902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=111975111233642902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111975111233642902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111975111233642902'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/06/success-and-failures.html' title='Success and Failures'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-111938500516117976</id><published>2005-06-21T15:25:00.000-05:00</published><updated>2005-06-21T15:16:45.166-05:00</updated><title type='text'>Paper Prototyping</title><content type='html'>&lt;a href=&quot;http://www.rapidsignal.com/blog/&quot;&gt;Dimitrius&lt;/a&gt; and &lt;a href=&quot;http://www.michaelsica.com/ataraxissoftware/&quot;&gt;Michael&lt;/a&gt; are having an interesting &lt;a href=&quot;http://www.michaelsica.com/ataraxissoftware/2005/06/microisvs-dont-forget-to-prototype.html&quot;&gt;debate&lt;/a&gt; about prototyping. Michael argues that prototypes are valuable investment for a microISV to make because they save time down the road. He gives good examples from experience where a prototype would have saved time. Dimitrius (I think) argues that the prototype still doesn&#39;t give a good enough feel for how the real app will work to be valuable. I bet someone will argue that prototypes are worthless because they can change the code super fast because they use Agile Method &lt;fill in=&quot;&quot; the=&quot;&quot; blank=&quot;&quot;&gt;.  Cool debate, I&#39;m keenly interested in as I have no UI experience and so am looking at what others suggest in this area.&lt;br /&gt;&lt;br /&gt;Rather than debate all that here, though, I thought I&#39;d mention another prototyping option I&#39;ve been thinking about. Proponents seem to say it is really lightweight, and it will give you a great idea of how users will interact with your app without you writing any code - or even any HTML!&lt;br /&gt;&lt;br /&gt;All using the magic of pen and paper. If you&#39;re thinking &quot;another stupid low-tech dumbass idea&quot; I&#39;d have agreed when I first ran across this. But I&#39;m not so sure now. Looks like it just might be the simplest thing that can possibly work. I&#39;ll describe it as I see it, but here&#39;s a site (and book) to check out: &lt;a href=&quot;http://www.paperprototyping.com/&quot;&gt;paperprotyping.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The basic idea according to Jay Cubicle Coder: Draw your screens on paper (and maybe using Post-It notes too). Show them to a potential user. Talk to them, see what they think they should do. If they say &quot;I click over here&quot; then you pull up the drawing showing what happens next, or just tell them, or even draw on the piece of paper your holding. Hell, let them draw on the page if they&#39;ve got ideas. In short, pretend your the computer for your user.&lt;br /&gt;&lt;br /&gt;You can iterate with this too. Start with crappy hand drawings, take lots of notes on the paper, whatever. Next time, throw in some screen shots prototyped with HTML. And so on up to the point you have a full prototype (with fake code for screen transitions) if you really need to go that far.&lt;br /&gt;&lt;br /&gt;As a microISV wannabe, I like this idea. Seems like a minimal time investment in the beginning. No need to code if you pretend to be a computer, but you still can get the idea of how a user will use the app. And if you can&#39;t figure out the screen transitions your self you probably can&#39;t code it anyway.&lt;br /&gt;&lt;br /&gt;I plan on giving it a try soon.  I&#39;ll let you know if it works for me.&lt;br /&gt;&lt;/fill&gt;</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/111938500516117976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=111938500516117976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111938500516117976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111938500516117976'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/06/paper-prototyping.html' title='Paper Prototyping'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-111915069281323604</id><published>2005-06-18T22:15:00.000-05:00</published><updated>2005-06-18T22:16:20.163-05:00</updated><title type='text'>Plan of Attack</title><content type='html'>A key piece of advice I&#39;ve been hearing is: Get Moving! No one gets anywhere sitting on their ass and &lt;span style=&quot;font-style: italic;&quot;&gt;planning&lt;/span&gt; for success. Success requires &lt;span style=&quot;font-style: italic;&quot;&gt;doing&lt;/span&gt;. Or as they say in the military, &quot;A poor plan executed vigorously is superior to a perfect plan executed after its too late.&quot; Here&#39;s my inferior plan.&lt;br /&gt;&lt;br /&gt;First, I&#39;m going to push on my &quot;digital bookshelf&quot; idea. This is a web app you can go to and tell it what books you&#39;ve read, what your opinion on them is, and so on. Why do you do this? Well, there are several reasons you might want to do this. You might have a lot of books and you want an online catalog of them. Or maybe you want to review books - this could let you make all your book reviews available to an audience. This is something I personally want to do - a book review blog, if you will. Or, maybe you want to use this as a way to find other books you&#39;re interested in. For example, I&#39;d love to see what the other microISVs are reading, what they thought of the book, etc. I got a lot of benefit from &lt;a href=&quot;http://www.userscape.com/blog/&quot;&gt;Ian&#39;s&lt;/a&gt; suggestion that I read &lt;a href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/159184021X&quot;&gt;Purple Cow&lt;/a&gt;. The way the app makes money would be from referrals. You see the book, you like it, you buy from Amazon. I get a cut. Simple.&lt;br /&gt;&lt;br /&gt;As I said earlier, I&#39;m not convinced this is a viable idea, but I&#39;m going to run with it. It&#39;s a plan, it&#39;s motion, and it&#39;ll be good practice. If nothing else, I&#39;ll use it for the book review blog myself.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Step #1:  Requirements&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;A big gap for me as a cubicle coder is requirements. These normally get done by architects and marketing in my Company, so I don&#39;t see such things. I hadn&#39;t thought about it at all, until I read &lt;a href=&quot;http://www.michaelsica.com/ataraxissoftware/2005/06/taking-step-back-defining-users-uses.html&quot;&gt;Michael&#39;s post&lt;/a&gt; on what he&#39;s done for his product.  Now I&#39;m convinced I need to do something.&lt;br /&gt;&lt;br /&gt;I decided to use the book &quot;User Stories Applied.&quot; I sit at my desk and fill out 3x5 cards. Strangely, it seems to work OK. Brainstorming about user roles helped - I came up with a couple I hadn&#39;t thought of. I&#39;ll be doing user stories next.&lt;br /&gt;&lt;br /&gt;Problem: I want to get feedback on what I&#39;m planning. Solution - put the notecard info up on my website. I&#39;m setting up a wiki for this to make sure I don&#39;t waste lots of time on this. Any luck, I&#39;ll start getting this filled in early next week.&lt;br /&gt;&lt;br /&gt;I&#39;m hoping that this will allow everyone to participate in the requirements, to some extent. I&#39;m actually hope that building in this group manner will give me an edge - rather than build a product and release it, hoping someone likes it, I&#39;ll know at least a few people like it.&lt;br /&gt;&lt;br /&gt;How does this sound?  What other techniques can you use to get user participation in requirements when you&#39;re a microISV?&lt;br /&gt;&lt;/span&gt;     &lt;span style=&quot;font-size:78%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;font-size:78%;&quot; &gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Step #2:  Iteration Plan&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Once I get a decent set of story cards, I&#39;ll estimate story difficulty and put together iteration plans. I expect to be wildly inaccurate, but got to start somewhere.&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;font-weight: bold;font-size:85%;&quot; &gt;Step #3:  Write Code, Release to the web, Get feedback&lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:85%;&quot; &gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;OK, I&#39;m really vague at this point.  But that&#39;s OK.  A really detailed plan won&#39;t survive in changing conditions anyway.&lt;br /&gt;&lt;br /&gt;As always, comments and advice appreciated.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/111915069281323604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=111915069281323604' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111915069281323604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111915069281323604'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/06/plan-of-attack.html' title='Plan of Attack'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9585363.post-111914474638285417</id><published>2005-06-18T20:35:00.000-05:00</published><updated>2005-06-18T22:47:58.980-05:00</updated><title type='text'>I&#39;ve got a homepage on the Net</title><content type='html'>Wow, I&#39;ve got a &lt;a href=&quot;http://cubiclecoder.com/&quot;&gt;homepage&lt;/a&gt;. Bet that&#39;s gonna make me the envy of all the other coders. Not. Actually I&#39;ve had the domain for months, and even was paying for a website. But I wasn&#39;t using it. Idiot! Just couldn&#39;t come up with a design that didn&#39;t scream &quot;web - 1990.&quot; But I&#39;ve committed to doing my first app in Ruby on Rails, so I needed to change web hosts anyway. Everybody says its hard to beat &lt;a href=&quot;http://textdrive.com/&quot;&gt;TextDrive&lt;/a&gt; if you&#39;re going to do rails, so I switched to them.&lt;br /&gt;&lt;br /&gt;As for web design, I cheated. Found a free template that was close to what I wanted and just used it for now. Still not much there yet, but that is going to change soon. I&#39;ll talk about plans in the next post.&lt;br /&gt;&lt;br /&gt;Note that this really just a personal homepage. I still need to setup an actual business site. My plan is make prototype web-apps under my Cubicle Coder &quot;brand.&quot; Anything that looks like it has a snowball&#39;s chance in hell, I can get another business site setup for it. This lets me practice technical stuff without the pressure of doing the &quot;real&quot; business site. BTW, if you wanted to see how a much more focused microISV goes about such things, check out &lt;a href=&quot;http://componentfactory.blogspot.com/&quot;&gt;Phil Wright: Component Factory&lt;/a&gt;.  He&#39;s got a product plan, he&#39;s got code, and he&#39;s even got a logo!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;P.S. &lt;/span&gt;Finally figured out how to get links and blogrolls setup. I added the few things I could think of off-the-top of my head. More will come later. Let me know what you think, if you&#39;re not reading this threw an RSS feed.</content><link rel='replies' type='application/atom+xml' href='http://cubiclecoder.blogspot.com/feeds/111914474638285417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9585363&amp;postID=111914474638285417' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111914474638285417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9585363/posts/default/111914474638285417'/><link rel='alternate' type='text/html' href='http://cubiclecoder.blogspot.com/2005/06/ive-got-homepage-on-net.html' title='I&#39;ve got a homepage on the Net'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17868014615157207294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry></feed>