Apr 04

Situational Leadership II crash course

I just finished a Situational Leadership II course. This was very inspiring and I want to share some of this information with you. I’ll start by giving a brief description of the different elements in SLII.

Development level

First thing to know is that all people, when learning a new skill, go through four development levels. I was pretty critical at first and you might be the same but hang on and you will see that the model in practise works well. Let’s have a look at the four development levels.

Development level 1

This is the beginner who has no experience or transferable knowledge (similar experience from a previous job situation). The beginner is optimistic and enthusiastic. There is drive and the beginner often can’t wait to get started. Think about when you found a new job and could not wait to get started.

In short: Your competence is low but your commitment is high.

Development level 2

Reality hits. You have new colleagues and you don’t know who the experts are or who to ask for advice. Your new job could be a promotion where you need new skills but no training is provided. So the journey begins to get the skills, find information, make connections with the right people etc. This period can be very frustrating if you’re not given the proper help and training. Your motivation can drop and if level 2 lasts too long you seriously consider if you made the right decision in changing jobs.

Continue reading »

Tagged with:
Feb 27

Panasonic,  f/3.3,   1/125 sec,   ISO=1600,   fl=19.2mm, 26 Feb 2011 Continue reading »

Feb 16

Why estimate with story points rather than time (days, ideal days, hours etc.)?

Estimating in real days does not integrate “the other” things you have to do like answering the phone, taking care of emails, meetings, interruptions etc. To compensate for this we include a focus factor normally around 60-80%. It is difficult to set and it needs updating. The focus factor is multiplied to the “ideal days” to compensate for the extra activities we do.

With story points we do not need to apply the focus factor. It is built into the system automatically. So how do we use story points?

  • Let the team choose the smallest story, from the product backlog. This story is assigned the value of 3 points.
  • Estimate the rest of the product backlog using the above story as reference: Take the next story. Let the team estimate how much bigger it is than the reference story. If it takes 4 times longer it gets 3 * 4 = 12 points. Do this for all stories.

Because we use a ref. story we gain another advantaged over estimating in ideal days. When you estimate in time, two people will not always give the same estimate simply because they have different experience levels. Using a ref. story eliminate most of the differences because if a junior developer is slower on the ref. story he is also likely to be slower on the other stories.

What about stories that cannot easily be estimated i.e. bugs?
It’s clear that some stories can be difficult even impossible to estimate i.e. bugs. We do need to estimate everything. Sometimes it helps to break stories down in smaller pieces but if you end up with a story the team cannot estimate you have two options:

  1. Give a qualified guess. This is better than nothing and it gives an indication to the PO.
  2. If all else fails you can set the estimation at the maximum amount of time the PO is willing to spend on the feature and go from there.

How do we convert story points to time?
After each sprint you count how the story points for the stories which have been finished completely. Unfinished stories do not count, not even partially and not even if the story is 99% completed. Unfinished work has no business value and is therefore not counted.
If your sprint is 1 week then you now know how many points the team can finish per week. This is the velocity of the team, story points per sprint. The velocity will stabilize after 2-4 sprints.

How do we select stories for the first sprint?
Since we do not know how many points the team can do in advance we have to guess. Ask the team how many they are Ok with. It’s better to select too few than too many. If the team finishes before time they can always grab the next story from the top of the PBL.

Conclusion:

Using story points has two significant advantages over ideal days:

  • We do not need to determine the focus factor for the team.
  • We get similar estimates from different people.

Story points simply give us better and more precise estimates.

Tagged with:
Jul 23

I downloaded Lightroom 3 trial version from Adobe. I wanted to include a folder but when it started importing the images it displayed 5 and the froze completely. I rebooted and tried all the usual thing but no success.

I then researced in the Internet and it seems a lot of people have this issue. I’m sure Adobe will come with a fix but in the mean time I have an easy work around.

  1. Select include folder and select your folder.
  2. By default LR will have the “All images” selected. Disable this option.
  3. Select only 3 images from the set.
  4. Click import. (Adobe will now import the 3 images.)
  5. Now select the folder and click “Syncronize”. LR will then import the rest of the images without any problems.

Have fun!!  :- )

Apr 12

Displaying images from the Datastore gave me a few headaches. But as with most things it’s quite easy when you know how to do it. The problem is really how to get from not knowing to knowing. I hope my explanation here will help you get there and please feel free to give comments as I’m new to GAE (Google Application Engine) and appreciate your input. Well, enough talk!

I assume you have basic knowledge about GAE and Python using templates. If not you should check out the Getting Started article.

In a nut shell

The trick is to make the image link in HTML to references the entity (or record) in Datastore using its (Datastore) Key. You must use a special path for the image that the python code will catch e.g.

img?entity_id={{ the entity key goes here }}

then in your Python code you will write a handler to take care of all calls to the img/ path. You do this by adding the handler: (‘/img’, GetImage) to the application variable. Basically this connects incoming requests for the img/ path to the the GetImage class you’re about to write. The GetImage class will look something like this:

class GetImage (webapp.RequestHandler):
def get(self):
product = db.get(self.request.get(“entity_id”))
if product.image:
self.response.headers['Content-Type'] = “image/png”
self.response.out.write(product.image)

This class will find the entity (record) take the content of the image field (our picture) and send it back. Continue reading »

Tagged with:
Apr 01


Canon 50D, EFs 10-22,  f/4.5,   2 sec,   ISO=100,   fl=20mm, 29 Oct 2009

Tagged with:
Mar 24

Mostly tips for my own use.

How to get the ID for an object in the Datastore:

id = objectname.key().id()

Get an object by it’s Datastore ID:

objectname = ModelName.get_by_id(longIntegerId)

Best prectices when developing with Google AppEngine:

http://code.google.com/intl/de-DE/appengine/articles/scaling/overview.html

Tagged with:
Feb 21

I took this photo in Naples April 2001. It’s one of those photos I wish I had in a higher res. It was taken with my Olympus UZ2100 and I must have been low on card memory because it wasn’t even shot in full resolution (which was not high for the UZ2100 anyway 1600×1200)


Olympus UZ2100,   f/2.8,   1/320 sec,   ISO=100,   fl=12mm, 30 April 2001

Tagged with:
Jan 28

Google has released a beta version of their new communication tool called Google Wave.

What is it?
A short description would be that it is discussion-forum style communication tool.

It’s quite simple to use. Once you have an account you can find friends (they must have a Google Wave account) and add them to your contact list.
Then you can start a wave – This is similar to a thread in a discussion forum. You decide which of your contacts participate in the specific wave. All can then post replies and reply to replies. You can reply using text and photos and in the future you will be able to upload files to a wave (the menus are there but grayed out at the moment.

Google wave has four panels:

  • Navigation with inbox, trash, search, folders etc.
  • Contacts where you … manage your contacts.
  • Wave list that shows what you choose in the navigation panel e.g. the inbox.
  • Wave panel that shows the wave you have selected.

You use tags to manage different waves and combine them in projects for example. You can also create folders and add waves here but it seems that folders are not shared between contacts whereas tags are.

Who is it for?
Obviously this tool can be used for many things, among friends, at work etc. I would say it could be a good tool for teams whose members work at different locations. It is kind of your own private discussion forum with file attachments.

At present I work with a small team where all members work from home. I’ll start testing Google Wave in this environment and report back when I have some experience.

Tagged with:
Jan 24

Ok, I have to share this one. After several hours of research (I’m new to WordPress) I found a simple solution on how to make a page-tab link to another location.

The problem
I have two main categories on my blog made in WordPress: Agile development and Photography. I had these two categories show in the panel on the right hand side. I wanted them to be more visible and the best way to do that would be to have them on the main tabs at the top. This is how you would normally make it on a website. I could not find a standard WordPress feature for this.

After some time I found out that the direct links

  • http://www.renepedersen.com/category/agile-development/
  • http://www.renepedersen.com/category/photography/

shows me excatly what I want (even though these URL folders does not exist on your server) so the remaning problem was to find out how to assign these links to the tabs once the pages were created.

The missing piece was the plugin “Page Links To”: http://txfx.net/wordpress-plugins/page-links-to/

When you install this plugin you can create a link on the empty page.

Step-by step:

  1. Install the plugin: http://txfx.net/wordpress-plugins/page-links-to/
  2. Make sure you have created the category you want displayed and copy the slug-name. The easiest way is to create the category and click the link in the category panel. The you can copy the URL directly from the browser.
  3. Create a new page in WordPress with the name you want on the page-tab.
  4. At the bottom of the page (in edit mode) you will see a panel “Page Links To”. Here you paste the URL and you are good to go.

If you have any problems please post in comments. If you have another solution please share it as well.



[bodytext]

Tagged with:
preload preload preload