Page 16 of 42

1972: Dead teachers don’t lie

What follows is an extract from my novel Archive Fragments. 

There were great tensions in society back then; tensions that people do’t remember now. They talk about class and ethnicity as if they were new phenomena. But I lived in a country that tolerated Jews in a leery, cautious way. It had been nominally Christian and definitely white for over a thousand years. Some schools were still tied to churches – I even went to one when I was a junior. Many bad things happened there, but that is for another time.

Secondary school there was’t a single black face in the place. This might seem strange now, but then it was’t. Our government invited people who were citizens of the old empire to come and work, to come and do the low-paid jobs that they could’t find people for. They were easy to spot, they were mostly descended from former slaves, they had black skin, and non-UK accents. The unions quietly forgot their internationalist leanings and started to stoke up racism against the threat of lower-paid workers damaging differences in pay. I remember a lot of gibberish about differentials in the news at the time, with my child’s mind, and now look back to see this racist agenda. Of course, scratch and Englishman and you find a racist, because Englishness is defined in terms of who ca’t join the exclusive club. I do’t care if that statement annoys you, sorry.

So, it was a little odd when a black child appeared in our school. He was the only one and did’t have a good time of it. Most of us were’t against him, most of us did’t have an opinion, but of course, a large school with several hundred kids in a year and fifty or so teachers had its fair share of dickheads, ignoramuses and out and out bullies.

There was a class distinction between the teachers. There were the arts types, the elite who had gone to a proper university before the blurring of institutions that has happened since, physical education teachers who did a bit and were mostly psychotic ruffians, and the failed engineers who taught technical drawing and metal- or woodwork. This last bunch were old-school and had probably been teenagers at the end of the War.

I have an abiding memory of this poor child standing on one of the woodwork benches, where a bald bastard of a teacher and a slightly older army veteran type were abusing him and using words that you never hear any more. This offended me deeply but I sinned by not taking a stand and getting someone in authority to confront them, if anyone in authority had the balls, which I doubt.

The kid only lasted about a week and I never saw him again. I hope he survived and wish I had been able to do something for him. I’m not sure I even spoke to him; the bullies would have gone for me as well if I had. This shames me.

The next school year it was announced that the bald bastard had died of a heart attack over the summer. I remember the headmaster looking sad, and we were all supposed to be a little sorry. I was glad, it felt like justice, but the older teacher who had egged him on was still there. Of course, he had a family and there was a whole complex web of lives and relationships around him and it was sad, like it always is when someone dies young. But I was’t sorry because the thing that defined him for me was that child standing on the bench, bravely holding back his tears.

Now I am an adult I will not tolerate racism or bullying, and I will not be quiet about it either. So hard luck if you stand someone on a table and abuse them – I wo’t be sad or sorry when you leave and I will make sure you do…

Fun with openssl on Ubuntu and Ruby 1.8.6

We migrated a core system to our shiny new cluster on Friday. Colin got everything going apart from a call-out to a 3rd party back-end system that uses SOAP.

Tracking down the problem:

The error message was a method_missing talking about load_file.

I did some google work (googling is apparently not allowed by google because it could undermine their copyright – like I care)

It looked like the call to the SOAP client to add the certificates file was’t working … however the permissions on the files were correct.

I had a look on Sunday and found that we were missing the Ruby openssl library. This is’t a gem, but part of the standard install. Found this link explaining how to sort it out. Looks like we’re missing zlib and some other stuff too.

Interestingly one leg had readline installed and the other did’t, which meant that the console would’t work. I could’t get it to build on the broken leg and resorted to sftp’ing the file from one machine to the other.

This is because you can’t get above Ruby 1.8.3 using the apt-get command so you have to build it from source. No idea why it does’t install standard stuff – there’s probably some magic compile switch that is’t documented.

Have fun. 

Joel hits the nail on the head again

Joel does it agai 

Part 1: http://www.joelonsoftware.com/items/2007/12/03.html
Part 2: http://www.joelonsoftware.com/items/2007/12/04.html
Part 3: http://www.joelonsoftware.com/items/2007/12/05.html

Posted o reddit. 

I’ve been in the game since 1985 and there was only really the “in house programmer” type job in those days, usually using COBOL. Have managed to work for a couple of software houses since then and I agree – it’s a much happier experience.

Automation – yeah, I agree, you can’t automate sexiness or ease of use. A lot of techies have a very good data model (or did before incoherent Java object models became de facto) and then just generate a pile of unusable crap from it, which is logically complete but very hostile. Cost cost cost cost – when I worked for Oracle they had a tool that pretended to do “100% generatio”, crap crap crap crap. But allegedly cheaper.

Good stuff Joel, keep it up.

Coding Horror: Presentation: Be Vain

http://www.codinghorror.com/blog/archives/001007.html?r=21636#endcomments

I spent most of my spare time from age 8 to 16 learning to play the guitar and these instant gratification things just annoy me.

That said, I agree with the point that presentation is far more important that people think, and the example is a reasonable one. Please stop focusing on the specifics here – Jeff’s trying to make a very reasonable point.

Techies start from a data model and then wrap it with some half-assed forms from a generator – I know we do, I’ve done it myself lots. I learned that this does’t work because the logical view of the data isn’t the user’s view. Not listening to their pain and trying to help them get to where they want is arrogance. For example, on a system our users use (and I did’t write) they hate the way it takes forever to open the person details screen and all they ever want is the email address or phone number – a techie generated the user form out from the data model and joined it to the logically correct place. Imagine how much extra effort it would have been to put the phone number and email address on the summary? Hardly any, but it does’t fit the cod-head approach. I would lay money the coder has never talked to a user or watched one use the system.

The sexy unwritten thing is’t at all new. I worked on many projects in the pre-web days where the client had “bought the powerpoint”. Then they kicked us lots because it was all a lie.

Rails Yet To Make Dent in the Enterprise?

Managed to post this twice becuase their system would’t let me log i … 

http://www.adtmag.com/article.aspx?id=21641

> Absence of sophisticated IDE/Debugging tools – Eclipse/IDEA/MS-Visual Studio excel in this realm. Rails IDE has a lot of catching up to do.

The NetBeans Rails tool (free) has all this, as does 3rd Rail (paid for and excellent) and there are at least 2 Rails plugins for Eclipse – wake up!

> 4. Due to its scripting nature and other things, it could not handle large volume of requests as gracefully as other frameworks. It allows developer to write working but incorrect code since there is no strong data types.

Have a look at what Bruce Eckel (author of classics “Thinking in C++” and “Thinking in Java”) has to say about strong types vs. proper testing – he now advocates Python and test frameworks. Strong typing is only half of what needs to be tested, and the least useful half. The Rails philosophy is BUILT on agile methods, constant testing etc. and it’s really easy to do. You must have forgotten this. One lone developer making a mistake is a ridiculous argument – we don’t work that way on big projects – no-one does – and strong typing gives you a false sense of security.

Java is an interpreted language too, you know, and people used to say exactly the same things about performance. Ruby 1.9 is significantly faster than 1.8, JRuby is also pretty quick. Rails 2.0 has lots of performance improvements, mostly based on getting HTTP efficencies that Java folks need to look at too.

Twitter and the Human Genome project are both built using Ruby on Rails – they are huge and don’t have a problem. “Rails does’t scale” – rubbish, do some research.

RSpec gotchas with exception handling

If your code throws exceptions then beware that RSpec uses exceptions to talk to itself, if you catch exceptions then beware that you could be masking the error RSpec is trying to report.

If you’re staring at something that you know should be working, comment out the rescue section and see if it tells you more.

Have fun.

Department of the obvious says …

Posted here on Sticky Minds:

The interfaces are part of the list of deliverables, surely? I can’t see why this is’t just a restatement of the obvious. It’s where all the effort used to go in the old days, e.g. if you were putting in Oracle or SAP.

Sounds like an old, old lesson needs to be relearned again. And, of course, if you are using the orthogonal UML models: Use Case/Interaction/Class you should have seen this coming if you were paying attention.

Of course, all of the old PM’s that knew this stuff have been fired because they were “too expensive”. Now we know why they were … they don’t make beginner’s mistakes like this.

SOAP idiocy – do not use it to send XML strings

I’m getting really tired of this:

SOAP – used to stand for Simple Object Access Protocol. Apparently it does’t any more but who cares?

In essence, create a complex object, marshal it into XML and send it down the wire.

This means you can do stuff like:

myObject = SoapObject.new
myObject.person = “James Smitt”
myObject.addresses[0] = “1313 Luck Street”
myObject.addresses[1] = “667 Beastie Neighbour”
myObject.employer = “Big Bang Burger Corp.”

(etc.)

Then, you can send it down the wire. The receiver of the object has everything nicely laid out for them and they can interrogate the object to get the fields back etc. All done for you by the SOAP framework. This is really easy. You just generate the object wrapper from the WSDL, and this is why there are version numbers in WSDL so you get the right object back.

Oh no, virtually every person I’ve had to deal with recently uses SOAP to send an XML string.

Why is this a bad idea?

First, the string has to be escaped so it won’t mess up the SOAP message.

Second, it has to be parsed at the remote end, which may not work because some dimwit put an ampersand somewhere (it’s data – they’re everywhere).

Third, you have to think about the XML object, maybe use stuff like XPath.

Fourth, while you can return an object (if you are the server) that has useful stuff like error messages or resultant ID’s in it, you probably won’t – just another XML document that again has to be parsed and so on.

This drives me nuts, it’s a lot more work to use, it is’t an API. If you want to send XML just use an HTTP post … why complicate it??

Look:

1. Create a complex object that wraps your data requirements, it can be hierachical, have arrays of things in, all sorts.

2. Fire your IDE of choice at this object and generate the WSDL

3. Use the technology like it was supposed to be used.

XML is witless and difficult to use on its own, as a means of marshalling complex objects it’s fine – but get the framework to do it; it’s been debugged and worked with by thousands of people.

Effectively, rolling your own XML description is reinventing the wheel every time. Let the framework do it.

Sigh.

Addition 27-Nov

It’s also easier to test your complex object and put validation in around values of fields, rather than trying to parse an incomplete XML document and just throwing some meaningless exception.

Goating

Goating 

Swap the M and N keys round …
Then turn co-worker’s drawer unit round so the back is facing them …

Then try not to laugh too hard when they realise what’s happened and go for their penknife in the drawer to lever the keys off …

Ghost mouse …

Tie a piece of string to their mouse and move it as they reach for it (don’t do this if co-worker has a weak heart).

And the universal yellow sticky on the bottom of the mouse so the laser can’t see any movement… removing ball from old-style mouse

Swap co-workers mice and keyboards around …

I don’t do this stuff any more because I upset someone too much and did’t want to do it again. But if you’re in the mood …

State of digital software distribution

 Comment here 

The problem is – if you start charging less than the recommended retail price the retailers are going to stiff you and stop stocking your product. They have to make a living too. So the only thing you can do is charge the RRP. Then the discounters are going to come in under that price. Very difficult to get around.

Can you imagine the howls of protest from the retailers with shelves and shelves of DVD’s and CD’s if Microsoft started charging, say, 50% less for the download? And quite rightly – very unfair and MS get to keep it all.

So, maybe drop the RRP and take less of a cut to get the price down for everyone? Hmm … pigs might fly.