From one world back to another

Be warned. Be careful.

We had a setback last night. We're in the process of giving our sites a makeover. First on the list is RADSOFT.NET. This will be incorporated into the new top domain RADSOFT.ORG as time goes by, but for now a few things have to be done first.

All those thousands of pages have to be mobile-friendly. Google's test for mobile-friendliness is probably the industry standard. Most basic is including a tag about viewports.

It seems that someone erred at the beginning of the mobile era. (Guess who.) They compensated for the small screens on these so-called 'smart' phones in a way that meant that everyone else, from that moment forward, had to compensate back again. Having a tag about the viewport is essential.

After that it's a matter of streamlining. The likes of WordPress don't care about streamlining. A lot of auto-generated code is wasteful. And we don't like waste. All our pages - thousands upon thousands upon thousands of them - are created with a simple text editor. Nothing fancy, not by the standards of others, but refined according to our own standards. And the best way to streamline is to use server-side HTML. Those files have the extension SHTML, and the Apache web server recognises that extension and acts accordingly.

All our headers, footers, mastheads, and menus are to be found in a single place. So changing one page means changing all. That's efficiency. Not only in terms of space but in terms of time.

[For the uninitiated: Apache recognises recursion, if and only if embedded includes also use the same file extension. Just saying.]

There are more files on the Radsoft site than we remembered. It's not been used much since we last looked at it. As you might remember, we tired of Bill Gates after the ILOVEYOU worm hit. The final straw came with the introduction of Visual J++ which was a deliberate and malicious attempt to undermine open standards. So at that point, and after Mark Ward's colleagues at the BBC and the family of Thomas Greene of El Reg fled Windows, we made an effort to do so as well, but also to document what we'd done. The idea was to provide a roadmap for others, so others would dare take the leap too. We've nothing against Microsoft the company, but we understood the benefit to the human race of having a common platform where one didn't feel scared all the time and ended up wasting time trying to be safe instead of exploring ways this Internet technology could actually be useful.

So, after a lot of ifs, ands, and buts, and after wandering into a Gateway store and meeting the ethereal Amanda, we'd sort of found a path. NeXT was in the back of our minds, both Sydney's and mine, all along, but neither had thought much about it. After seeing Gateway's horrific hardware (they had a 40% return rate at the time) Apple's boxes were an easy sell. The experience of standing in that tiny showroom with those early TiBooks is most accurately described as the same feeling Joe Banks has when he views his sea voyage luggage. I took home my TiBook, Sydney's iBook to arrive a week later, and we bought the Matrix DVD on the way home, mostly for what we expected to be great graphics on a wide display. (When we arrived in our first house on Crete, it was Bill Pullman's 'Zero Effect' which played every night: I had the movie run from the bay window on the Med downstairs and we dozed to sleep watching from the loft above. That became another movie we learned by heart.)

No kudos for Apple. None. Not ever. But Apple had market clout. And now they had Unix. FreeBSD. The most popular flavour. Linus hadn't known of FreeBSD. He said he wouldn't have started his own OS if he'd known. FreeBSD is a derivative of BSD, a project shepherded by Bill Joy after Ken Thompson visited their campus on his so-called 'sabbatical' after completing the original Murray Hill Unix. FreeBSD is also licensed in a generous way, unlike the restrictive Linux licence. Microsoft was able to take advantage of this to get online with Windows 95 - but yes, their implementation was 'leaky', as no doubt many of you discovered. Oh well.

NeXT concentrated on putting something fancy, flashy, and sophisticated atop FreeBSD. The world of computer science was at that time like a vessel being tossed about in a stormy sea. Everyone talked about object orientation - 'OO' - but few understood what it meant, and many abused it. IBM went all-in without getting it right either. Cottage industry companies sprouted up like mushrooms to take advantage of the state of things. None of it was pretty - and we hated it. Then NeXT came along.

Rick Rashid and Avie Tevanian headed the MACH project at Carnegie-Mellon. The idea was to make a microkernel Unix. The name ‘MACH’ supposedly comes from an Italian colleague who watched others stomping in a rain puddle and uttered 'MUCK', which to them sounded like 'MACH', so they kept it. Rick Rashid went on to Microsoft where he proselytised for microkernel alongside David Cutler, and Avie Tevanian of course went to Redwood City to head Steve Jobs' software development for NeXT.

Key to this project was the programming language Objective-C. ObjC, as it's called for short, is a radical departure from what had been going on in the world of OO. It wasn't a completely new language. Unlike C++, it didn't use the same syntax in a new confusing way. ObjC was a gentleman's programming language. And, most importantly, it introduced messaging.

Alan Kay, the man who coined the expression 'object orientation', had a sort of epiphany when he realised that all the things he saw on a computer screen were in fact a representation of objects, as he called them. (Why not organisms, Alan?) Kay wasn't saying that data took precedence over code - he was thinking in terms of individual sovereign objects. To get things done, these objects had to communicate with each other. And they did this by - messaging.

Brad Cox is the name associated with Objective-C. His syntax for a message is as follows.

[target message];

That's it. You read it right to left, as with assembly. Hard brackets.

The messaging itself is managed by the Objective-C Runtime. This is a smart piece of code, and it's very sophisticated. There are so many advantages to this approach it's not funny.

NeXT's initial idea was to sell a hermetically sealed Wonder-box from Planet Groovy. (Sound familiar?) But that idea went nowhere, so Jobs abandoned the hardware side and concentrated on the software. Amazingly his company was about to turn a profit for the first time when Apple came calling.

Jobs took a deal for all of NeXT, including all the engineers, for a facile $429 million. NeXT came to Cupertino. But they weren't welcome.

Steve Jobs appreciated NeXT technology, but his great love was gadgets. With his smartphone his quest was complete. Greater and greater parts of the world want to condemn him for that device, we amongst them. Stupidity and mediocrity are the new normals. Apple's off the rails with its feeble new programming language. Microsoft's long since gone off the rails with its own misfit programming language and accompanying framework. Programming's become routine factory work, creativity and fun gone out the window.

Yes it's a shame. Actually it's disgusting. But oh well. We'll leave that for now and move on. We're still working on website makeovers.

There's not much to do right now, in terms of what Comp Sci teachers can do to make things better. It's just shit. That's it. We can continue to stick to our principles. That's what we have. And we have a great body of work to fall back on. We're calling this 'Practices in Programming' for now. We want to keep things neutral and open-ended. But the idea is the same. We don't like waste, we don't like 'suits', we don't like 'hot air', and we absolutely hate corruption. Not to speak of stupidity. Klaatu said it best, didn't he?

'I'm impatient with stupidty. My people have learned to live without it.'

[^ There are depths there. You see them?]

So the struggle continues. And yesterday evening - or was it this morning - I decided to proceed on my own. My mind wasn't fully clear, but I was only picking at bits and pieces.

I was particularly interested in the Resources section of the Radsoft site. This part isn't even on the menu right now. Perhaps for the better. It has sections with wonderful Judith, the mysterious Kwan or Kwanhaeng, the great Sargon, and others. Getting those pages to conform to the new mobile standards was a bit of work. For downloads and uploads we use an old copy of Panic's Transmit FTP client.

Finding a good FTP client on Apple's OS could have become an epic novel rivaling Doctor Zhivago. We wrote about many of those adventures. The only program worthy of even a consideration was Panic's Transmit. The only one. But oy what a carnival ride. Where did those programmers learn to program? Seriously. Let's take a few examples. A very few.

- Announcing success without checking return codes. Transmit has a bad habit of just assuming things turn out OK. If you want to create a directory on either side - it's yours! If you want to create another one in the same location with the same name - it's yours too! And so forth.

- Moving files. Moving files on Unix is akin to renaming them - sometimes. But it's always a legit operation. As long as the file types match. Sort of. If the new name is that of an existing file, then it's OK. Moving often involves removing things at the destination. This is OK in Unix. But this made the Panic people panicky. So they outlawed it all.

- Average transfer rates. Panic likes to display your average transfer rates. Unfortunately things can turn into negative numbers if there's a blackout or brownout. No worries for Panic! Of course negative transfer rates would imply that things were going in the wrong direction, but they don't worry about things like that at Panic.

- No locking the GUI. With industrial strength programs like WS_FTP, your GUI locks when you begin a transfer. You can't go anywhere on either side until the operation completes. You're probably warned if you try to exit during an ongoing operation. Data security is supreme. They don't worry about things like that at Panic.

You start an extensive hierarchical recursive transfer with Transmit? No problemo! You don't have to sit around and wait for completion - go where you want! And if you want to initiate a further transfer during the ongoing first transfer - no worries!

[Somewhere in here is the concept of 'working directory', which Transmit and Panic are very dependent on. Think about it. Odds are 99+% that Transmit has only one variable to hold the working directory, no matter how many transfers you schedule. Remember how they thought they'd be cute and leave you a log file on disk which has all your online activities? Oh yeah. What happens if you open a second Transmit window? For the log is cleared for every new Transmit window, and there's only one name for the log file, ever. It's this type of thinking that is totally unfathomable. How can those Panic people excel at being so stupid?]

We wrote to Panic once. We pointed out that they needed to check their return codes before announcing, yet again for the umpteenth time, that one had yet another directory 'foobar' in the same location. They acknowledged this error and thanked us. Feeling a bit optimistic, we then sent them a followup with the next twenty or so glaring bugs. No reply.

And so last night. Normally I won't trust Transmit's ability to initiate new transfers while a transfer's already underway. I never will again, that's for sure. Transmit is dangerous. Do not trust Panic even with a shell script. There's something lacking in them.

And we've heard from the likes of MacSurfer editor Scott Siegling that he can't believe Transmit has bugs. And Scott's one of the saner people 'over there'.

So I'm finished with both transfers and can now begin removing temporary files on our server. But what I'm seeing at the bottom of the screen has nothing to do with what's going on in the actual window. There's no way to stop it either. Just kill the fucker, restart, and do damage control.

This relates to another bug we discovered in Transmit. Things can get so screwed up that an explicit command to delete a specific file results in a diagnostic that another file cannot be found. You really have to wonder what's going on under the bonnet of that confused application - and what's going on in their confused minds. Where did they learn programming again?

Half of the Resources section of Radsoft is gone. We were able to find it in the archives of the Wayback Machine. So all is not lost. But it will take some doing - and some time - to recover.

So let us leave you with a word. A word of warning. We're not trying to be mean. Seriously. But in our twenty years of exposure to the weird and wacky world of Apple, we have not once - repeat not once - happened upon a single programmer of professional caliber. Not. A. One. And this includes the people at Cupertino.

This isn't melodrama. This is for your protection. Be warned. Be careful.

Postscript. Panic's 'fix' for the programming error we told them about: they still don't offer diagnostics. If you lock your directory and use Transmit to create a directory there anyway, you won't get a directory displayed anymore, but the Panic brainiacs still can't offer an explanation (diagnostic) even though it's a simple standard system call that tells you what happened, and does this with an intelligible string. Nope, too far advanced for those guys.