Monday, 20 April 2015

Book review: Code Complete by Steve McConnell

Code Complete, 2nd Edition. Redmond, Wa.: Microsoft Press, 2004. 960 pages. Retail Price $49.99. ISBN:, or Amazon. Wiki says "Code Complete has received outstanding reviews, being widely regarded as one of the leading must-reads for software developers" but what does wiki know?

I brought this home for the weekend. But I got to page 371 and then stopped, fairly bored. There's not enough here that's new to me. Perhaps that's good. I did have some nice time in the garden in the sunshine beneath the young quince shoots before I realised it was dull.

It feels far too long though. Perhaps it might be useful as a reference book; but it feels like bloatware. There's just too much stuffed in here. Too much is dull or obvious; the few interesting things are deeply buried in the dross.

To do: review something I did like. Software craftmanship. I'd have to read it again, of course.

Friday, 3 April 2015

Ermine usury

Unprompted, E told me that she had been lending at interest at school: her rate was something like 10p on a 70p loan, due the next day. I was impressed with her enterprise, and we briefly discussed usury and its negative connotations, and the difference between 5% annual interest on a 10k loan and 300% interest on a pay day loan. Unfortunately, the dead hand of authority has squashed E's enterprise: Miss C has forbidden lending-at-interest which, in an interesting echo of the payday lending stuff, means she'll no longer be lending to the boys. Also interestingly, she had no problems with being repaid; she only lent to people who were trustworthy.

Sunday, 22 March 2015

Book review: Dune

Dune is a 1965 epic science fiction novel by Frank Herbert. It won the Hugo Award in 1966, and the inaugural Nebula Award for Best Novel. Dune is the world's best-selling science fiction novel and is the start of the Dune saga says wiki. And that all seems fair enough. Read more there.

The cover I'm showing you here is the one I remember from my youth, not the one I've just read. Its notable for the rather implausible "ornithopter" but really, what was the artist to make of Frank Herbert's concept?

As to the book, I remember it making a great impression on me when young. Re-reading it now (I don't think I've re-read it since) its fairly clear that it strives for impressiveness, which weakens it from an adult perspective (minor example-of-a-type: often, people say "like wow, he just did that, to convince us-the-reader that the thing just done was like mega-impressive). Various aspects of the "economics" (the CHOAM stuff, say) which seemed rather well crafted to my youthful self now look crude. His interest in ecology fares much better - the sum total doesn't quite work, but much of the detail is believable, and the aura of it well done. and the story overall is good, if you gloss over the defects.

Saturday, 21 March 2015

What would the Tory party say?

I thought, as an experiment, I'd try answering as though I was a Conservative spokesman; or David Cameron making a speech, or writing a manifesto. [Updated: but actually its really hard to do that. Too many of the questions are leading. The sort of questions you expect stupid interviewers to ask. Take for example "No one chooses his or her country of birth, so it's foolish to be proud of it." The Tory answer is clearly "I'm proud of Britain!" But the prefix makes that sound foolish. So in the real world, in interview, the correctly briefed candidate waffles, or avoids the question. In a manifesto or speech, the question never comes up in this form.]

Just a few propositions to start with, concerning — no less — how you see the country and the world.

1. If economic globalisation is inevitable, it should primarily serve humanity rather than the interests of trans-national corporations.

A: agree. Because: these people are pols; the "correct" answer is clearly "serve humanity". Everyone hates evil multinationals.

2. I'd always support my country, whether it was right or wrong.

A: agree. Because: they are Tories.

3. No one chooses his or her country of birth, so it's foolish to be proud of it.

A: disagree. Tories are proud of Britain.

4. Our race has many superior qualities, compared with other races.

A: disagree. Because: meh, crap question, but these are pols.

5. The enemy of my enemy is my friend.

A: agree. Because: meh, hard one to guess on their behalf.

6. Military action that defies international law is sometimes justified.

A: disagree. Because: they're Tories, they believe in Law; if they want to defy International law theyll do so by pretending it is other than it is.

7. There is now a worrying fusion of information and entertainment.

A: agree. Because: its the kind of thing the Daily Mail loves.

Well, that's a sample of detail. I got bored though so the rest is briefer.

Now, the economy. We're talking attitudes here, not the FTSE index.

People are ultimately divided more by class than by nationality: agree.
Controlling inflation is more important than controlling unemployment: agree.
Because corporations cannot be trusted to voluntarily protect the environment, they require regulation: agree.
"from each according to his ability, to each according to his need" is a fundamentally good idea: strong disagree.
It's a sad reflection on our society that something as basic as drinking water is now a bottled, branded consumer product: disagree.
Land shouldn't be a commodity to be bought and sold: strongly disagree.
It is regrettable that many personal fortunes are made by people who simply manipulate money and contribute nothing to their society: disagree.
Protectionism is sometimes necessary in trade: agree.
The only social responsibility of a company should be to deliver a profit to its shareholders: disagree.
The rich are too highly taxed: agree.
Those with the ability to pay should have the right to higher standards of medical care : disagree.
Governments should penalise businesses that mislead the public: agree.
A genuine free market requires restrictions on the ability of predator multinationals to create monopolies: agree.
The freer the market, the freer the people: agree.

After that I got too bored to copy them all down, so you'll just have to accept that I did my best to guess as fairly as I could. For example, what to do with "You cannot be moral without being religious". I think that many religious people believe this, and I suspect many Tories believe it, but I don't think I can imagine them coming out and saying it. Meh, in the end I said "agree" for them.

And the result was...

Absolute dead center. Well, close enough. L/R: 0.25. A/L: 0.15.

Saturday, 7 March 2015

Book review: Redshirts

Redshirts is a science fiction novel by John Scalzi. Its OK. I enjoyed it, though I didn't wade through all the endless codas. But there are really only two bits to it, and on reflection I think it would have been better at short story or novella length. There's not really enough substance. There are a variety of cute bits ("who are you, who is so side i the ways of X") for you to congratulate yourself upon your getting-it-ness. But apart from that, it is in a curious way reminiscent of the flimsy sets of the original Star Trek.

Don't read on if you ever want to read it. Wiki says 
Ensign Andrew Dahl, newly assigned to the Intrepid, flagship of the Universal Union, works in the xenobiology lab. However, upon receiving the chance to work with famed senior officers of the ship on "Away Missions" to dangerous planets, Dahl realizes that as a low-ranking crew member, he is very likely to be killed while on one of these missions. He and the other new ensigns notice something weird about life aboard the Intrepid — on any away mission, at least one crew member dies. And each away mission seems to follow a bizarre set of rules. The crew of the Intrepid has become very superstitious and fearful about getting involved in the bridge crew's missions. The ensigns get to know Lt. Kerensky, who is Russian, lecherous and constantly getting infected with diseases, beaten within an inch of life, or otherwise hurt — only to be totally fine a few days later. Lt. Kerensky winds up dating Ensign Duvall, one of the new ensigns. After meeting with a lost crewmember, the ensigns learn that they are characters in a TV show.
Somewhat to my surprise, it also says The book won the 2013 Hugo Award for Best Novel and Locus Award for Best Science Fiction Novel.

Saturday, 14 February 2015

AES as a test of software engineering

I've recently been using an AES CCM program that someone wrote at work a while back - apparently downloading one of the many public implementations was a bad idea, for some mysterious reason. It works. I'm using it to compare to hardware, and since the two are completely independent versions, if they agree its virtually certain that the hardware is correct. So far so spiffy.

I've only briefly looked at the internals of the program but I have read the wiki page, and its fairly clear that, whilst not exactly rocket science, getting the code right is far from trivial. And I know this in the other direction from personal experience, as I struggled with getting the encodes to match whilst guessing what byte-ordering the hardware used; as is deliberately the nature of this stuff, if you get even a tiny bit wrong the whole output is junk.

But the interesting bit, to me, is that I regarded the guy who wrote the program as close to incompetent. Certainly I wouldn't have trusted him to do anything major on his own, and I watched him struggle on a variety of tasks making simple mistakes that someone else had to come in and undo. And this throws up the difference between software engineering and programming. I'm a software engineer, at least in my own mind and in my job contract. The amount of time I spend actually writing computer code is a small fraction of my time. Its clear you can be a reasonably decent programmer - at least in terms of making programmes that produce the correct output - whilst being rather poor at the overall software engineering task (though even there I should qualify that somewhat. If you poke into the internals of the code its a mess, sufficiently so that I didn't stay in there for very long. And in terms of design, it doesn't really produce the output you want it to, exactly, nor does it allow you to input data in the form you'd want to, and the commenting is poor, and the documentation also. So much so that a simple perl script to pre-format the input and play with the output massively improved my productivity).

So much for the example. Onto the generics. Software engineering - collaborative working on a large codebase years old - is about far more than just making the bit of code you've got now, to work, just on its own terms. The code has to fit into the overall structure without bending what's already there, without breaking the poorly documented assumptions, permitting future maintenance and extension, to be readable, to run fast enough and not use too much memory; and more. And it has to do what it supposed to do, which - a familiar plaint - is frequently not quite what you've been told its supposed to do.

This makes recruiting people hard. Being able to write coherent C is a basic requirement, but its not sufficient. Unfortunately, its the only bit that really possible to hard-test in the limited time available. You can talk about all the rest, but its hard to judge bluster from real experience. In my experience.

Wednesday, 11 February 2015

Notes on The Composition of Kepler's Astronomia Nova by James R. Voelkel

I bought a copy of this, I forget who recommended it, most likely The Renaissance Mathematicus.

These are some notes, not a finished post, and will be updated I hope. Page numbers are from the hardcover edition.

The book, as a whole, is themed around Astronomia Nova being an exposition, rather than being the apparently-historical presentation of the research as it happened, that it appears to be. And the reason for this is that Kepler knew he would not be believed, so had to drag people through carefully contrived false leads, in order that they appreciate the truth when revealed.

p 56. We're still on the Mysterium Cosmographicum. The bollocks about the 5 solids is, errm, bollocks, but forget that. Kepler is thinking about the planets moving more slowly when further away from the Sun, and about the motive force that the sun provides (he has no idea of inertia, of course, so he's still thinking in terms of the Sun making them rotate. Since he has no real physics (he doesn't even really appear to distinguish physics and metaphysics very carefully). He's still rather stuck on the idea of celestial spheres (or is he? Probably, but on p 58 there's a quote where he notices that even without the spheres it all works; Voelkel's text claims that K claims that the spheres are non-existent, but that's not clear to me), but he *has* noticed that the same idea - slower further from the sun - that applies to the speeds of the various planets can apply also to the motion of individual planets. As far as I can see he doesn't try to quantify this, though. He's tried to quantify it for the relation between the size of the orbit and the period (but appears to have got his maths wrong, insofar as I understand it, ending up with *2 instead of ^2; p 109 notes this). But not within an orbit.

Its so hard to write this stuff without adding my own words; without misrepresenting by using words that mean different things; and of course I'm not familiar with their use of words either.

p 64. Letters to Haffenrefer, concerning the physical reality of the subject, and/or whether K could keep his chapter attempting to either reconciling Holy Writ with Copernicus, or showing that the Bible could not refute C. Showing that in 1598 calling heliocentrism a mathematical thing rather than a physical reality was the approved subterfuge. With H saying that good men would be incensed if K did otherwise. The trouble is that, with his wacky solids, K really did think he had managed to make some pure-maths stuff say something about physical reality; he thought he had done the a-priori stuff that previously people had thought impossible, and since this was his major claim to fame, he didn't want to drop it. p 65: H rather suggests that there has been more strife over astronomy within the church than is tolerable; I would take this as a suggestion that things really needed to be toned down, and certain things not talked about, regardless of who was right, for the greater good.

p 86: T saying that the orbits must be compounded of circles, because it would be inconvenient otherwise. WTF? p 87: T (and K, unbeknownst to T) both agree that the celestial spheres are immaterial (and therefore don't exist? Less clear. Aether-like, perhaps).

[Long pause.]

Round about p 138 we're back on Kepler and the shape of orbits. Kepler has come to a version of the "area law" and has decided that circular orbits won't work; he needs the planet "closer" away from perigee / apogee, and hence the orbit is "oval" - but so far, this is qualitative. He's using the word "physics", but perhaps not in the sense we would. The sun is the source of motion - somehow - but the planet has its own spirit moving it closer and further; and since orbital speed depends on distance from the sun, this speeds and slows it. However, the then drifts off to an egg-shaped oval - broader at apogee, for whatever reason.

P 139 is interesting. The prevailing epicycles stuff essentially had the planet orbiting an empty point, not the sun. If you're thinking "physics" rather than geometry, this is incomprehensible. And to be fair to K, though his physics was odd, at least he appreciated this basic point.

P 152: the suggestion that Kepler's battles with Tycho's heirs - Tengnagel - could have lead to the apparently aimless structure of the Nova.


Feynman on Brahe
The sleepwalkers