Geshi-based syntax highlighter for WordPress

This is my second test of a code syntax highlighter, in this case the Geshi-based syntax highlighter plugin.

Geshibased Syntax highlighterThis isn’t very successful either. The problem is with multiline cut and paste, certainly in Firefox. Doesn’t behave how you would hope. I’ve manually added the line returns to the CSS example, and that behaves fine, but the CSS still isn’t working.

XPDay 2006 – The Toyota Way of Managing – Pascal van Cauwenberge

What follows are my notes on Pascal van Cauwenberge‘s presentation at the London XP Day 2006, about The Toyota Way of Managing.

Why is it useful to us? Because it is reflected in many Agile processes and ideologies.

14 Management Principles, split into 4 categories:

  • Philosophy
  • Process
  • People and Partners
  • Problem-solving and Organizational Learning

Process

The right process will lead to the right results.

Flow

Work has to continuously flow
MUDA – The continuous quest to find waste
Forms of muda in flow – Waiting. Transportation. Movement. Defects.
The quicker you expose muda, the quicker you can solve those problems.
Agile mirrors this: Little stories, short iterations expose little problems, little issues quickly. Flow in production can increase cashflow. So does Agile, in allowing you to create sellable product quickly.

Pull

Each step delivers at the rate that the next step can take it. Every 55 seconds a Toyota is sold. So, a Toyota rolls off the production line every 55 seconds. This is their manufacturing rhythm.
Forms of muda in production – Overproduction. Inventory.
Solved by the Just in Time nature of their production, on a part and full product basis.
Agile mirrors this: Just enough requirements to make a working product in each iteration.

Heijunka

Work at a steady pace. Be the tortoise not the hare.
Forms of muda in Heijunka: Muri (Overburden)
Overburdening breaks both people and machines. Find the right pace.
Toyota finalises its production schedule one day ahead. The majority is known beforehand, but the final figures go in the day before. All production lines are flexible, capable of building all models.
Agile mirrors this: Small stories. Flexible teams.

Jidoka – Automation

Use of intelligent machines. Machines help in indicating problems.
Also, use of intelligence. Everyone is responsible for quality, anyone can stop production line in order to fix problems. Higher quality, less waste. Don’t carry on producing defective products, stop, fix, then carry on.
Agile mirrors this: Automated testing. Programmers taking responsibility.

Standardized Tasks

Tell people exactly how to do it. This is actually empowering. If you know exactly how you are expected to do your job, you can get on and do it, but also have more time to think about how to improve how you do the task.
Forms of muda in Standardized Tasks: Unused employee creativity.
Each production line makes around 1000 changes to how they do things each year.
Discipline is important. Hard and fast way of working. The automation does help to make this easier though.
Agile mirrors this: More input from the developers and the users throughout the project. Make just enough to start work quickly in a basic form. Both then suggest improvements as they work on or with the product.

Visual Control

Problems should be apparent to all, with information.

When the production line stops, different (soothing!) music plays depending on which part of the line has caused the stoppage. This then informs all the other sections as to how long it will be before it affects them. They will know if, say, it is two sections away from them, it will be 15 minutes before they stop getting the parts from the previous step. Also termed as Ardon indicators (from traditional coloured lamps).

Agile mirrors this: Indicators of success and failure in running automated tasks, green good, red bad. Also standups, the state of the stories give good indications of exactly where the project is up to, where something might be broken. If someone is having an issue with their story, you may have been planning on using their functionality in a days time. You can adapt to this, know the point at which your own production will now stop.

Reliable Technologies

New machines are a higher risk than used ones. They know how well a used machine works, what will break it, what it does. Time must be spent researching the new, but they must not be implemented until they are known and trusted.
“It is never a people problem, it is always a process problem”.

People and Partners

Grow Leaders

Leaders – Sensei. Someone working and leading by example. In Toyota, a leader is always teaching two people to succeed them when they leave.
Agile mirrors this: Well sort of, it does have the concept of coaching, but it doesn’t really take it to the same level of building into its design that a coach should aim to teach the person to replace them directly.

Develop Exceptional People

There is presently an issue in Toyota where they are growing fast than they can grow leaders.
They believe in continuous training, which is also verified and tested afterwards. Much of their training is on the job itself, to ensure that it is learnt and applied quickly. One of their methods is to sometimes give a new starter an impossible task, to teach them their first and most important lesson, that of asking for help when they need it.

Challenge, Respect, Help Partners

Partners working with Toyota must perform at the same level as Toyota. 70% of a Toyota car is built externally.
Obeta — Integrate Partners, teach them the ways. For instance for Just in Time to work, their partners must supply at the appropriate speed.
Agile mirrors this: These are helpful practices that fit well into an Agile way.

Problem Solving and Learning Organisations

Genchi Genbutsu

“If you want to know what is happening, go to where it is happening”. Manager should be on the shop floor, not in their office.
Look at the process directly, see it in action, see the problems for themselves.
Value Stream Mapping: Where are you adding value? Where do you create waste?

Hourensou – A process for staff:

  • Hou Kaku – Report
  • Ren Raku – Inform
  • Sou Dan – Consult

Agile mirrors this: Daily standup meeting, keeps the leader a lot closer to all of the project.

Nemawashi – Gently dig around the roots of a plant, in order to transplant it carefully

Decision by consensus. Can take time to achieve, but once you have everyone’s buy-in to a decision, you can implement it much more rapidly and effectively than if you had dictated a change. Resistance to change can slow implementation. Delay commitment until the right time (set-based design). Keep your options open as long as possible. Integrate often, to see if that changes your views of the available options you have yet to commit to.

Agile mirrors this: Iteration, Integration, planning meetings.

Hansei & Kaizen

Reflection on what happens to improve & continuous improvement of self.
With any failure, ask 5 whys to get to the root of the problem.
Allows you to arrive at Poka-Yoka – a state of being mistake-proof.
Agile mirrors this: To some extent, but within the stated boundaries of the methodologies, Hansei & Kaizen are greater that what is available through agile. Obviously, be pragmatic, use elements of them to improve your agile methodologies.

Philosophy

Long Term Philosophy (deliberate leaving of the first until last, to reflect its importance).

  • Value for customers/society/economy
  • Decide own fate
  • Accept responsibility for own conduct
  • Maintain and improve skills to add value

It takes 5-10 years for a new factory to be running The Toyota Way properly. It takes patience. Agile mirrors this: Agile can be implemented very quickly, as a set of practices, but it takes longer for it to be understood and accepted, and it is when this happens that it will run more effectively.

So what did I think?

Pascal talks on his blog about how he had found it hard to capture all the necessary detail about the Toyota Way into a 60 minute talk. I thought it was a fantastic introduction to an often-mentioned, but rarely explained methodology. I liked how well he linked it into Agile, and pointed out where there was similar fit, where there was room for improvement.

I think there is more scope for understanding the similarities that a production line run in this way can have to a well-running Agile team. For instance, if you used continuous build systems, and you hit a set of errors, should someone press the button to stop development, and have the team work to fix it? I don’t know, but I would like to see if it could be an effective method of working.

Overall, I think it would be very hard for anyone not to get something useful out of this talk, and many will have got a lot. Simon at his Agile in Action blog seems to share my enthusiasm for it.

XPDay 2006 – Programmers are from Mars, Customers are from Venus

These notes are taken from the above talk on 27th November 2006, given by Angela Martin, James Noble and Robert Biddle.

The bulk of the first half of the session was an extended planning game, with several elements of chaos thrown into the mix. The intention was to give us all a good idea what it was like to be a customer. From the reactions indicated by many, the feeling wasn’t exactly pleasurable.

The answer being proposed by Angela, James and Robert was to build a customer team, in some ways reflecting the XP development team.

The Customer Team

Geek Interpreter

Technical Liason

Political Advisor

Acceptance Tester

UI Designers – Programmers focus on the system model, UI designers focus on the user model to design the system image.

Technical Writers

Diplomat

Super Secretary – intimately familiar with the stories, writes them down and keeps them organised.

Negotiator – The on-site customer.

Most of these are meant to be roles, rather than individual positions. The ideal customer people should have people doing all of these roles.

The Customer Practices

The customers need to adopt practices to manage their relationships.

Programmer on-site – Get them to understand and respect their users, and to understand the context in which the software is used.

Customer Apprentice – Have a developer writing up their stories, acting as their secretary, attending meetings with users and stakeholders. Have them walk a mile in the customers shoes.

Programmer Holiday – Customers sometimes need to give the programmers a project holiday, perhaps give them an iteration where they focus on technical refactoring/debt.

Story Standards – Use a common template for every story. Remember that customers need reasonable time to get their stories right.

Show and Tell (Demo) – To the customer. Programmers can learn much from user/sponsor reactions to their software. Also gives useful material for sales and marketing to use.

Customer Pairing – Yep, just like with pair programming, it can be beneficial to have a pair of customers dealing with the developement team.

Customer Counselor – Provides professional support to the customers. Just as XP programmers should have a coach, customers need one too. Should be outside the project, and not a manager.

Look before you Leap – Do just enough analysis upfront to make decisions and set expectations. See also Agile, Lean methodologies for more of this. Maintain continuous analysis throughout.

Three-Month Calibration – After three months, projects usually realise that their eyes were bigger than their stomach. During this crisis period, productivity and morale can drop. Need to be upfront when this happens, and prepared for it, be ready to change scope and embrace change. Possibly similar to the lull you get after starting a new job, once you’ve had your training and got used to things, round about the same sort of time people often find themselves suffering doubts as they assess the job properly, before building up again to fulfil themselves in it.

So what did I think?

I think some people, including myself, were put off slightly by an over-long and somewhat chaotic exercise at the beginning (although as I said, the chaos was intentional). However the second half had a lot more meat in it, definitely worth looking at your relationships with your customers, and seeing if they measure up to this sort of ideal. Chances are you could be a long way short, and keeping some of these in mind could help.

Dean’s Source Code syntax highlighting plugin for WordPress V1.1

I’ve been asked to find a WordPress plugin for source-code highlighting in posts. My first research leads me to the belief that the area to look at are plugins which use the Generic Syntax Highlighter or GeSHi. This can handle over 200 different languages, so should be flexible enough for our needs.

So the first plugin I am looking at is Dean’s Source Code syntax highlighting plugin. What I intend to do is to install a few different plugins, activate them one at a time, input code in a few languages, and compare the results.

Code Formated by Deans Source Code Syntax Plugin

These are just a few examples to show how well it formats. What I didn’t count on was that if I de-activate the plugin, the formatting goes immediately. So the above is an image of the generated code.

Having a second go here at multiline code:

Another go at multiline

Still not happy. My basic issue here isn’t with writing code from scratch, that works fine. It is cutting and pasting a section of code in Firefox so that it will keep the formatting and parse properly through the highlighter. Just can’t get it to work. Putting it on hold for now.

Phantasy Star Offline

So I’m now about 4.5 hours into Phantasy Star Universe. Having received my pre-order copy a couple of days early, I’ve been playing the offline mode, as the servers haven’t been turned on yet. The offline Story mode is a fully fledged RPG, in the mode of a Final Fantasy, right down to having far too many cutscenes in the first hour of play.

I have been enjoying it immensely. At first the world is slightly bewildering, but once you take control of your character, it plays and feels like Phantasy Star Online of old, but with much better graphics, and a more organic feel that makes it feel less like you are playing in mainly square rooms. The fighting, whilst still based on the same system, does feel more fluid, and the trademark targeting mechanism of PSO has gone, replaced by, well, pointing at the creature you want to hit, and fighting them. Works fine.

I think my main gripe so far has been the on-screen display. Even though the game isn’t optimised for HD, the menus are tiny. Whereas in PSO you had beautiful clear graphics that told you exactly what you had and were using, these you really have to squint at. I appreciate it may partly be my old age, but they are very small. I reckon they could have done with offering a large-print option for the older gamer. Reminds me, I probably should look into getting my eyes tested soon.

Once the servers have gone live, I’ll be wanting to play there instead, but I will carry on with the offline as well, as it is where all the game achievements are apparently. Will probably report back on the online version soon.

In other news, we’ve got tickets for Bond tomorrow, and hopefully mrsfb will be over her cold for that. Do a few chores and a bit of shopping this weekend, then Sunday afternoon I’m off to London for a couple of days for XP day (now two days).

Hurtling towards the weekend

A quiet one coming up, probably a good thing as mrsfb isn’t too well today. Our options at the moment include going to see Casino Royale, or a long walk in the countryside. Given how cold it is, Bond is looking mighty appealling, but the long walk is the moral healthy choice. We could do both, but that would be insane, surely.

In other news, my copy of Phantasy Star Universe is in the post to me as we speak, rushing towards me under the power of second class postage. If I knew they were going to dispatch it so early, I would have shelled out for first class. Can’t wait. It isn’t going to be a stunning 10/10 game, but it is the story, the world that I have played in so much retold in a different manner. There will be a lot to learn from the looks of it, I may have to read up a bit tonight. After I’ve done a couple more chapters of Head First Java that is, got to carry on racing through that as well.

Pressing on with self-learning of Java, as I could do with knowing it all yesterday. Lot to get my head around, but had a breakthrough yesterday in that I almost added a new method to some code I am working with. It made sense, but didn’t quite work, however the fact that I understood about 90% of what I needed to do was a good start. Will figure out that remaining 10% in the next few days I hope. Will try and get through a big chunk of the aforementioned book this weekend I reckon. Once I’ve done that, I’m going to read up on using Eclipse in more depth, really get to grips with it, as it really is the way forwards on a lot of fronts. I’m perhaps a bit unusual in that I work in several different languages & technologies at once, as I look after several different projects. And the fact that Eclipse can handle the lot of them in one place and structure is a lifesaver for me. As I add in a new language like Java, most of the interface works in the same way I am used to. Oh, and I need to learn about Ant and builds as well I suspect. More reading then.

Google Sitemap Generator for WordPress

I’ve been meaning for a while to submit the sitemaps for my domains to Google’s Webmaster Central site. Having a sitemap for the googlebot to read improves how your site is crawled, and means only the pages you want are submitted. It has recently also become a format recognised by Google, Yahoo and Microsoft, which has resulted in the sitemaps.org site.

Anyway, I looked into how to generate a sitemap, and to be honest it is a bit of a pain for WordPress users. It seemed like the best way to do it would be to just submit an RSS feed. However, the standard location for your feed isn’t liked by Google, and I didn’t want to move mine. The other methods seemed like too much work as well. So I looked for a WordPress-based solution, and found Arne Brachold’s Google Sitemap Generator for WordPress plugin.

Very easy to setup and run, all the instructions are there, and only took a few minutes to set up, run, and submit to Google. Perfect tool for the job. It will even ping Google about any changes to your site structure. I’m now getting to read through what Google makes of my site, and for starters get on with fixing a few broken links I didn’t know about.

Lazy way to install Perl modules in Ubuntu 6.10

I’m starting to find my way around my new install of Ubuntu. This morning I found I had loads of errors in my Perl scripts stored in Eclipse. A quick check revealed that it was due to not having certain Perl modules installed on my machine. So I would have to install them for suitable error checking. A few minutes on Google got me started, but having worked through a few permutations of setup, I happened upon the following. Note, this may well not be suitable for all, and certainly is the lazy way of doing things.

From a command line:

sudo cpan

You will then be asked if you want to manually config cpan. Say no, take the risk and see if it will figure it all out for you. Did for me. Then to install a module, I did a quick search on cpan’s website to find the correct name of each module (they are case-sensitive). Along the way I installed the cpan search extension for Firefox, which makes it even easier. To install Date::Manip, all you need to type at the command line in cpan is:

install Date::Manip

If your configuration is correct, it will nip off and install it all for you. Very nice.

GTD – Keeping your inbox cleared

Great article over at downloadsquad.com on keeping your inbox cleared and up to date. I’m trying to do this on both my work and personal mail, and at the moment it is mainly working. I had already employed most of the tactics myself, thanks to reading Getting Things Done (GTD), but it is a great refresher, and particularly if like me you are using gmail.

I think the only thing I would add, is that in the past I have been a sucker for mailing lists, and find I still get several I just file or delete. I would suggest turning off the rules for these for a week or so, look at each one that comes in quickly, and if you don’t need it any more, take the opportunity to unsubscribe. It helps with the cleaning up your act process.

Five simple rules for keeping an empty inbox

High above Oxford

For some time I have been meaning to go up Carfax Tower in Oxford to take some photographs. It is an old clock tower right in the middle of Oxford, and is one of the key tourist attractions I have never got around to doing. So I thought I would take advantage of the visit of my brother-in-law Andy to do it. Now, I’m not great with heights, but I was under the impression it would be a little walk up some stairs, have a huge platform to stand on, take a few snaps, job done. Wrong.

First of all you have to climb up three very narrow spiral staircases. A long way. That was pretty daunting to begin with. Then you actually go out there, and it is a small square with a tin roof in the middle, and a narrow walkway less than the width of a person around it. And it was windy. And very high up.

I didn’t manage to take a single picture without letting go of the handrail. It was incredibly dizzying, and totally not my thing. I shall do it once more in my life when I get a new camera, and then never do it again. Even if it does have the following cheese-related message up there: