The
Ultimate
Business Machine

Technology, business
and innovation.

And, not least, about
the Mac.

Weblog Archive Cutedge

by: Bernard Teo








Creative Commons License

Copyright © 2003-2012
Bernard Teo
Some Rights Reserved.

Tue 16 May 2006

The End-to-End Model Gets its Day in the Sun

Category : Commentary/deviceModel.txt

Walt Mossberg, "one of the most respected technology experts on the planet", has been widely quoted lately in the Mac press ("Apple kayos PC dominance with iPod technology") :

"For many years, there have been two models of how to make computers and other digital devices. One is the component model, championed by Microsoft. The other is the end-to-end model, championed by Apple ..."

"In the first war between these models, the war for dominance of the personal-computer market, Microsoft's approach won decisively. Aided by efficient assemblers like Dell, and by corporate IT departments employed to integrate the components, Microsoft's component-based Windows platform crushed Apple's end-to-end Macintosh platform."

But did it - crush Apple, I mean? Certainly the Mac-hating Charles Ferguson did crow loudly about that "collapse" in "Computer Wars" and I had something to say in rebuttal (here and here). I probably wasn't the only one who thought that there was something wrong with the conventional wisdom. But such notions take time to spread. But if it's true, it will eventually take hold in the public imagination. Walt Mossberg's utterance lends credence to the notion and is evidence that this point of view might just be on its way towards reaching tipping point :

"But for mainstream users doing typical tasks, the Windows choice advantage is an illusion."

And about time, too.

Posted at 6:16AM UTC | permalink

Wed 10 May 2006

Updates to the French localisation of MailServe and Postfix Enabler, plus a DNS Enabler page in French

Category : Technology/FrenchPFE122MailServe214.txt

Joselyne Rochaud and Corentin Cras-Méneur have updated their French localisation for MailServe for version 2.1.4. And they've also helped me update the Postfix Enabler French localisation for version 1.2.2.

On top of that, Josy has sent me her translation of the DNS Enabler web page into French :

I really want to thank Josy, here. It took me a long time to write that page. So I would know just how much work that must have taken her. Thanks, Josy. I'll always be in your debt.

PS : I made a mistake - Josy doesn't stay in Vancouver - she lives in Paris, France - those lovely pictures of the Rocky Mountains were from her holiday. OOPs! That's what I get for being mono-lingual (though I realise that going back and forth between the DNS Enabler page in French and English has been a very good way for me to get a feel for the French language, at least in reading the written word).

Posted at 12:49AM UTC | permalink

Mon 08 May 2006

Bonjour/Rendezvous

Category : Technology/Bonjour.txt

Bonjour - this time I mean the technology previously know as Rendezvous.

Nathan S. Duran (www.khisf.com) writes :

"Given the rapid proliferation of Bonjour savvy applications and hardware, I believe it would make DNS Enabler even more useful if it provided a simple means of accomplishing the configuration required to enable wide area browsing/discovery detailed here:

http://www.dns-sd.org/ServerSetup.html"

Now, I don't know a thing about Bonjour, so Nathan sent me this Google video link, of a talk given by Stuart Cheshire of Apple.

Then things started clicking in my head.

This is a great talk/demo. Watch it - it's about an hour long - and I hope you may start to see all sorts of possibilities, like I did. I never understood what Bonjour means. Until now. Thanks, Nathan for sending this.

Posted at 4:45PM UTC | permalink

Fri 05 May 2006

MailServe and Postfix Enabler Updates

Category : Technology/MailServe214PFE122.txt

I've taken time off from working on Luca to update both MailServe and Postfix Enabler.

Valerio Fioretti (at Image Now Studio) asked "if there is a way to REJECT all the messages sent JUST to one specific email address"? For example, for an employee who has left the company but who had subscribed to a lot of mailing lists.

I've updated MailServe to do just that. Just add a "bannedUser@ REJECT" line to the Access field.

Plus, I had provided MailServe with a way to turn off the open relay if you've placed your Mac server directly on a broadband line and your Mac had been set to relay mail automatically for all machines on the local subnet - because, then, all other machines on your ISP's network become your local network!

Since I had to do a series of testing again, I've taken the chance to change the check box I had used to stop the open relay into a radio button to more clearly convey its intent. And I've added that feature to Postfix Enabler, too.

Also, back to MailServe, I've added a "Virtual Domains" field to distinguish it from the Additional Domains field.

The primary and the additional domains constitute the list of domains you will receive mail for - implicitly for all user accounts on your server. The problem is that there is no demarcation between the domains - mail for sales@domainOne and sales@domainTwo will all end up on the same mailbox.

If you want sales@domainOne and sales@domainTwo to end up on different mailboxes, you need to use Postfix's implementation of the concept of Virtual Domain Aliases. You need to create two separate real user accounts on your server, sales1 and sales2, say, and assign them to be monitored by real users. Then you add the two domains, domainOne and domainTwo, to MailServe's new Virtual Domains field. And, finally, you add the address mappings - sales@domainOne to the real user account sales1 and sales@domainTwo to sales2 - to MailServe's renamed Virtual Domains Alias Mappings field.

The difference between a Virtual Domains implementation and the use of the Additional Domains field is that you must list explicitly every virtual address that you are using because the mapping to a real user account needs to be made known to Postfix. By contrast, Postfix accepts mail implicitly for every real user account for the domains listed as its primary and secondary aditional domains.

Both implementations can co-exist at the same time. So, it is useful for MailServe to have both fields - Additional Domains and Virtual Domains - for the user to use both implementations, e.g., to avoid having to list every address in a secondary domain, just because he is using a virtual domain.

So that's now done. Both MailServe 2.1.4 and Postfix Enabler 1.2.2 are out now.

Posted at 3:19AM UTC | permalink

Sun 30 Apr 2006

One Year On, We've Got 5000 Users

Category : Commentary/5000users.txt

It's one year ago that OS X Tiger was launched and we made Postfix Enabler into a revenue stream (is there any other way to say it?).

We've now got 5015 paying customers, since we started keeping proper records, and that's over 5000 unique customers, some of whom have bought all four of our software - Postfix Enabler, WebMon, DNS Enabler, as well as upgraded to MailServe.

And we've done five applications, including Luca which is going thru a total revamp right now, and should be re-released in a couple of weeks.

I've been working with Hai Hwee to clean up the Luca code - to make it smaller, faster, and yet more stable. We've been using this test database with 88,000 vouchers - it's about the size of a medium-sized company's accounting database over three or four years - and it's now running quite fast even on a slow SQLite database (it's about three times faster running on a MySQL database).

A Trial Balance can be done in under 10 seconds, and a hierachically-organised analysis of the accounts, like that shown below, can be generated in under 15 seconds :

What this means is that if you're using Luca with the bundled SQLite database (on an Intel Core Duo iMac or MacBook Pro), it will serve you quite comfortably over three years, after which time there would probably be faster machines you can use, or you can switch over to a MySQL database.

And Luca will keep your accounts balanced, to the last cent, throughout all that.

That's what I wanted to get Luca to - a version stable enough to handle a very large load right from the start. The current release is still quite crashable, so I'm looking forward to releasing this new version.

We've got the server applications - WebMon and MailServe. And we've got the back-end accounting database. What I am trying to work towards is to build the pieces that will link the two ends, so that a Mac user could really run a business on the 'Net, end to end.

It's because we have a back-end system (that the on-line sales transactions funnel automatically to) that I can see how we're doing over the months - how the sales of DNS Enabler and WebMon have grown relative to Postfix Enabler - so that we're not too dependent on just one line - and how likely people are going to upgrade to MailServe.

What I'm trying to do is to make these data analysis tools available to other Mac users, too.

We've been building all these things for other people for so long, that it feels great this time round that the cash register rings for us, instead.

I suspect sometimes that our users, who were working for their organisations and drawing a regular salary, didn't really appreciate what magic --- being able to "make money" through an on-line sale with no material goods being produced or consumed --- was being wrought on their behalf ... because there is magic, and lots of hard work, too.

And we've got lots of 4D code - payroll, real estate, construction project management, training administration, and general insurance - some of which (like payroll, most definitely) we're thinking of bringing over to Cocoa.

The Mac's a great business tool. And I think we've got the applications to prove it.

Posted at 7:18AM UTC | permalink

Mon 24 Apr 2006

WebMon says Bonjour

Category : Technology/WebMonInFrench.txt

WebMon now speaks French. Joselyne Rochaud and Corentin Cras-Méneur have sent over another localisation :

It's in WebMon version 2.1.3, now out.

Thanks again, Josy and Corentin !

Yesterday, I managed to conduct a whole e-mail conversation completely in French with one Bernard Doret who doesn't speak English. What I did was to translate his messages in French into English using Babel Fish and I then got Babel Fish to translate back my reply into French. So I was going, Bonjour Bernard! It seemed to work well enough for us to have a discussion about DNS Enabler, but then it probably won't be good enough if he were to need deeper technical support.

One day, basic translation services, like the kind provided by Babel Fish (errors abound but you get enough of the drift), will simply be automated and built-in into the system. I'm quite sure of this.

Posted at 9:52AM UTC | permalink

Fri 21 Apr 2006

The Multi-Lingual Mac

Category : Technology/Multi-LingualMac.txt

Joselyne Rochaud and Corentin Cras-Méneur have helped me create a French localisation for MailServe, below :

as well as for DNS Enabler :

I want to tell them I really appreciate it. Thanks so much !

P.S.: Josy's site has great pictures of Vancouver. It's a pity we have but only one life. There's still so much to see, and do, in this world.

And I've also taken the chance to release Hai Hwee's Traditional and Simplified Chinese translation of DNS Enabler. So they're all in version 2.0.8.

I get a kick out of looking at this. I can't read more than a few words. But as my wife would say, that's me, locked out of four thousand years of Chinese history. When I get a chance to go back to school again, I think I'd better learn a few more words before I die.

This is the Mac at its best - effortless multi-lingual capability for the Global Village.

Posted at 3:55PM UTC | permalink

Thu 20 Apr 2006

Postfix Enabler in Japanese

Category : Technology/PFEinJapanese.txt

I've got a Japanese localisation for Postfix Enabler. At last! Thanks very much to Takashi Yoshida, who helped us get it done.

It was originally undertaken by Chiang Hai Hwee, who has put her weekends attending Japanese classes to some use. But she was afraid she'd be mauling the Japanese language so we sent it to Makoto Imai for comments, and encouragement, and then to Takashi Yoshida, who helped us to edit, correct and polish it.

So, here it is, on version 1.2.1 of Postfix Enabler :

I've been hoping to get this done for a long time, if only to thank the many Japanese users of Postfix Enabler, and offer them their own localisation.

As they say in the books the author, that is me, takes responsibility for all errors and omissions. All praise go to the translators and all brickbats come to me.

Posted at 6:26AM UTC | permalink

Tue 18 Apr 2006

Cocoa Notifications and its importance to application design

Category : Technology/LucaNotification.txt

I would like to elaborate a bit more on what I wrote in the previous post, on the relation between technology and business needs.

Cocoa has a construct called notifications and it works like this : If any part of an application needs to be informed of an event that happens anywhere else in the application, it can register its interest with a Notification Centre. Then you can code your application such that when such events occur, you post a notification to the Notification Centre, who will forward that notification to all parties (and only those parties) who had expressed interest in it.

So, in a real world case, it works like this :

In the Accounting System, you may be looking at your Current Assets, which includes a Debtors' list. Then, from another window, you may be creating a Receivable Voucher for a particular debtor. If you happen to be also monitoring that debtor's list of transactions, its totals will be updated as soon as the data entry for that voucher gets completed.

If you're looking at the totality of all your transactions under Revenue, that figure will also get updated.

Switching back to the point of view a programmer, it's very hard to do this type of coding on your own - unless you hit upon the idea of having a Notification Centre to centralise, coalesce and dispatch all the notifications in an orderly way, which I thought was brilliant when I came across it because I had been doing this type of programming on my own and they were often a mess.

And look at the economics of the situation. It's a nice-to-have feature. So the amount of time you spend programming it should be kept in proper relation to the amount of code that really does the dog's work in the application. In other words it shouldn't be carrying too much weight, otherwise it would be like the tail wagging the dog. But what it gives your application, if you get it right, is a feeling of omniscience, and you know how God-like that feels.

So that's what the Notification Centre, and lots of nice touches in the rest of Cocoa, does - it tips the economics in the favour of the creative programmer, by making it possible to do this in the time you are allowed to allocate to it.

So, if you're a business owner and you hear your IT manager saying that he won't accept a language like Objective-C or a tool-set like Cocoa - "who has heard of it" and he can "pick up a Java or Visual-Basic programmer from any street corner" - rest assured that that street-corner programmer hasn't spent any time thinking through the economics of programming or scoured the world for the best programming tools to build the best business applications on.

That's the fight we are in. If we had stayed in organisations we'll never have been allowed to do this. There is a world of Mac users out there. There's no time to spend debating the issue. There's work to be done and let's just do it.

Business, art, and technology. If I had to spend too much time doing both the artwork and the text, I wouldn't have done it. As it is, my thoughts just flow and the art work gets done and it's up on the web. Choose your tool (sword) and we'll compete on execution.

Posted at 4:22AM UTC | permalink

Mon 17 Apr 2006

The Constant Gardener

Category : Commentary/TheConstantGardener.txt

No, I haven't read the John le Carre book, nor have I watched the film. But this what I've learnt from pottering around the garden - that if you want something to grow, you've got to prune, prune, prune, and prune yet again.

It's about letting light into the dark places. It's about watching for the deadwood, and cutting them off. Works for plants. Works for organisations, too (most definitely for organisations). And it works for code.

I've put aside the server-side stuff in the last week, and I've been going through Luca instead, looking for patterns in Hai Hwee's code and pruning them off.

This has been Hai Hwee's version of The Long March. She's brought Luca from 4th Dimension, through PHP, to Java and now to Objective-C. It's like we had to go through this Hejira to figure out what we really wanted to do.

I remember years ago, showing the NeXT machine to a division full of people, and I was asked why we were doing this. I said that there was something there in the Object-oriented way of programming that we ought to take notice of. If I were to be asked the same question now, I would be a lot clearer and a lot more emphatic in my reply. I think I know why, now, this is all going to be good.

People who teach programming are missing the point when they focus on syntax in the programming language. The important issue is design. There's such a thing as finding the most appropriate, most natural shape for a program. It affects maintainability. And design is what gives you the leverage to build powerful features into the application. And as for humans, the best and most pleasing shapes are often the slender ones, carrying very little weight. There's an aesthetic to application programming design. If you're equipped with the sensitivity, you can see it in the way Cocoa works, which can serve as inspiration to the way you learn to code.

For example, Cocoa has a concept called notifications - where you can set things up so that one part of your program can listen in for changes that happen elsewhere in the program. So I have been working on this :

where the changes I make to an account record will be reflected instaneously in all other open windows, keeping all the data views in sync.

There's a real world reason why you might want to do this. Accounting, as I have come to see it, is about making an account of the data, telling the story about how the data is related and what it all means to the health of a business. So you're going to be opening quite a few windows, to look at the business from a variety of angles, and at a variety of depths. And you want the changes you make in any corner of that world to be rapidly propagated to the other views.

It's about the veracity of the data and about being able to trust what you see. And you can only trust what you see if all the figures line up wherever you look, no matter what you do to the data.

It's a small thing but it can throw you off rapidly if you're always needing to refresh the windows to keep everything in sync. When it's done right, it's possible for the user to forget that he's working with a machine, and immerse himself into the flow of the data and divine its meaning.

This kind of programming can be very hard to keep in sync, traditionally, because there are an infinite number of permutations. It's so easy to get the signals crossed. In all the versions of Luca we've done, we've never got it perfect. Until today. What has made the difference is Cocoa and object-oriented programming. When you're working with objects, and well-designed objects for that matter, you can look for patterns and factor them out, re-arranging them and the shape of the application, like you're re-working the shape of a plant. There's nothing you can do in traditional "linear" programming that can quite match this in conceptual power.

I think we've found the holy grail.

My kid was watching a program on Discovery Channel the other day about the making of a Maybach - those expensive, almost hand-crafted, powerful, luxuriously equipped cars from DaimlerChrysler. That got me sitting next to him, watching, too.

That's what we want to do. Build applications of such quality.

Luca may not yet look it, with its ugly buttons and so on. But underneath, in its engine and its chassis and its cabling, we're getting there.

Posted at 4:42PM UTC | permalink

Sat 08 Apr 2006

Clairvoyance

Category : Commentary/clairvoyance.txt

I was just thinking that I had written something like this, in a posting called "Prescience" on 12th of November 2005 :

"We're looking ahead to the first MacTels - Macs on Intel chips - probably as early as January.

"We're probably going to be able to run Windows at native speed on these machines. They're going to be the only machines that cover all the bases (Mac OS X, Linux and Windows). They're going to be sexy as hell. They're going to be cheaper even than Dells, or in any case, provide unprecedented value for money.

"And, when we're done crossing over, we'll get to run Mac OS X on those other ordinary PCs."

Well, Macs are running on Intel chips.

"... We're probably going to be able to run Windows at native speed on these machines ..."

And so we are, aren't we?

"... And, when we're done crossing over, we'll get to run Mac OS X on those other ordinary PCs ...

So, is this going to happen or not? We live in interesting times.

PS: What Boot Camp means to me : I'll never ever have to buy a PC again. Ever.

Posted at 2:27PM UTC | permalink

Fri 07 Apr 2006

"Why should an app developer write for both Mac OS X and Windows if he doesn't have to?"

Category : Commentary/worlddomination.txt

One LinuxWorld attendee, who is a J2EE (Java 2 Platform, Enterprise Edition) middleware developer for a Fortune 500 company, wondered why Apple would make such a move. "Why should an app developer write for both Mac OS X and Windows if he doesn't have to?" he asked. - eWeek

My answer would be : when he would much rather program with Cocoa than anything else in the world, and as long as there are Mac users who appreciate it, which I would bet my life on.

Apple's market share is "miniscule" right now. And yet writing software for it already makes a nice business.

Are there going to be less Macs sold in the world now that a Mac can also run Windows?

There's no point wasting energy arguing against the "This is the beginning of the end of the Mac" people.

All I know is that if Adobe or Quark or anyone who doesn't want to program for the Mac, then that's good because I will. There are so many things I feel that it's now possible to build because Cocoa makes it possible. Anyone remembers Improv? I'd love to build that.

If there are less developers, so much the better for us. But is it better for the users? Well, if these guys prefer to build on Java Enterprise Edition, blah, blah, blah, and we build on what we think works best, let us compete and see who comes up with things that will work better for the user. That's how the user will benefit.

Posted at 8:39AM UTC | permalink

Read more ...

Mac@Work
Put your Mac to Work

Sivasothi.com? Now how would you do something like that?

Weblogs. Download and start a weblog of your own.

A Mac Business Toolbox
A survey of the possibilities

A Business Scenario
How we could use Macs in businesses

VPN Enabler for Mavericks

MailServe for Mavericks

DNS Enabler for Mavericks

DNS Agent for Mavericks

WebMon for Mavericks

Luca for Mavericks

Liya for Mountain Lion & Mavericks

Postfix Enabler for Tiger and Panther

Sendmail Enabler for Jaguar

Services running on this server, a Mac Mini running Mac OS X 10.9.2 Mavericks:

  • Apache 2 Web Server
  • Postfix Mail Server
  • Dovecot IMAP Server
  • Fetchmail
  • SpamBayes Spam Filter
  • Procmail
  • BIND DNS Server
  • DNS Agent
  • WebDAV Server
  • VPN Server
  • PHP-based weblog
  • MySQL database
  • PostgreSQL database

all set up using MailServe, WebMon, DNS Enabler, DNS Agent, VPN Enabler, Liya and our SQL installers, all on Mavericks.