måndag 28 mars 2016

Portal site to blogs by municipality-politicians

During a period of less than a year I was an active municipality-politician with a place in the strategy committee of the City Council. It was an interesting time and I learned a lot about the politics of the municipality that I really hadn't had a clue about before. It was also a really frustrating time, feeling that I never had enough time to study the matters brought up in the committee that I should have an opinion about to be able to know how to vote. The majority of the municipality-politicians have to do their politic work at their free time and that was also the case for me.

As a software developer I'm used to find bits and parts of solutions to tasks I have to solve by searching the web. But in municipality politics I don't think it's common that you can find things by googling them. I wanted to find history about some of the matters, well, when there existed a history it was hidden in the heads of the politicians that had been in the game for quite a while. They sure wanted to talk about the past, but it is really time consuming to learn by finding people that have the knowledge and then have a chat about it. There probably exists lots of information in the archives too, but I'm not sure it would be any faster to find it there.

On the municipality home page you can at least find summonses and protocols in pdf-format for a few years back. The problem was that the content of the pdf-files was images of texts instead of normal, searchable, copy-and-paste-able text.

After experiencing the breadth of the matters dealt with in the committee, I finally understood that to have any constructive influence on the politics I would have to devote much more time for it than I had done so far. I wasn't up for that.

Anyway, my time as a politician made a small impact on information findability. I wrote a motion about the need to have the content of the summonses and protocols files in text format instead of images of text. The motion was approved and after that it became possible to find content in the files created afterwards by just googling some keywords! (... but sadly it just worked for a few months and then it was images of text again, probably caused by bad rooting of the new routines. Sometimes I try to remind them, but I usually have a hard time describing that the text really is images...)

So why did I tell you all this? Well, probably as an introduction to why I coded and published the site Blogging Municipality-Politicians. I want to make information regarding municipality-politics to be easier to find, and one way to do it I thought, was to create a portal site that lists all living blogs that are written by municipality-politicians. I didn't do much research beforehand, so I'm not sure there are that many blogs to add to the list, really. But it's worth a try and I probably will learn something along the way! :)

UPDATE 2017-05-30

None of the people I've been in contact with about this has shown any interest at all in a site like this. So, I'll leave it abandoned.

tisdag 8 mars 2016

Investigation of the Scrum Master role

I had a discussion with a person about the scrum master role, regarding what tasks are included in the role. He said it mainly was facilitation of meetings and to unburden the team from administrative tasks like making sure required program licenses got bought. I had a feeling a scrum master has much more on his responsibility, but wasn't quite sure of what, so the discussion ended there.

This is a small investigation of what the scrum master role includes to hopefully make that feeling of uncertainty go away.

So, after skimming some, reading some and analyzing some of the content that the links goes to this is my summary of the responsibilities of the scrum master. There could absolutely be more points and on a deeper level, but this suits my needs at the moment.
  • Learn scrum, keep updated and teach the team.
  • Find and act on warning signs.
    Daily stand-ups are one possibility for noticing warning signs about something not rolling as it should.
    The burn-down chart another, is it too flat, why? Is there any impediments? Can they be solved? Is there a need to spread knowledge to avoid being too dependent on a single team member?
    Is the burn-down too steep? Why?
  • Keeping an eye on the process. Does it run smoothly, does the team follow the agreed process? For example, are stories worked on in correct prio order? Do team members help each other?
  • And yes, facilitation of meetings and identifying any infrastructure impediments like need of licenses or servers.
  • Help the Product Owner with the product backlog, like making sure stories are clear, of right size and assist if there are any doubts about prioritization.
  • Information radiation. Important information should be visible to all stakeholders. Increases the transparency.
UPDATE 2017-01-23
I´m on a new job. Another company just beginning its trip on the path to agility. I´ve been researching more and I think I´ve found the best scrum master description so far.

This is the first part of the description of the scrum master role in the scrum primer:

The ScrumMaster helps the product group learn and apply Scrum to achieve business value. The ScrumMaster does whatever is in their power to help the Team, Product Owner and organization be successful. The ScrumMaster is not the manager of the Team members, nor are they a project manager, team lead, or team representative. Instead, the ScrumMaster serves the Team; he or she helps to remove impediments, protects the Team from outside interference, and helps the Team to adopt modern development practices. He or she educates, coaches and guides the Product Owner, Team and the rest of the organization in the skillful use of Scrum. The ScrumMaster is a coach and teacher. The ScrumMaster makes sure everyone (including the Product Owner, and those in management) understands the principles and practices of Scrum, and they help lead the organization through the often difficult change required to achieve success with agile development. Since Scrum makes visible many impediments and threats to the Team’s and Product Owner’s effectiveness, it is important to have an engaged ScrumMaster working energetically to help resolve those issues, or the Team or Product Owner will find it difficult to succeed. There should be a dedicated full-time ScrumMaster, although a smaller Team might have a team member play this role (carrying a lighter load of regular work when they do so). Great ScrumMasters can come from any background or discipline: Engineering, Design, Testing, Product Management, Project Management, or Quality Management. 

söndag 6 mars 2016

The Joel Test: 12 Steps to Better Code

It's almost 16 years now since Joel Spolsky wrote a blog post about "The Joel Test". I'm currently reading Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software, a book that follows a failing project and that investigates why software projects can be so difficult to get done in time, on budget and with the right functionality. It references the Joel Test. Haven't had the time to analyze it much, but at a glance I like it and think it makes sense. I'm adding it to the blog so I don't lose it.

The Joel Test
  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

lördag 5 mars 2016

SignalR laboration: Reaction Time Game

About two years ago I decided to learn the basics of SignalR by doing a small laboration. The laboration became this Reaction Time Game where the players try to be the fastest to click a button after it has changed color from yellow to green. It has a high score list and a chat.

When playing on my smart phone, a Samsung S3, it is impossible to get an good honest reaction time registration. On the computer I get around 300 ms and on the phone around 800 ms, I'm not sure why this is the case. Maybe because of less CPU power, slower wifi or slow tap registration on the screen?

Of course @ordbajsarn had to hack it almost at once. The SignalR hub sends a signal to all clients when it's time for the button to change color. He changed the java script on his client to simulate a click on the button as soon as the color-change signal was received. This way he got really low reaction times registered on the server side. I guess I could guard against this by setting a limit on how many times in a row a client is allowed to have an unreasonable low reaction time. But the code is open source now and therefore a user can see whatever cheat guards are used. So, two questions from this laboration is: is it possible to have the source code open and still catch cheaters? How then?

Btw, the repository is here.

tisdag 1 mars 2016

Interactive Alchemy Walkthrough

Me and two of my colleagues were lunching. One of them talks about games he remembers.

In one of the games you could design a creature and then send it off to a world you couldn't see, to live with other creatures created by other players. Then you got to see statistics about the creature's life, how many other creatures it had encountered, how many it had eaten and so on. And finally the creature got eaten by one of the other creatures, The End.

In another similar game you got your creature by scanning the bar code of any product, the bar code coded the properties of the creature. And then you send it off to fight other creatures. The bar code of one product created an invincible creature with enormous powers! And that bar code could be scanned from a ... packet of noodles! :)

I told them that I've been thinking to and from about creating a similar game, where the players can design a creature or anything that lives or builds up a world. Not really fighting each other, more helping each other. And I'd also like genetic algorithms so that the players creations can mix and become new creations with new properties. So far I haven't had a sufficient good idea to start coding on anything.

Suddenly the other colleague whips out his smart phone and shows me a game he's been playing, Alchemy. You start with the four elements Earth, Wind, Fire and Water and then combine them to get new elements. Then you can use the new elements in new combinations. The game seemed so simple that I LOLed at it. But then I tried it myself and instantly got hooked!

It didn't take long though before I found out that this game really could eat my time and that it behind the scenes existed a rather simple tree with combination rules. I wanted to see that tree! I searched for cheats, and of course there existed multiple sites with complete solutions to all possible combinations. But all sites I found more or less plainly listed the combinations, sorted alphabetically, often with hyperlinks (like this and this). A great help and time saver for sure, but not as clear as I pictured it in my head.

So, I used the combination recipes from one of the sites and created an interactive walk-through instead, which made the inheritance tree visible. And I got rid of the want-it-out-of-my-head itch :)