16 October 2015

The agile projects that contain no agile practices

Back in 2000 Joel wrote about the 12 steps to better code. A simple litmus tests that caused a great debate in the industry, not because these were hard things to do but because so many companies were doing poorly. A year or two later comes the initial push for test driven development and specification. JUnit is released shortly after and it equally stirs a change to the industry to this day. We have the signing of the agile manifesto in 2001 introducing the agile concepts to the wider market and in 1999 xtremeprogramming and its technical practices. Agile and the practices that underpin it are about 15 years old.

15 years later and most teams are claiming they do agile. Yet they don't actually do any of the practices from xtremeprogramming. They are doing scrum only they aren't doing sprint planning with their team, they have no business owner and they never even tried to use story points. Most of these organisations would score extremely poorly on the Joel 12 steps test as well, scoring maybe 2-4 on average. Most agile teams have never heard of any of the G Forces despite reading about about how Google, Facebook and Netflix build systems.

The agile manifesto in hindsight did some harm. It gave teams permission to customise these processes and reject the bits they didn't like before they were ready to make the choice. With too little knowledge they threw out all the important engineering practices and kept the iterations and tacked in a few pieces of scrum to hang it together. Then these same teams told us Agile sucks.

So while I read weekly how awful agile is and how its not enough to make a project successful (and its obviously not) we have to accept that the industry mostly has never tried it. A few companies genuinely have and expanded on the disciplines, but when it hit Joe the corporate programmer he really didn't do it. Most of the developers in these teams are actively hostile to these disciplines.

I wish a more solid plan had been formed where a team did everything from xtremeprogramming for at least 6 months so that they could learn how each practice impacted a project. Then with knowledge start to customise and expand it. Everyone would at least have learnt the disciplines and know how to write testable systems and how to refactor code. But we will never know that world because the manifesto gave everyone the right to customise the process and almost everyone used this to throw the agile practices out of their agile team, but they still call it agile.

9 February 2015

Making your headphones sound more natural and better

Inner fidelity is a great site and occasionally they publish some articles that are really interesting. Today they published an article about frequency response curves again. Go read it because its a wonderful summary of the design targets for headphones and the challenges of recording sound with a microphone and having it sound right through our head and ears. Instead of buying a new pair of headphones however I decided to see what I could do with my HD598s based on the information presented.

My sound card is a Soundblaster ZX and the drivers provide an EQ section. These changes are applied globally to all sound. Like most EQ I can't give it a detailed curve but it is at least a place to start with modifying the sound.

Inner fidelity provides the following human response target curve which is research in progress trying to build a better target curve.to make headphones sound like a pair of decent speakers in a room. The black line is the ideal curve for headphones whereas the green line is for speakers to make sound flat.

Given the target we need to know what the raw response of our headphones are. Thankfully my Sennheiser HD 598s have been reviewed by Inner Fidelity and they have the following curves. The grey curves are what we want as they are the raw data and not the adjusted curve.

Give all this information what can we do to improve the sound from the headphones to make them sound more natural? We can take the target response curve and the raw curve of the headphones and work out what the EQ is to drive the headphones closer to the Human target response curve.

We start by capturing the volumes in dB at the EQ  points of the Human target response curve for headphones. For example at 31 at the value is +4dB, at 16k its -10dB.  Then we do the same thing for the average grey line of the HD 598', so at 31 its -33dB, at 16k its -40dB. The problem with the headphone values is they are much quieter, and in this case the middle point is -30dB, so we need to add 30dB to zero the curve out.

We now have two curves, one being what the headphones actually produce and the other what the target is, all of which compensate for sound recorded on a microphone and the average human body response. To work out what the EQ changes necessary to bias our headphones to the HTR we need to take the HTR value and take away the headphones value. For example at 31hz its +4dB for the HTR and -3 measured for the headphones so it ends up +7dB. Do this for all the frequencies and you get a set of frequency changes.

EQ Frequency HD 598 Raw HD 598 + 30dB HTR Target EQ Change
31 -33 -3 4 7
62 -28 2 4 2
125 -28 2 1 -1
250 -30 0 1 1
500 -30 0 2 2
1000 -31 -1 4 5
2000 -30 0 9 9
4000 -20 10 11 1
8000 -30 0 4 4
16000 -40 -10 -10 0

So how does it sound? It sounds great. Its amazing what these change can do to improve the sound of a pair of the HD598s. It doesn't sound like a set of speakers in the room but its a lot closer than the flat EQ at achieving that. What is most interesting is this has improved positioning information for SBX pro in games and that is worth the effort. So while you can't use my settings you can generate your own with your headphones raw curve.

6 February 2015

Amazon has fixed its Prime Video 144hz bug

Last year I reported a bug with 120hz and 144hz playback of video. I am pleased to see its now been fixed. They didn't tell me when it happened I just tried it again and it worked. Nice to see they are fixing the bugs, not so good to see those impacted aren't receiving a notification when its done.