Recently read Lean Software Development by Mary and Tom Poppendick. For software it is of limited use, most of the examples are from heavy industry such as the car industry in arguing that up front design doesn't work. This is a well known issue in software already. Probably the best maxim is the delay decision making.

But then it is competing with the short, sharp absolutes of Extreme Programming which are not as long winded and directly related to software engineering. As an agile book it is probably best for a manager who has come heavy industry and is now working in software and is trying to understand why all their projects are coming in late, poorly done, and incomplete.

For software engineers who read these types of books for fun; meh. We know it already and are aware that much of the problem stems from procedural issues that software engineering has no control over.

Weak book, would avoid it if you are a software engineer. -1.
I recently bought and read Coders At Work mainly for this reason; Jeff Atwood wrote this on his site:

I also realized Coders at Work can potentially serve as a job interview filter. If the next programmer you interview can't identify at least one of the programmers interviewed in Coders at Work and tell you roughly what they're famous for ... I'd say that's an immediate no-hire.

After reading the book I totally disagree with this. Most of the people in this book are old, very old. They started on PDP systems and wrote in Fortran. Most have peaked in writing C and have not gone any further. They also mainly write in emacs and use gdb as their debuggers.

They are largely academics and use functional languages. Those that are still working in modern industry are in hallowed positions where they aren't under the same project pressures that coding monkeys are. For instance one of those interviewed is at google but hasn't been checked out on a language and so can't commit code there.

This is so far removed from the modern engineering experience it is not funny. The day to day things I have to deal with are producing quality code while satisfying all the managerial demands for documentation, meetings, etc while juggling an arbitrary project deadline, demoralized resources because software is a system of perpetual crunch and leaves no light at the end of the tunnel.

The things I am really interested in is how to achieve quality code within these pressures. Because they are constant. Anything in a language and its inherent architecture that aids me in producing a quality product and easy to manage codebase and architecture within all the restrictions of a modern software shop is a bonus. I don't have the architectural freedom of academia, nor do I have the openness of timelines. I am constantly under pressure to produce things by an arbitrary date.

Engineering is never powerful enough to influence that date or make it real. Management always wants a date and often makes one up on their own. I can understand their need. They have to marshal resources other than engineering such as physical production, marketing, so forth. When engineering does give a date it is usually wrong anyway due to scope creep and how pitiful we are at estimating tasks with any degree of accuracy.

The best book I have read is Martin Fowler's Refactoring. The very next day I could apply some of those techniques and have higher quality code. In engineering terms it offered instant gratification. Refactoring is a pure engineering book. Coders At Work in comparison is an interview book about historical celebrities in the engineering field.

To me, in the past ten years or so the biggest improvements in productivity have been:

Not managing memory. I take this totally for granted in languages like Java, C# and Python.

Eclipse adding import statements with a click (please do that soon Visual Studio. Also add automated compile please ...)

Google. If I get a stack trace now, I know I am not alone, someone else on the internets has had the same problem and I google the stack trace explicitly and within minutes of browsing have the answer. When the internet was less stable and connections at businesses commonly went down, we would joke that we can't debug without an internet connection to a search engine.

Refactoring tools in eclipse. It used to be if you refactored something you would go through clean compile after clean compile. The tools make it a five second job.

I used to use emacs until about four years ago. Since eclipse matured to the level of Visual Studio it has become a fantastic tool. It is nice and stable and has a great array of tools and perspectives. It is a wonderful piece of software.

Many of the engineering advances of the last five years have gone straight into eclipse as well. For me it is not unusual to be flicking between perspectives in the one project doing multiple ant builds, junit tests, etc etc as a mini continuous integration before the code is checked in to the repository.

If someone didn't know the history of computing and the celebrities in the field then that is ok to me. For a constantly under-pressure code slinger working anonymously cube farm to an arbitrary project deadline date, it is more important to me that they have read 'Refactoring' and understand the tools to achieve it in eclipse. I wouldn't disqualify a candidate because they didn't know who created Javascript, or who is fighting over the current standards at ECMA and so forth.
Myth of the rational voter. What a completely unfun read. It is written poorly and consequently is difficult to absorb. Bad writing.
Just finished the Mythical Man Month. It is hopelessly out-dated and shows its age. There have been numerous other software management techniques created since the 1960s such as agile to deal with the problems of software and project delivery. These effectively make this book obsolete. However, Brooks law still remains true:

Adding manpower to a late software project makes it later.

By adding new members to the team, the productive members are removed from producing code that will complete features as the new members need to be trained and brought up to speed. Pair programming attempts to solve this issue - as well as keep people off twitter, facebook, etc.

The other insight from the book is that software developers, even with padding, assume an ideal day where they get to work on the project for eight hours every day uninterrupted. The reality is that external tasks interfere, such as production support, bugs, meetings, etc. So that only 50% of a developers time is actually spent on writing working software.

One of the developers I worked with complained that he had to work until 10pm every night as it was the only time he got write code. The rest of his day was spent in meetings.

The Mythical Man Month is a historical text that developers should read. But its value is greatly diminished through time and newer methods to deal with the issues inherent in getting working software out the door and into production.
Desmond Seward writes of the dislike the Londoners had for the Northerners when the Lancastrian army was marching south to London's gates:

Even at the best of times the Londoners did not care for northerners, who spoke a barely comprehensible version of English - Whethamstede says that when they talked, they sounded like the Hound of Hell barking.

It must be remembered that English only became a truly national language after the introduction of the English Bible during the next century.

Seward adds that the Londoners feared the Scots in the Lancastrian army more than the northerners. In the end they did not sack London even though it was thought they could. The King and Queen returned to York.
Just finished reading Boyd. It is a biography of John Boyd a pilot in the USAF from the 1950s who came up with the Energy Maneuverability Theory which looks at energy fighting as a sum of kinetic and potential energy.

Apparently his break through with it came while he was studying engineering and having difficulty understanding Thermodynamics. A fellow student he was studying with got exasperated and told Boyd to visualize thermodynamics in terms of aircraft. Boyd quickly matched it up and came up with an empirical measure to understand the previously seat of the pants understanding of energy fighting.

Energy fighting was understood prior to Boyd, for instance in World War I the Sopwith Camel pilots knew to go into a tight climbing turn so that an opposing aircraft would waste potential energy in making a tight turn and not be able to get a bead on them. For the same reason the Spad and SE5a pilots would dive on an opponent and refuse to turn fight. However it was Boyd who put into empirical terms such that aircraft could be compared in EM Charts with each other. At the time of the development of the F15 all the Soviet aircraft were superior to American ones, which showed in the Vietnam war. The response was making the F15 more agile and ultimately the F16 project which flew under the radar at the Pentagon to become a front line aircraft.

It is an interesting book of an interesting and important person in military aviation history. However, Boyd himself is an insufferable asshole who was protected by his brilliance.
David C (aka Smiley) : Others have noted the "insufferable asshole" nature of fighter pilots.
John Man's history of Attila is a narrative history. He weaves in his own adventures in tracking down locations and museum pieces, along with the discoveries of others such as resurrecting the steppe art of bow shooting while riding. Man focuses on separating myth from fact but it willing to tell the reader about the varying myths and some of the strange origins of Hun history that have come from the likes of Deguenes and Gibbons which have gone into cultural memory despite and absence or sources.

Deguenes for instance stated that the Huns came from the Xiongnu. There is a mix of archeological and historical evidence which suggests this is possible, but nothing that states categorically it is true. Man is only willing to state on current known facts that:

The Huns were probably of Turkish stock, probably spoke a Turkish language (which shared roots with Mongolian), were possibly a remnant of migrating Xiongnu, had no connection with China apart from some cultural overlap, and were certainly nothing to do with the Slavic and Germanic tribes into who they so rudely barged.

The mythology of the Huns is that they broke out over the Russian Steppes and straight into the Po Valley and Rome. Tribal migration us much slower than that and the Huns established themselves for an extend period in modern day Hungary before Attila extended the Hun Empire into the Balkans, Poland and Eastern Russia.

Like the Ostrogoths and Visigoths who became a massive refugee population that put pressure on a fragile Roman Empire when the Huns forced them across the Danube and into Thrace, the Huns were Romanized to an extent. Roman Armies used mixed mercenaries of Goths and Huns against the Gauls and Germanic tribes. Attila's Empire included armies of Gepid (Germanic), Visigoth, Slavic and Alan tribes. When a Roman envoy met Attila and recorded the event they met Attila and his wife lying on a couch and eating in the Roman style. Barbarian is an overly mis-used term.

The military weapon that made the Huns so dangerous was their bows which had the ears on the end. This allowed them to fire off three arrows in six seconds - which combined with their horseback skill made them like a mobile rapid fire force. As Man notes, there was nothing with this rate of fire until the English longbowmen - who were fixed, not mobile - and then later the repeating guns of the nineteenth century.

The Huns were not unbeatable either. As they expanded eastward and south, the followed the Tigris and drew the attention of the Persian Empire. The Huns were defeated and rolled back up Syria. Attila faced the same problem in the 450s when opposing Roman Armies that were able to ally with Visigoths. This is despite Attila having a strong mixed force of Hun cavalry, Gothic soldiers and engineering assets such as siege engines. The Huns, despite their great successes, were not able to beat the might of the major Empire of the time, the Western Roman Empire, the Byzantium Empire or the Persian Empire.

Attila's other problem after his defeats in the 450s was that he had made no innovations for a permanent Hun Empire. Ghengis Khan established a bureaucracy, laws and a strict succession path. When Attila died suddenly, drowning from blood pouring out of his mouth and nose, there was the infighting of the numerous pretenders. Within a decade Attila's son led a small group of arms to Gaul asking for land as they were starving. They were killed in battle when the Gauls refused to hand over their land.

Attila's Empire was decidely impermanent. The mythology of Attila was not however. He was caught up in the propaganda of the early Christian historians and written into the drama of good and evil of the end of days being played out on earth with an omnipotent and omnipresent god. Attila became the 'scourge of good' and barbarianism of Roman propaganda to its core. Ironically Attila appears in Hungarian foundation myths and is seen as the Hungarian Charlemagne. For a man that is not well recorded in written history and who spoke a language that is lost, he entered the mythology of history and has been permanent in it ever since.
I just finished Jane Mayer's The Dark Side. The sub title of the book is polemic, but basically it is a recent journalistic history of the internal legal battles within the White House and Pentagon over what was legally permissible during interrogation. The issue for the United States was that it had always abided by the Geneva Conventions, and the military had procedures and mechanisms to divide civilians out from soldiers, saboteurs and terrorists. This was blown away by Cheney's and Bush's 'get tough on terror' policies that enabled torture.

The legal mechanism for destroying all executive legal precedent for the Geneva Conventions was David Addingtons doctrinaire and political approach to the formerly independent OLC. The Office of Legal Counsel. It is a small legal department in the Executive which acts like a mini-supreme court in the Executive an writes memos and guidance on what is constitutionally and legally permissible for the Executive to do.

Like all the White House and Executive under the Bush Administration this independent office was politicized. John Yoo being the main perpetrator of giving Addington and Cheney exactly what they wanted in terms of legal advice. To make it worse, these legal memos were then made secret, so that the CIA and military had no real legal guidance over what they could do. Instead they were given legal advice such as 'take the gloves off' from the likes of Rumsfield, Tenet and Cheney.

To the FBI's credit under Mueller, they refused to torture. But the CIA appeared to be willing to do it and take it to abnormal lengths. Renditions were popular - they did exist during the Clinton Administration too - and suspects, real and imaginary, were sent to hellholes in Syria, Poland, Afghanistan and tortured.

The policy did not change despite the Supreme Court ruling against the legal policies of the Bush Administration. More independent lawyers such as Comey and Goldsmith fought against the secret and legal memos, but in each case where Cheney and Addington came up against people acting in conscience they replaced the person - usually when they resigned - with someone politically pliable. Gonzalez and Bradbury.

The Bush Administration proved it was not particularly good at governance in multiple areas, the war on terror was no exception. The Bush Administration at its highest levels, including the President, Vice President, Secretary of Defense, the head of the CIA, the Attorney General, etc all embraced the policies that the United States will torture suspects for information and will not have habeas corpus available to them. The latter a simple political right from the 13thC, the former supposedly banned from civil and moral society.

It is sad the United States willingly and openly stooped so low. Worse, it did it all for nothing. Torture did not work, there was no good information from it, and it made many people who should have been publicly prosecuted in a court of law for their crimes against humanity impossible to take before a court because they had been tortured. It was a catastrophic failure of judgment, morality and governance by the Bush Administration.
Currently reading Civilizations. It is a book with soporific word usage and flagrantly over the top sentences where the author comes off as over-impressed with himself. I would skip it if I was to make the decision again. What is a civilization is an interesting issue though. Several definitions were offered but one that stood out was:

In practice, this meant becoming progressively less violent, more scientific, and more welcome to outsiders.

It is a difficult question but the civilizations we think of as fitting the term all have a pax that go with them of one form or another. The largest of those is the Pax Romana, Pax Tartar and Pax Brittanica.

All three of those enabled massive increases in trade and consequent swapping of ideas, technologies, goods and culture. All three were exceptionally tolerant and liberal for their time as well.

However the peace of smaller and larger civilizations has come with conquest and the forcible amalgamation of legal and trading systems into the conquerors own.

Fernandez-Armesto decided to come at the problem of civilization and how to define it through ecological regions, exploring how the environment enabled, sustained and even destroyed civilizations. He comments:

A fashionable romantic myth identifies everything in early America with a form of ecological correctness and asserts that indigenous people were "at one with nature".

People everywhere adapt a variety of strategies in coping with the limitations their environments impose on them; none is inherently more virtuous or more innocent or more irrational than another; all have to manage, exploit or prey on other species to varying degrees.

The range of responses forms a gradient along an unbroken scale between ruthless adaptation of the environment to human needs, and cunning self-adaptation to the demands of the environment.

So we constantly come back to technology and the human application of it. Pretty much everything can be defined in technological terms. So the purity of humanity, the purity of ideology, the purity of politics, or the purity of culture; are all just applications of technology itself in order to allow society to continue to scale. Culture is just another human organizational technology designed to enable the humanity to scale its tribe to the increasing levels of political, social and technological advance.
Currently reading: Charlemagne by Derek Wilson. It was on ok book, kind of a densely written history of Charlemagne. It has three chapters at the end which go through a history of Europe and the occasional reference to Charlemagne in nationalistic and pan-European myth making. They should have been left out.

The Carolingian Empire was an Augustinian one where the competing regions were bound under the martial prowess of Charlemagne and the absolutism of Christianity. Wilson writes:

Anyone who offended against the King or the common good was sinning against God, reprisals under secular law were expressions of divine retribution.

As Wilson notes there was really no idea of secular law in Carolingian Europe. Frankish tradition included that a king divide up his lands between his sons which is probably why Charlemagne's empire did not last beyond his long reign when he died in his 70s.

I did not realise that Charlemagne's capital, for lack of a better word, was in Aachen. I spent time there many years ago and am kicking myself now for not knowing this then. Aachen lies on the German side of the Belgian-German border and not far from Northern France. Which is interesting as the Frankish ethnicity of the 7thC doesn't fit neatly within the modern French and German ideas of nationalism.
Cam Riley: South Sea Republic. Freedom, liberty, equity and an Australian Republic.