thefishepic

I am called fish and this is my epic

Scrum and Story Points

At work, we use the Scrum methodology to organise our work. Without a certified scrummaster to whom we can refer, we end up making it up and adapting as we go.

I keep getting questions about “story points” and I feel like I’m not answering them correctly nor adequately. Here are some professional scrummasters taking on this topic:

A coworker suggested that it’s a way to indicating how big of a margin of error there is on an item, i.e. the more complex something is, the more likely our time estimate’s going to be off. That’s a very good insight to tie it into the time, but I think there’s definitely more to it than that. For one, you can’t fill a sprint completely with highly complex item, even if they fall well within the timebox; your team will likely get frustrated and burn out. I think it says more about how hard something is, how much unknowns are involved, and other hazy, hand-wavy gut-feel things that are not easy to measure.

The reason why they are not easy to measure is because your team is made of humans who vary from one another from one day to the next. Refactoring five major classes might be easy for one guy, while another has an easier time upgrading to a new framework. Last Friday I was having a terrible time condensing my research and thoughts into words; today I can’t stop writing.

A hazy metric like story points is a pretty fit for measuring complexity, especially for items that don’t require immediate inspection. It strikes me as something that is really only useful for the Product Owner, so it only needs to be as good as the PO needs it, which isn’t really fine-grained. (I think I’m in most agreement with Mike Cohn’s view on using story points.)

Yes, I’m a Quitter

Recently, I left my reasonably secure job at Public Works and Government Services Canada to join a start-up. The timing is not, as some might say, ideal—we’re expecting our first baby in October—but I decided to make the leap anyway.

My job description remains pretty much the same: I’m still a web developer working under the direction of someone else’s vision. But so far, in the last three months, I’m working 200% harder and I’m 1000% happier.

Probably the top reason is the lack of corporate firewall… Not only is it unfeasible to maintain a firewall for the purposes of controlling employee productivity here (as it is pretty nearly anywhere), there just really isn’t a need. And we didn’t have to write long-winded business casses to convince anyone that we don’t need one… we just knew.

Another thing I really love is that I don’t have to wait for some manager to “go to bat” for me if I want something changed. I can just go to talk to the CEO in the next room and talk to him about stuff.

What Else Is There?

An overdue response to It takes a lot to render me speechless:

The question that stumps Steve – “You’re telling us not to just get in a race for the traditional rewards,” [the young man] said. “But what else is there?” – is the one that I’ll try to answer here. First of all, let’s lay out what I think “traditional rewards” refers to:

  • wealth
  • good grades in school
  • successful career (could further define this as one that supports a particular lifestyle, which is tied into wealth)
  • fame and admiration
  • ownership of things

None of these are bad per se and don’t feel bad for striving for them. However, recognise that these are all extrinsic rewards.

Extrinsic rewards come from outside of the self. It relies on the co-operation of another individual or system who happens to value the reward. Again, that’s not bad per se – this is how trade happens and helps us work together and co-exist/co-depend. But the value of extrinsic rewards quickly depreciate once you get them – you will always want more to stay “happy.” Worse, over-reliance on extrinsic values mean you lose touch with the intrinsic, making it all the more tricky to understand them later.

Again, extrinsic values are not bad. But in order to maintain their value and usefulness, they need to be grounded with intrinsic values.

Everyone already has a set of intrinsic values, whether they know it or not. It’s probably the second biggest motivator of our day-to-day decisions (habit being the first). Understanding these values, and separating them from extrinsic ones, is the key to balance and grounded-ness (and, eventually, to bliss).

What are some intrinsic values?

  • strength of will
  • autonomy
  • discipline
  • self-sufficiency
  • enjoyment of what I do
  • relaxation
  • quality time with friends/family

A need for wealth can be driven by the need for autonomy and self-sufficiency. That’s OK. Being grounded in my intrinsic values, I know I need just enough wealth to maintain autonomy and self-sufficiency, but I don’t need wealth beyond that. Also, I can find other means to increase autonomy (by working for myself) or self-sufficiency (learn to grow my own food) which doesn’t require an increase in wealth.

Steve’s lament is that “success by conventional standards” in this day and age doesn’t emphasise intrinsic values enough, and that conventional schooling (which can be whatever you think that means – arguing this point is out of the scope of this entry) doesn’t give us enough help to find them.

It’s not so hopeless, though. I was once just like the young man. Somewhere along the way I came to understand that what I need is different from what other people have been telling me I need. Maybe this young man will one day fill up that “hole in his soul,” too.

Apache With Coldfusion, PHP, and Ruby on Ubuntu

This is for setting up everything to appear under http://localhost/, i.e. http://localhost/phpmyadmin and http://localhost/redmine. I did it “properly” with aliases (mostly) and stuff.

I don’t know if anyone else would want this crazy set up, but here it is for posterity.

First install apache2 with sudo apt-get install apache2. Test it out in http://localhost/. If it says it works, it works.

Download Coldfusion from the Adobe site. MX7 supposedly has kinks with installing on Linux, so get 8 or 9. I’m using 8. chmod u+x the binary and then run it. Follow the prompts and let it configure apache for you; don’t use the standalone server. The standalone server probably eats resources like mad, though I eschewed it mainly for sanity since I wanted apache to do it all. Feels less dirty.

sudo apt-get install php5. Then aptitude search php | grep apache to get the necessary mods if it’s not installed already.

sudo apt-get install ruby rubygems ruby-dev and also look through aptitude for the necessary mod. You need the ruby-dev to install stuff later with gems.

I’ve stuck my project files in my homedir because I prefer easy access from my homedir. Some peeps say this is not as safe, but for local sandboxy development it’s grood.

Now lets install us some gems. sudo gems install passenger come to mind, and install whatever else it says you need. If it installs stuff to your ~/.gem folder because you didn’t call it with sudo, rm -rf .gems and redo it properly this time, you nonce.

Now to put it all together in your /etc/apache2/ confs:

The CF installer should have written something to the httpd.conf. Again, for sanity’s sake, I moved this into its own file in conf-available then symlinked it in conf-enable.

In the now-blank httpd.conf, put in:

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby
DirectoryIndex index.phtml index.php index.php3 index.shtml index.html index.htm index.cfm

And rig up the necessary aliases in sites-available/default:

RailsBaseURI /redmine
<Directory "/var/www/redmine/">
        Options Indexes ExecCGI FollowSymLinks
        Options -MultiViews
        AllowOverride all
        Order allow,deny
        Allow from all
</Directory>

Redmine was the only one that I couldn’t get to go just with an alias, so I cheated and symlinked to its ‘public’ directory in /var/www/. I’m not sure why. Ruby had some other fussiness as well. I can’t remember what exactly, though. Just pushed it around until it worked. Look around on google if it gives you error messages; ruby’s good for that. Check stuff inside /var/logs/apache2/error.log to see if you can get more details.

Alias /cf/ and /cf to your coldfusion apps directory. Same goes for your php apps, like my phpmyadmin, which can be symlinked from /etc/phpmyadmin/apache.conf.

Server Woes No Mo’! Also, Horses and Bikes, Words and Diaspora

Just finished porting over the last of the stuff that was locked in facebook-neverland. <smacks lips>

Brief synopsis: after upgrading to Lucid, my slicehost server went kaput and couldn’t get up for some time. I tried all the pills I could, but finally declared it unrevivable and nuked it. I thought I could export my blog posts from facebook afterwards but noooo… The RSS feed was broken and there was no guarantee that it would ever come back for the handful of us who care enough to want it. So it was manual copy+paste for the 40 or so posts stuck in facebook neverland.

BUT NOW

Wordpress is up running this blog, tracks is up on a subdomain, and squid3 is making life easier at work too!

The main problem I had with tracks today were goofs… First I used the wrong password in database.yml, then I told lighttpd to look for dispatch.fcgi in the wrong place. BUT NOW everything is working and I can start focusing on getting the WP theme to not suck.


W is a sweet boy of six years, which is about 13 or 14 years in human years. He’s quite a dear for trying to rub me off on trees, but otherwise he was fairly laid back and would have to be pushed quite a bit to get up to a good speed. P is the opposite. The chubby girl was raring to go at every chance, and barely needed a nudge to take me on a short canter. Freaked out our hosts. They kept saying I did good.

The part that surprised me was how much Papa knew about horses. Over dinner one night he rambled off all sorts of breeds from around the world, who raced in what races, what awaits a horse when he comes of age… I think I’ve found that bond I need with my father, at last. I wager he’s probably a better rider than I.

I’ve also started riding my bicycle again. It was spurred on by the need to get better at it for my 101 pledge, and again by the peeps who got me into motorcycles. M is en route to getting his motorcycle already and soon I’ll get my gear as well, so I can ride safely on his bike. I wanted to get licensed myself this summer but there isn’t enough time. So I just got a new pedal-bike. Good enough. <rubs hands together>


I started writing on 750words as much as I could to get my writing going again. It’s fun, almost obsessive-compulsive. (Gotta ollect all them badges!) I’ve been griping about not creating enough recently—I’m reading tons of blogs, too many perhaps, and am immersed in social media stuff, again too much perhaps—so the free-writing opportunity was a great place to kick that.

The content of that isn’t too different from my other writing, but I do tend to self-edit more here than there. It’s almost difficult for me to not self-edit as I write. I’m not used to the mechanism of simply writing… it seems the voices in my head quiet down when the spotlight is shone on them.

Anyway, I feel I’m off balance again. Too much consuming not enough creating. I need to rein in from the diaspora.

Not to be confused with the Diaspora, of which I am lucky to backer (albeit a minor one).

I am also a backer of Am I Broken?

I am also loving education blogs. I might become an educator some day, though right now I oughta focus on becoming a shrink.

Right now right now I oughta go to bed…

Oh, Stupid Me

Being forced to go through old blog posts has its perks. Such as: gives me the chance to correct myself.

In The True Cost of Things, I compared American Express (credit card company) with banks; huge commitment of fallacy!

ColdFusion, Apache, Virtualbox Shared Setup

My setup is super hackery and isn’t necessary unless your VPN provider sucks and only supports Windows. Do not do try this at home without adult supervision.

Preamble: I have an ubuntu host and a Windows XP virtual machine. I prefer doing most of my development in linux and it works out OK when I’m physically connected to the work network, but because a) I’m too lazy to copy over the MS SQL Server database to work locally somehow and 2) I don’t have a linux VPN client I have to do pretty much everything through VirtualBox. That is the way of the world. So here’s what I do—I can think of only one other person who might want this, but I’ll jot this down for posterity anyway:

1) Make everything work in ubuntu first—get all the needed tools (git, vim, etc.) and mappings in CFIDE working. Installing ColdFusion 8+ with Apache2 in ubuntu is a piece of cake nowadays.

1a) Little quirky step that’s just for me: symlink ~/Public to /var/www so I can do my development all inside my homedir.

2) Share ~/Public with the Windows virtual machine.

3) Install all the necessary tools in the Windows VM: git, vim, xampp, and ColdFusion. Make CF use Apache instead of the standalone server.

4) Fix up apache’s conf to include the UNC path (//vboxsvr/public) as an alias (to /public)

5) Map everything in CF Administrator with the UNC path, NOT THE MOUNTED PATH, FOR THE LOVE OF GOD.

Git Woe: Git Checkout Not Resetting My File?!

Jotting this down for posterity:

If I want to add a file to the index to be committed and then don’t commit it, and then want to pull a newer version of the file from remote, well uh, I can’t do that. Git will say “you have changes to this file that you didn’t commit! commit or stash it first plz.”

Do: git reset HEAD and unstage the file.

Don’t: git checkout over and over and hit the return carriage with rage because it doesn’t really fix anything.

Technojoy

Survived my first Wordpress “Blank Screen of Death” last night. Source? I goofed and did chmod 600 wp-config.php but did not chown it to www-data. Durr. Hint was from Colin McNulty’s blog where I figured out pretty fast that I did something bad to my config file.

Still not sure why I had to chown the wp-content directory to make auto-updates work, though. Everything got chgrp‘d to www-data and g+w was on wp-content.

Also, I need to fix the css bits for code.

About the Fish

lois_harrods.jpgI was born in the middle of a glass city and grew up looking out at the world through the portholes of my computer. Today I make websites for a living while yearning to live in the actual outdoors.

I love food, I love animals, I dance to music that has soul and I think that green and pink look amazing together.

My name is fish, and this is my epic.


These important recurring characters help me along on my various quests.

Mum is me mams. She is a powerful lady who is very intuitively wise. She often gives me advice that I foolishly ignore. She loves me beyond words.

Papa is me daddy. He is an enigma: at once he is the most dependable man, yet he is childlike in his passions and loves. He is the most generous, caring man on earth.

Grandma is me daddy’s mams. She is a fount of endless stories and useful knowledge. For better or for worse, she raised me into me.

M is me pal, me partner in crime. He takes care of me when my mind fucks off and makes sure that I am safe. He is my one love.

The GIR is me furry animal child. He is a teacher of many unexpected lessons.