Recent blog entries for broonie

Human factors

An issue which I always find depressing but sadly unsurprising in discussions of process with software is the frequent disregard for human elements; indeed often the goal people have in creating process is to try to control and eliminate human elements. Little thought is given to what is going to motivate people to do what’s asked and if they are going to follow it at all, or in the spirit it was intended.

One example I’ve seen several times is the idea that some engineers work on irrelevant things and that this can be fixed by requiring every commit to be tied to the project plan or a bug so off project work is obvious. This isn’t really attacking the problem so much as putting a roadblock in place to try to avert it; the real problem is normally people not communicating about what they’re doing and what’s important but those problems are really hard to address. Sadly what tends to happen is that people work around the roadblock and cause some collateral damage; for example devaluing the bug tracker by referencing irrelevant bugs or creating meaningless bugs solely to allow commits, while continuing to behave like they did originally. This is often worse than the original situation.

This sort of issue is one of the things I appreciate most about working on Linux – there’s quite a bit of process but because of the way it has been evolved the incentives are usually right to make sure they are followed in the spirit in which they were intended. For example the patch submission process is essentially just best practices for making sure changes go to people who care in a form which makes it easy for them to work with it; there is a bunch of tooling around it which built on those practices (and in turn influenced the practices) but it all comes back to that basic thing of getting attention for changes and making them easy to work with. As a result people mostly do the right thing (or close enough) so everything runs smoothly. The trick is to remember to standardize and write things down when it’s needed – notice the good practice and spread its adoption.

The key difference here seems to be if process is viewed as something to solve problems for people or if it is viewed as a way to solve problems with people. If the problem is with the people then the view starts off negative and it’s perhaps unsurprising that there is little consideration of how they will react. Sometimes it’s not so much that a problem is seen with people as that the people doing don’t have any real interest in the process (write only timesheets often bear no relation to reality for example) but there is an assumption that they are going to just do what they’re asked (but instead they for example don’t fill in their time sheets or don’t provide accurate information). The end result is the same, their needs don’t get considered and their actions end up being counterproductive.

Starting to avoid these problems is fairly straightforward – take a step back and consider why the people expected to carry out the process are going to want to do so. How does it help them? How will they see it helping others? Generally what’s in it for them? If these are difficult questions to answer then there may be a problem – it is likely people will ignore the process or do it badly without a lot of active enforcement, but perhaps that’s OK for the situation. Beware of using metrics to provide incentives, metrics are gameable and that game can cause problems without care.

But do think about people; making software is all about people.

Syndicated 2014-02-16 03:03:15 from Technicalities

New job

A few months ago I started a new job at Linaro as the technical lead for the Linaro Stable Kernel – I just posted a brief thing what I’m up to now over on the Linaro blog.

Syndicated 2013-08-29 22:58:32 from Technicalities

ASoC updates in 3.6

Linux v3.6 was another quiet release for ASoC with just a single notable framework feature being merged:

  • Added the ability to add and remove DAPM paths dynamically, mostly for reparenting on clock changes.
  • New machine drivers for Marvell Brownstone, ST-Ericsson Ux500 and ttc-dkp.
  • New CPU drivers for Blackfin BF6xx SPORTs in I2S mode, Marvell MMP, Synopsis Designware I2S controllers, SPEAr DMA, S/PDIF
  • New CODEC drivers for Dialog DA732x, ST STA529, ST-Ericsson AB8500, TI Isabelle Wolfson Microelectronics WM5102

Syndicated 2012-10-31 12:25:37 from Technicalities

UK landline non-security (and Orange clue)

Yesterday when I got in from work I got my second letter in as many months through from BT saying that my account was being closed as my landline was being transferred to another provider. This was the first I’d heard of this and it causes a cancellation charge so I called to complain; the first time I did this they said they couldn’t tell me anything about who the line had been transferred to. They did tell me that there was no equivalent of PAC or MAC for landlines and that the only thing stopping this happening is the two week delay in implementing.

This time BT felt able to tell me that the line had been transferred to Orange so I phoned Orange. Orange told me that the phone number had indeed been transferred to them in the name of someone else. They also said that they had no intention of attempting to carry out any authentication that lines being transferred to them are owned by the person they’re being transferred to – I explicitly asked them if anyone could just do this for any phone number and they confirmed that this is indeed the case.

BT claim they can’t block transfers for regulatory reasons; Orange claim this is possible and that I should just do that. I’ve asked Orange to put a note on the account (which was the best they claimed they could do) and complained to OFCOM (who won’t really talk to me without a formal escalation from the phone providers) but none of this really helps given the gaping security holes in the system. You really should need more information than just the phone number itself to transfer a number.

On the slightly bright side I still appear to have phone service; presumably currently paid for by whoever is initiating the transfers.

Syndicated 2012-10-31 12:24:20 from Technicalities

regulator updates in 3.6

Linux 3.6, which was released earlier today, saw continuing improvements in the factoring out of common code in the API – lots of new features making drivers smaller and easier to write!

  • Initial framework support for GPIO controlled enable signals, saving a bunch of code in drivers.
  • Move fixed regulator enable time and voltage mapping table specifications to data.
  • Used some of the recent framework enhancements to make voltage change notifications more useful, passing the voltage in as an argument to the notification.
  • New drivers for Maxim MAX77686, TI LP872x and LP8788, Samsung S2MPS11, Wolfson Arizona microphone supplies and LDOs

Syndicated 2012-10-01 12:54:11 from Technicalities

regmap updates in 3.6

Linux 3.6 was a very quiet release for regmap:

  • Support for buses and devices specifying their endianness, providing some performance improvements for MMIO devices.
  • Support for wake IRQs in regmap-irq.

Syndicated 2012-10-01 12:50:58 from Technicalities

Speaking at ELC-E: “regmap: The Power of Subsystems and Abstractions”

I will be speaking at ELC-E in Barcelona this year, with a talk entitled regmap: The Power of Subsystems and Abstractions. I look forward to seeing some of you at the conference, perhaps even in the audience!

Syndicated 2012-09-20 21:23:26 from Technicalities

ASoC updates in 3.5

The big news for ASoC in 3.5 is the first two changes here which are pretty major features for the subsystem:

  • Dynamic PCM support, allowing support for SoCs with internal routing through components with tight sequencing and formatting constraints within their internal paths or where there are multiple components connected with CPU managed DMA controllers inside the SoC.
  • Greatly improved support for direct digital links between off-SoC devices, providing a much simpler way of connecting things like digital basebands to CODECs.
  • Much more fine grained and robust locking, cleaning up some of the confusion that crept in with multi-component.
  • CPU support for nVidia Tegra 30 I2S and audio hub controllers and ST-Ericsson MSP I2S controllers
  • New CODEC drivers for Cirrus CS42L52, Freescale MC13783, LAPIS Semiconductor ML26124 and Texas Instruments LM49453.

Syndicated 2012-07-25 12:00:25 from Technicalities

Regulator updates in 3.5

There’s been a bit of an increase in the amount of core work in version 3.5, regmap has enabled a lot of code to be factored out of drivers and into the core so drivers only need to provide data. This makes things a lot simpler to implement and review, it’s hoped that it will also allow some framework enhancements for bulk operations in future.

  • Helpers in the core for regulators using regmap, providing generic implementations of the enable and voltage selection operations which just need data to describe them in the drivers.
  • Split out voltage mapping and voltage setting, allowing many more drivers to take advantage of the infrastructure for selectors.
  • Support for Ricoh RC5T583, TI TPS62362, TI TPS62363, TI TPS65913, TI TWL6035, TI TWL6037

Syndicated 2012-07-22 19:03:33 from Technicalities

regmap updates in 3.5

A surprisingly large series of updates for regmap this time, mostly due to all the work Stephen Warren has done to add support for MMIO buses. This wasn’t really the target for the framework but it turns out that there’s a reasonable number of cases where it’s very helpful to use the register cache support to allow the register map to remain available while the device is suspended.

  • A MMIO bus implementation, contributed by Stephen Warren. Currently this is limited to 32 bit systems and native endian registers.
  • Support for naming register maps, mainly intended for MMIO devices with multiple register banks. This was also contributed by Stephen Warren.
  • Support for register striding, again contributed by Stephen Warren and mainly intended for use with MMIO as typically the registers will be a fixed size but byte addressed.
  • IRQ domain support for the generic regmap-irq controller, allowing devices to dynamically allocate interrupt ranges and support device tree bindings.
  • A function dev_get_regmap() which allows frameworks using regmap to obtain the regmap for a device from the struct device, making life a little simpler for them.
  • Updates to regmap-irq to support more chips (contributed by Graeme Gregory) and to use irqdomains.
  • Support for devices with 24 bit register addresses.

Syndicated 2012-07-22 18:37:36 from Technicalities

119 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!