Whither the OS?

For that matter, whither me?

HostRocket is offering hosting for $4.95 per month (24 months in advance – still, that’s under $120 ) that includes unlimited bandwidth, 25GB storage, and (up to) 8 web sites.

I have a few domain names, including this one here. As impressed as I am with HostRocket’s service – and it’s been very, very good to me – I find myself asking – why pay anything at all, ever, for hosting? Why not just use … you name it – an AIM page? A WordPress Blog? A Google Page, myspace, etc. Need pictures? Take your pick – Picasa, Flickr, AIM again and who the hell knows what all else there is.

So I don’t really need a host. I’m a dinosaur with this bit. I still login via ssh from time to time and write php code.

After spending all this time learning and using OpenOffice, now I find out that I don’t need that either. What started out as a quest to not have to use Microsoft Office and its exorbitant licensing fees, ended not at OpenOffice (a fine package, and I’m writing this with tongue in cheek – sorta – because I do use it from time to time) but instead at jotSpot. No, wait, they’ve been gobbled up by Google. They’re not all the way integrated, but – hold the phone! – They’re not charging me any more! Not that it was a fortune. The jot is an incredibly useful – if a tad clunky in spots – tool. I’m looking forward to seeing where Google goes with this.

Or am I supposed to be using Zoho? My first impressions are pretty favorable – the writer is really top notch. So are the spreadsheets. But it costs … free!? Yup. Free. How about ThinkFree? It sports a Java “Power Edit” and (what I guess to be an Ajax based) “Quick Edit.” These are not only complete online applications, they are also online storage. And of course there’s a ThinkFree flickr interface and my head is spinning. And there’s Google’s writer, and gOffice and … e-mail – Gmail handles my e-mail much more efficiently and effectively than I can with my own in-house mail server.

I don’t need a host. I don’t need storage. I don’t need (much of) an Operating System. Why am I installing Desktop PCs for my customer service and sales staff? Why am I running my own web server in-house? Why am I running my own e-mail server in-house? There’s no discernable advantage. I don’t think I even have 25GB of storage on my Web Server. Nope. I don’t. I have 18.

Hmm. And with SecondLife, I hardly need myself any more. Although I could probably use a lot more RAM and network bandwidth. Wait a minute, is this the only reason I need this PC? Why can’t it just work on my cable box? Even that has 120GB of disk.

CHICAGO SUN-TIMES :: Andy Ihnatko :: Avoid the loony Zune

“Avoid,” is my general message. The Zune is a square wheel, a product that’s so absurd and so obviously immune to success that it evokes something akin to a sense of pity.

A great critical line deserves mention. So here’s the mention. Seems Andy isn’t fond of the Zune. It doesn’t look bad in the photograph, but I haven’t seen one in person yet. Seems to be turd brown.

As for me, I use my (compared to the iPod and/ or Zune) comically large Epson P4000. The screen is gorgeous on the P4000, which is really targetted at the Photography crowd (USB, Secure Digital and Compact Flash connectors), plus it has a user-replaceable, rechargeable battery. I think the larger size is better for photographs. Eh, duh, that’s what it was built for. Err, leave me alone. The Epson is pretty handy!

Link to CHICAGO SUN-TIMES :: Andy Ihnatko :: Avoid the loony Zune

Title Goes Here (Beta)


It’s a (Beta) world I guess – from Google’s Google Base (Beta) to Live.com Spaces (Beta) thingie to this Windows Live Writer (Beta) and just this past week Yahoo Mail (Beta). This is a very convenient and maybe even expedient ruse. From now on, all software will be (Beta).

“Simon, this @#*^ing thing will not work!”

Simon looked up from his book. “Well, what did you except Jeff? it’s (Beta), it’s going to have a few bugs in it. That’s the price of using (Beta) software.”

“Oh, yes of course. So when does (Beta) become … um, a regular real version?”

“Marketing’s on it. They’ve recently learned that (Beta) is actually a Greek letter. So the next version will be (Gamma), then (Delta) and so on until we reach (Omega). Thus, there will never in our lifetime be ‘regular’ versions any more.”

“I see,” a puzzled Jeff cocked his head to one side. Simon continued:

“Quite cost effective as well. There’s no need for testing staff – they’ve all been sacked. We are the testing staff, and for free, too. And since all software from now on will be riddled with bugs, there’s no need for technical support. They’ve been sacked as well. We just e-mail the programmers directly right out of the program. Rather brilliant, on the whole, actually”

“What are you reading?”

Pick Up Lines that Work by Devon ‘Mack’ Wild. This cat is a straight up pimp.”

“Is that a cleverly disguised link by this blog’s author to entice us to buy a book because he’s an Amazon ‘affiliate’?”

“Good question. I don’t think so. I think he simply lost interest in the topic, and very likely us. As figments of his imagination, I should think that’s the end of us. Goodbye, Jeff.”

“Goodbye, Simon.”

And with that the lads were off to the torrid nightlife that is Council Bluffs to try that book out.

Ajax’d!

I’ve finished the first part of a web app that is used by our staff to manage our products, specifically item descriptions, features and specifications. One of our number complained that the current implementation – built on the very fine – is too damn slow.

And it really is slow. But that’s mostly because we do a post and refresh … every time we change something. Worse, I have 4 instances of the editor (!) for the four separate sections (description, item includes, features and spec chart).

How did I let this happen? How had it come to this? I dunno. Don’t ask me.

Inspiration

A couple of months ago I’d toyed a bit with Ajax to put together a fairly simple catalog ordering interface: https://www.uniquephoto.com/xm.php

(note you have to be a registered member of our site to see it, it’s – you guessed it – (Beta)ware).

I know I’m late to the Ajax party. So bear with me if I’m a little like the kid next door that just “discovered” Led Zeppelin.

So a version of this ordering interface seems to be working pretty well for our wholesale customers (different site). I thought, well, maybe time’s come to Ajax us a better back end for product management.

The Pieces

I came across Ekit, a Java applet. I didn’t let the fact the the demo didn’t work daunt me. Download was quick and painless and the included demo HTML worked pretty well and quickly, too. Documentation was a bit light, and the comments in code appear to be in German. But it worked, and had a getDocumentBody method that I could access from Javascript.

(Sidebar: I just can’t get over how damn cool that is: Calling a java method from javascript.)

I updated my Sajax toolkit from modernmethod.com. This code makes me nervous. Code that writes its own code always makes me nervous. I’m afraid it will become self-aware.

I already had the MySQL database and apache server, so we were all set!

Some Code Concepts

The editor applet exposes 2 methods that I needed to make it all work:

getDocumentBody the editor’s treats each document it works on as an individual html page – that is, it adds <html><head> etc tags. But this method will deliver only the html between <body> and </body>.

setDocumentText a way to get the information from my database into the text editors view pane.

Given a <textarea> called TextViewer in a <form> called ekitForm here’s how I get text from/ put text into the Ekit applet:

function getText()
{
document.forms["ekitItemForm"].TextViewer.value
= document.applets["Ekit"].getDocumentBody();
}

function putText(someText)
{
document.applets["Ekit"].setDocumentText(
document.forms["ekitItemForm"].TextViewer.value );
}

That’s the heart of it all, right here. Remember I had four distinct database fields: description, includes, features and specifications. I handled this by create 4 hidden input fields in my form. When I read from the database, I assigned the 4 hidden fields, and simply used the getDocumentBody and setDocumentText methods to switch between them.

Neat stuff!