June 1, 2012
Recalling Windows

I have to take issue with slide 3.

The third major Windows release, on May 22, 1990, was the first time Windows graphics could compete with the interfaces used on the Apple Macintosh.

Really? I don’t see much to recommend this over this.

May 27, 2012
Closing Windows

There’s so much wrong here it’s hard to know where to start. My eyes were particularly drawn to this gem of herd-mentality ignorance though:

Web apps are really important in the big picture. A developer who knows how to put together a state-of-the-art web application has his or her professional skillset in good shape. A developer who can build a Windows Forms app but is baffled by “$(‘div’).addClass(‘foobar’)” needs to take some time out of playing Diablo III and spend more time onCodeSchool.

No, I’m not baffled by that snippet of “code” (although I have no idea what Diablo III is). I am a bit fed up of seeing dangerous code like it, in the dangerous language of  Javascript, in the dangerous environment of a browser. Programmer-defined strings as keys - you will definitely need to hire Offspin to clean that database up. Let me know how you get on when some 20-something programmer spells foobar as fubar in the above. 

Windows Forms is the most solid and reliable platform for business apps. It’s also 10x quicker to develop in than KiddieScript, and 10x quicker to execute. And it doesn’t break with each version of Windows - unlike web apps which break every week when Firefox 92010 auto-installs with a brand new way of rendering borders. 

May 15, 2012
Please Don't Learn To Code

I’m not a massive fan of Mr. Atwood, but he’s spot on here. Schools are for learning about academic subjects, not for learning how to do jobs.

May 9, 2012
AUTOEXEC.BAT lives on

Amazing that there are still arbitrary size limits, even in 64-bit Windows 7. I was disappointed to see Powershell reporting that git was not found in the startup, after installing SQL Server 2012. Turns out that the PATH environment variable is limited to 2047 characters, and several installations had used this up.

I am indebted to this site http://www.kjctech.net/2010/04/18/how-to-make-an-old-school-subst-virtual-drive-persistent/ for the solution. Basically you use a registry hack to do what you would once have done in AUTOEXEC.BAT:

SUBST P: "C:\Program Files"
SUBST R: "C:\Program Files (x86)"

then edit the path to replace those references with P:\ and R:\ and you’re done.

April 7, 2012
Government Design Shock

The HN headline, “Digital Design Principles from the UK Gov” had me heading over there for a laugh. But actually a lot of it makes sense. I did like the first comment on HN from ktizo though:

Holy crap, much of this makes sense. Who are these people and what have they done with the real government? I’m not falling for it. Must be a late april fool.

March 28, 2012
Agile is a Sham

It’s inevitable that any “light” methodology will reduce the opportunities for methodologists. To counteract that, they make Agile more complicated than waterfall, add more compulsory meetings, and sell courses for “certified scrum masters.”  I was happy in previous jobs to start implementing some of the ideas in Martin Fowler’s article. But seeing big corporations “doing agile” makes me nostalgic for SSADM.

Sadly I think the original link to this text has gone from the net, but it sums it up perfectly for me:

“Making good software is hard, and anyone claiming to have a magical process that guarantees good software is selling snake oil. I can appreciate your wanting to make a buck, but would also seriously appreciate it if you could find some other industry besides software development to go screw up.”

williamedwardscoder:

thats SCRUM and TDD and all the rest; it is all those new ways of managing development projects and being super-productive and modern and buzzword-compliant; all the sprints, scrums, playing cards crass commercial nonsense.

The management pitch is that by getting programmers to follow some process rote you will get good, predictable results out.

See, the thing is, the success of the coding-part of a project is dependent on the calibre of the engineers doing that coding and not the process they follow. 

Read More

February 18, 2012
Digestion

There doesn’t seem to be a lot of consensus on adding security to web services. For example, here are two ways advertised for Rack (the Ruby framework on which Sinatra is built):

Rack::Auth::Basic implements HTTP Basic Authentication, as per RFC 2617.

Initialize with the Rack application that you want protecting, and a block that checks if a username and password pair are valid.

Rack::Auth::Digest::MD5 implements the MD5 algorithm version of HTTP Digest Authentication, as per RFC 2617.

Initialize with the [Rack] application that you want protecting, and a block that looks up a plaintext password for a given username.

opaque needs to be set to a constant base64/hexadecimal string.

Oh. So I can send the password across the net in plain text, but I do at least have the ability to encrypt the password in the database (because I can re-encrypt the plaintext one in Rack::Auth::Basic to check it against.) Or I can have it encrypted across the net, but because Rack::Auth::Digest::MD5 needs a plaintext password I have to keep the passwords in clear text in the database. 

Actually you can use encrypted passwords with digests: there is a passwords_hashed property, but you only find this out by reading the source code.

You see, this is where Microsoft win. On two counts:

  1. Although many more lines of code are needed to implement authentication in a WCF service (check this compared to this), it is at least documented.
  2. Although you can’t do digest authentication with WCF properly, in most cases I would be running on IIS and use Windows security, and I wouldn’t need to handle authentication at all in my application. When a user leaves, the sysadmin just disables their Windows login. That’s it.

February 7, 2012
Perceptions

Been doing some boilerplate REST code, using the excellent Sinatra on Ruby/Linux and WCF on Windows.

I did the Ruby stuff first and it seems really straightforward (once you have read the source code for the framework, because, like all open source stuff, the documentation is useless), and I’m quite impressed that I don’t need to create acres of object hierarchies just to generate some XML from the database. 

Because my test data is - well, crap, really - and I couldn’t be bothered to fix it properly, I added a new column to a table to remove natural-key duplicates.  My gut feeling, given the amount of typing I’d had to do to create the WCF service in the first place, was that it would take ages to add this new column to that, and not long to add it to the Ruby service. As it turned out though, this commit has fewer changes than this one

January 11, 2012
Raspberry Blown

The Raspberry Pi becomes more of a joke every day. Today they offer some rather limp excuses for why they can’t manufacture it in the UK.

TL;DR: it boils down to (a) UK manufacturers wanted to be paid for their work (b) the Government wants us to pay tax (c) all this eats into our margin.

Margin?! They are a charity so why does their margin matter? As a charity they get buckets of tax relief anyway.

I maintain that there is no need to teach computer programming in schools. Use of the programming features found in the leading commercial product, Microsoft Excel, is more widely applicable for 90% of the jobs that the brighter kids will end up doing.

They want to encourage these kids to go into technology and want tax relief and Government funding for computer programming lessons. But when they get a chance to support British industry they ignore it because it’s cheaper to use foreign labour at below UK minimum wage in appalling working conditions. When they get a chance to pay some tax to support the funding they so passionately desire, they whine about it and pay taxes to foreign governments instead.

I’m enjoying this technical disaster movie. Stay tuned ….

December 10, 2011
"Informally, the programs were called “ropes” because of the durable form of read-only memory into which they were transformed for flight, which resembled a rope of woven copper wire. For the lunar missions, 36K words of “fixed” (read-only) memory, each word consisting of 15 bits plus a parity bit, were available for the program. In addition there were 2K words of artfully timeshared “erasable” or RAM memory. Allowing for the identical Apollo guidance computer (AGC) in the Command Module (CM), containing a program called COLOSSUS, it is correct to say that we landed on the moon with 152 Kbytes of onboard computer memory."

Apollo 11 and Other Screw-Ups

Liked posts on Tumblr: More liked posts »