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.

Sat 22 May 2004

Code Poetry

Category : Commentary/codepoetry.txt

Code Poetry (now, that's a nice name) has an interesting insight into the "Help Viewer" security hole, analysing how it could have happened, and tracing the history of Apple's help technologies all the way back to Balloon Help and Macintosh Guide.

It's an interesting bug because it seems to have been arisen as a side-effect of good intentions - to create a really usable help system. No harm done and easy enough to fix - I've already run Apple's Software Update.

Contrast Code Poetry's calm analysis with the typical hysteria in the popular press ("THE CALM arrogance of SnApple users ... "). Guess which article of the two we could learn more from?

Posted at 6:43AM UTC | permalink

Fri 21 May 2004

The book I wanted to write

Category : Commentary/speedOfStupid2.txt

I've just finished "Business @ the Speed of Stupid" - by Dan Burke and Alan Morrison. If I can, I want to give this book to everybody I know who is involved with planning, designing, or deciding on IT projects. It could be the most important book on the subject, by a very long way, and for a very long time.

The first part of the book contains ten examples, ten case studies of how IT projects fail, and I've experienced every one of them. An example from page 145:

Andy's idea was for content to be managed by the users with little administrative control or interference. He believed that the secret to success for systems like this was ease of use and accessibility. He had hardly begun to present the content management part of the design when Peter interrupted. "Andy, I like everything you've said up to this point, but I've got a real problem here. This isn't a toy for the users to play with; this is a mission critical business system, one that requires the same degree of security and management control as our accounting system. The system is going to contain a lot of valuable and client-sensitive information, information that has to be protected. I understand where you're coming from, wanting to make the system friendly and easy to use, but I don't think that putting a few management controls in place would have much of a negative effect. In fact, it will result in better, more dependable content, which will increase user confidence and make it more likely people will use the system." Andy wanted to disagree but could sense that Peter wasn't likely to change his position on the matter, so he nodded agreement and said, "Okay. We can easily put in more access controls and work out some procedures for submission and approval of content. I'll get that done and run it past you within a couple of days." Peter smiled and nodded.

I had thought that, okay, the first part of the book was fun. But wait till we get to the prescriptive part of the book, and we'll hear the same old nonsense in the form of half-baked methodologies. But no, the second part of the book was quite good, too. I think these two authors make a lot sense and that the simple framework they use to think about IT projects can work. It would help if more people, and especially the business owners and key users, get to know and read this.

I think this is the book that I had wanted to write. But I don't see how anyone could do a better job than what Burke and Morrison did in explaining the issues and suggesting a way to get out of the fix.

Posted at 11:32AM UTC | permalink

Tue 18 May 2004

The Fat and Thin Luca

Category : Technology/fatThinInstaller.txt

The nice thing about doing Postfix Enabler is that the code forms the basis of a general purpose installer.

With Luca, I've re-used the Postfix Enabler framework to help me create an installer that can populate either an existing MySQL installation or a brand-new MySQL installation with the basis of an accounting database, e.g., a user-selectable Chart of Accounts, depending on what business a user happens to be in, as well as enough data to show how the system can be used.

It would have been difficult to do this - as well as several ideas that we're about to explore - using the existing standard mechanisms available for software installation on Mac OS X.

The problem I had with Luca was that I went for the option that uses a separate external database, rather than embedding one inside (e.g., using SQLite), because I wanted to be able to offer the users power (e.g., Oracle and MySQL) and choice. But that made the system more complex because we've got two parts which could come apart quite easily.

And we've forced people who might otherwise like to use an accounting system (especially if I can find a way to make it clear that you're actually doing wealth-management rather than accounting) care about something that should properly be kept transparent to them, i.e., the use of a database system.

So we've thought long and very hard about this installer - because it could help us make the use of the database largely transparent, again, to people who don't want to care about it.

We've made some refinements to it. We've now made two versions of the installer - fat and thin - so that people who already have a MySQL installation can download and try out Luca that much faster, while people who don't know what MySQL is could still get to use the accounting system rather painlessly, though it will take a longer time to download.

Don't know if it works well, but we'll learn something whichever way it goes.

More than a year ago, I wrote this in the weblog - about maybe there's a way to use AppleScript Studio to build a tool to set up sendmail and how fun it'll be to explore it. And about how maybe the same tool can be used to install an accounting system and connect it to a MySQL back-end transparently. One year on, and both ideas have been realised.

Posted at 1:06PM UTC | permalink

Teach Yourself Accounting

Category : Commentary/essentialsOfAccounting.txt

This is the best book that I know of, if you need to teach yourself about accounting principles, concepts, and terminology very quickly. It's called, "Essentials of Accounting" by Robert N. Anthony. Read the Amazon.com reviews and you'll get a very good feel for what this book is about.

Accounting may seem like a dry, boring subject but this book works very well if you have the desire the learn, have very limited time, and have zero prior knowledge of accounting. And it's a surprisingly enjoyable read, too. You feel like you're being guided by a calm, sure, steady hand.

When I was going through the book many years ago, I wished I could have worked through the many examples (that the author provided) on an actual accounting system. Well, you could use something I didn't have then - Luca.

I believe that a good working knowledge of accounting principles is one of the most important skills that anybody involved in running a business has to have.

If you can operate an accounting system which, say, has extended features to manage payroll, inventory, and time billing; and you get utilties to set up a mail server and a few other Internet services, so long as you have a broadband line. All these, together with, say, Microsoft Office or AppleWorks - would it be enough to help anybody set up and run a business on the Mac? Of course, you'll need to supply your own business acumen. But we're on the way to putting all these together for our own use. If you'd like to share it, be our guest.

I wrote an article more than a year ago, "A Mac Business Scenario" (which you can find on the right side-bar) and, at that point, I was still turning on the mail server by hand using the command line. By now, I've done Postfix Enabler, and DNS Enabler, and we've gotten our accounting system up on OS X (as I had hoped for), and I keep going back to this article to see how else we can make it easier for other people to turn on all the things I talked about in the scenario. It's getting to be like a manifesto.

Posted at 1:04PM UTC | permalink

Mon 17 May 2004

Payments News

Category : Technology/paymentsNews.txt

Here's another interesting site that made a reference to ours : Scott Loftesness, and from which I've found Payments News, a survey of developments in the field of electronic payments. It's so interesting to find something just when you need it. I've been wondering why we couldn't just use PayPal to accept normal credit card payments, instead of having to sign up with WorldPay or Planet Payment or stuff like that.

I've learnt from this PayPal page that this is now possible to receive credit card payments from people who may not want to create a PayPal account (that wasn't possible before).

And I've learnt from this link on Payments News that there are further interesting developments at PayPal.

I've often wondered what's the point of doing all this writing. This is probably the answer, that I get to learn at the same time. That's the reward for taking part.

Posted at 9:56AM UTC | permalink

Usable Help

Category : Technology/UsableHelp.txt

I like to look up the web server log files to see how our site is being used and what information people are looking for. Occasionally, I find some very interesting sites that have made references to ours, and here is one :

Usable Help - "Examining documentation and help systems for software and consumer products." I think it's a very useful site for developers, with very interesting ideas. Definitely worth a visit.

Posted at 7:34AM UTC | permalink

Business @ the Speed of Stupid

Category : Technology/bizatspeedofstupid.txt

I picked this book up from the Special Offers bin yesterday and have been reading it since.

Business at the Speed of Light? More like, Business @ the Speed of Stupid - "a comedy and a tragedy in every chapter", according to an Amazon.com review. This ought to be required reading for users, business owners, and IT practitioners alike because "the business landscape is littered with the remains of thousands of technology ventures", and we need to get everybody to understand why this had happened and how we can do better.

While reading the book, I've been thinking about the comment I made in the last post about taking just eight weeks to bring a client-server-based application onto the web. If it gives a feeling of bravado, of the sort that comes out quite foolishly on the pages of "Business @ the Speed of Light", then I must hasten to add that a lot of trial and mostly errors had preceded it, through a couple of projects I did on the side, using other failed approaches.

I had learned, from the failures, to value the whole body of code that had already worked. And that the key to getting things done is controlling complexity, and not let the tail wag the dog.

So the point I was trying to make was that, when IT departments insist on issues like standardisation on the languages and platforms they had "blessed", above all other considerations, they may be underestimating the dangers they're exposing their business. They may look like they're simplifying things, but actually creating a combinatorial explosion of complexity. They like to say things like, "the web server must be .Net, or whatever, compliant, or we won't endorse it", and my stomach turns the way it's been described for many of the unfortunate souls who populate the "Business @ the Speed of Stupid" book.

Finding a way to get along with IT departments, managing the expectations of users, and living with the limited project management skills of the IT coordinators in-between - these are the hardest challenges facing external IT developers and consultants.

Posted at 5:51AM UTC | permalink

Sun 16 May 2004

About 4th Dimension

Category : Technology/4D.txt

We've used 4th Dimension for much of the last ten years. It's been good to us, so I wouldn't knock it. I believe that, in many ways, 4D was ahead of its time. So, while my kid's still having his nap (when he wakes up, he's going to climb all over me to take him out, and it looks like it's going to be a wonderful Sunday evening), I'm trying to see if I can do a comparison of my experience using 4D, against what I'm currently seeing using Xcode, Cocoa, and Java on Mac OS X.

Firstly, in the old OS 9 days, 4D sat in the middle of the spectrum, with FileMaker Pro at one end, and MPW and Code Warrior at the other. It's significantly harder for an end-user to build stuff using 4D than with FileMaker Pro. But you can build a lot more useful applications, more quickly, and with database access built-in, than coding with the lower-level languages in MPW or Code Warrior.

And it's a good complete software development platform. But I haven't used it for almost two years now, so I've gone and take a look at www.4D.com to see if the tools we've used are still there, and I think they are.

It's important to mention the 4D suite of applications because it was the way they were put together - 4D, 4D Server, 4D Insider, 4D Compiler, 4D for Oracle, etc. - that contributed a lot to our own productivity.

For example, with 4D, you can do development on a standard 4D standalone set-up. Or you can use the Server edition, and immediately be able to do development as a project team. While the server makes sure that you are not able to make changes on a piece of the project that another person is working on, you're very much working the same way as if you're working on your own.

I think 4D Server is a superior piece of technology. Even now, I'm trying to think about how we can duplicate this functionality using Java. 4D Server is an application server. You load the application you have written on the machine running 4D Server, and the users access the application from their machines, using an application called 4D Client. Everytime you need to give the users a new version of your application, you only need to go to the 4D Server machine, bring the system down, replace it with the new version, and when the users log in again from 4D Client, they all get the latest revisions. It's a real time-saver. If you have, say 50 or more users, you'll appreciate not having to go to each of their machines to do a new application system release.

Then there is the 4D Insider application. It gives you a very nice ability to look inside and analyse your application - e.g., you may need to know how many other methods or sub-routines are calling on a particular method or sub-routine, so that you can anticipate the kind of problems you're going to be facing when you start making changes to things.

Finally, 4D Compiler allows you to build really fat binaries, versions that will run on Mac (OS 9 and then X, but I hadn't use 4D with OS X much), as well as Wiindows, all from the same piece of code. This is something I miss. It was what allowed us to keep our Macs while working with PC-using customers all these years.

So, in summary, I want to say that 4D is a very expressive language, in the sense that you can express difficult concepts using it (in exactly the way that FileMaker Pro isn't), and you can build very powerful applications using it.

Oh, I forgot, it also has built-in multi-threading, even though OS 9 didn't. It allowed us to build applications where each window ran within its own process. 4D programmers ought to take advantage of this power because, once you've written a procedure and launch it within its own process, e.g., within its own window, you can continue to launch many other similar windows based on this same procedure, and not having to worry about variables being overridden, etc.

And it's this multi-threading mechanism which allowed third-party 4D plug-ins like Christian Quest's Internet-Toolkit (ITK) to work its magic. By the time the Internet came out, we already had a substantial body of code in 4D (about 50 to 70 MB of code - it was a large insurance application). Using the extra functionality that ITK added to the 4D language (and the fact that 4D was multi-threading), it was possible to build a very effective, fully functioning web server with only 600 KB of code. Joining this little piece of code to the larger application, we were then able to re-purpose the whole 4D application for the web, with just two months of added work (in other words, the insurance company we were working for was able to do transactions over the web, in just two months after we discovered and tried out ITK).

We should have gotten hero status for this particular piece of magic (the users were indeed delighted) but we somehow seemed to have drawn the ire of the corporate IT department - they seemed to have a problem with the fact that the web server wasn't Apache or something like jBoss, or WebSphere (you mean you wrote your own web server? what a waste of time.) So that's for another story but the system did well enough, from my point of view, for quite a while yet.

Which brings me to the point, why switch away from 4D, then? Actually, I have not yet decided if this, indeed is a final switch from 4D. It's still pretty good. Being years ahead of their time gives them that little bit of longevity, in terms of relevance.

But I'm finding that we're having too many battles to fight with corporate IT departments. First there's the Mac that we're fond of using. It's been tolerated but there's a suspicion that we'll go on proselytising and in no time Mac pockets will spring up all over the place and out of control (of the IT deprtment, that is). Also, no matter what the 4D corporation does to distance itself from the Mac (I think it tries to do that sometimes, and if that were true, perfectly understandable), I get questions like these from the IT department, when our system was considered for a wider use within their corporation :

"Was 4D originally written for Mac or IBM compatible hardware?"

What kind of a question is this? Why does it matter? I thought - I give up and wrote "4D came out initially on the Mac platform, just like Microsoft's Word and Excel. At that time, the PC was still in the character-based mode; so it broke new ground in its use of the graphical user interface, just like Word and Excel." And died on my own sword. I guess I should have done better.

So, we're doing Java to fight one less battle. As far as we're concerned, the hardware is non-negotiable. It's either the Mac, or get out of IT altogether, and a lot of this weblog is trying to work out why we can take such a strong stand on this utterly stupid position.

But I know we're more productive on the Mac. If I had an actual business that I'm running, rather than being the software developer or the consultant, I would still (most definitely still) be using the Mac.

But I'm finding that using Java, and showing some stuff on the Unix command line, does help break some ice with the mainstream IT people because we can quickly get beyond the sectarian issues and move on to grounds where we share common interests, like building write-once run-many applications, the power of object-oriented design, the potential of web services, etc. The IT guys, they're not all bad, just like not all the guys on the Apple side are the good guys. There are various shades of greys.

I'm supposed to compare 4D with the use of Xcode, Java, and Cocoa, but this piece is already the longest I've ever written at one go, and the kid's waiting and there's not much sunlight left. Perhaps the next time.

Posted at 10:55AM UTC | permalink

Fri 14 May 2004

Weblog and DNS Enabler Bug Fixes

Category : Technology/weblogbugfix.txt

There was a problem with the "Search This Weblog" function on the left side-bar. If there are more entries found than we've provided space for, there is a Read More... link at the bottom. The problem was that the Read More... anchor was acting funny. It didn't lead to the next set of entries properly. This has been fixed and the PHP code can be found in the Weblog article on the right side-bar.

Also, I wrote something called a DNS Enabler once to help people get around some problems when they're running a server behind an old Airport Base Station (the original ABS) - they're not able to "see" the server from machines sitting inside the local network, unless they run a local DNS server.

When Panther came out this little application broke and I never had the time to fix it. Until yesterday. I didn't think anybody needed it still until this week. So, that is also available for download from that page that talked about running an Internet server behind an Airport Base Station.

Now, that DNS Enabler is fixed, it's possible to build further on it. It's now programmed to identify a server on a fixed IP address (10.0.1.201) on an Airport network. But it should be possible to make it work with any user-specifiable IP address, and for multiple domains, and multiple servers.

The best interface I've ever used is QuickDNS Pro from Men and Mice, back in the days of OS 9. They've probably gone beyond the Mac, now. I'm thinking it's possible to do an interface quite like theirs, if imitation is the sincerest form of flattery. No, better do something different. If I can find the time.

So, the Mac's really good value for money, considering that you've got all these Internet services, built-in, out-of-the-box. They just need to be turned on and provided with configuration tools.

So we've got a lttle catalog of these : Sendmail Enabler, Postfix Enabler, DNS Enabler (no web page or tutorial for it, yet), and Luca. Hopefully, one day, you can go to this page and find all you need to turn on and run a business out of your Macs.

Posted at 1:06PM UTC | permalink

About Cocoa and Java, and Luca

Category : Technology/JavaCocoaSummary.txt

About six to eight months ago, when we thought of putting a Cocoa interface on top of our accounting system, there wasn't much information we can find about doing Cocoa development using Java. Even now. So this is what we've found.

First thing, we wanted to be able to do most of the common things we would expect to see on an Aqua interface, using Java instead of Objective-C, e.g., drawers, sheets, dialog boxes, the search mechanism, radio buttons, check boxes, pop-up menus, the notification mechanism, tables with hierarchical data views, page setup, print previews, etc.

(Oh, we forgot icons, when are we going to do icons?)

It's very difficult to find material on this but this page at Whiningdog.net helped. Not nearly enough, but it kept us going. Even things like printing and exporting - they're no cakewalk. I believe Hai Hwee had to be pretty tenacious to find the answers to doing all these things.

But we now know that it can be done. And that the Model-View-Controller paradigm works very well. We've retained the ability to use 60-70 % of the code as a webserver-based application, and we've abstracted out the database access, so we can plug in a wide range of databases. These were the two main reasons why we had to stick with Java. But we've got almost all the interface elements pinned down now, so we can concentrate on building the application.

The accounting application was written originally using 4th Dimension. Comparing the two, I'm impressed with the amount of code we didn't have to write using Cocoa.

For example, when you open up a lot of windows, you may be providing different views of the same piece of information from different angles. So when you change the data in one view, you want all the views to be updated quickly. I've written the code to do that myself in 4D, but it's always been pretty messy. Think about all the things you have to coordinate. But Cocoa's notification manager is really neat. You can set up the updating mechanism with just a few lines of code.

Another example is ability to show a hierarchical view of tabular information. Again, I wrote all the code to do that when I was using 4D. With Cocoa, it's a breeze. So I can immediately appreciate the benefits that Cocoa brings from the productivity angle. The best code is the code you don't have to write.

It's a wonderful development environment. I would like to show this to more Java programmers but I think, as usual, the thing that will come up again and again is the Mac's limited market share.

Anyway, if you're looking at Luca, look at the navigational aspects, the ability to relate one piece of information to another, and the thought that went into the data structures (I think MYOB can only do Chart of Accounts maybe four levels deep and we've asked ourselves why not any number of levels deep - the answer lies in the design of the data structures).

Luca may be no great shakes to look at now (from the romantic point of view), but the beauty that we're talking about is from the classical viewpoint (in Robert Pirsig's terms, as I've written about in "Awk", the classically-minded person is pre-disposed towards looking at things below skin deep).

The problem we wanted to solve was how to make the relationships between all these accounting figures clear, and how to prove the accuracy of the data through the ability to audit the information from many different angles. And then to take this ability and make it available through the web, through a client-server application, or through web-service calls, using largely the same body of code. We're not through with this yet, not by a long way. If you're interested to build on top of it, e..g, through embedding the system as a Jar library within a larger project, through the API's we're going to make available, just let me know.

Posted at 9:09AM UTC | permalink

Thu 13 May 2004

Luca Accounting Beta Release

Category : Technology/lucaBeta1.txt

Anybody interested in an OS X-based Accounting application?

Our Luca is now ready for download. It will work with a wide range of databases, but out-of-the-box we've made it work with MySQL and we've included an installer that will make it as painless as possible to set up and use a MySQL database.

It's also a demo of just what you can do with the combination of Java and Cocoa, if you're interested in such things. Due to some dependencies at the Java end, it will only work on OS X 10.3.3 onwards.

Posted at 12:59PM UTC | permalink

Wed 12 May 2004

A Weblog as a form of Chautauqua

Category : Commentary/chautauqua.txt

I'm finding that there is a close parallel between the mode of discourse made possible by a weblog, and the mechanism used by Robert Pirsig to link together the events and ideas he described in Zen and the Art of Motorcycle Maintenance.

If you don't mind, look at the discussion on this page that I've found :

"I would like to use the time to talk in some depth about things that seem important. What is in mind is a sort of Chautauqua Ñ that's the only name that I can think of for it Ñ like the traveling tent-show Chautauquas that used to move across America, [...] an old-time series of popular talks intended to edify and entertain, improve the mind and bring culture and enlightenment to the ears and thoughts of the hearer. ( Pirsig, p.17)

From the discussion that I linked to earlier : "The narrator sticks to this expression as well as to the lecture-form, the most defining element of the original Chautauquas, throughout the novel. He uses the term Chautauqua whenever he wants to present notions of a more theoretical kind: motorcycle maintenance, philosophy, technology, 20th century life, etc. These Chautauquas gain importance for the narrator on a very personal level, because the lectures become more specifically linked to the narrator's life. Still, he never abandons pointing out general implications, trying to come to conclusions at the end of the Chautauquas (although sometimes the end of one and the beginning of another are blurred). A wide range of topics is discussed, which seemingly also inspired the narrator to come up with the term chautauqua."

Note : "a wide range of topics is discussed ... these Chautauquas gain importance for the narrator on a very personal level, because the lectures become more specifically linked to the narrator's life ... never abandons pointing out general implications, trying to come to conclusions at the end of the Chautauquas (although sometimes the end of one and the beginning of another are blurred)."

That's what a weblog is like, isn't it. You can use it to lay out an idea that is very difficult to get across at one go. Especially when you're still trying to untangle the strands of your own thoughts. The weblog gives you the time to ruminate about a position that you've taken, find other situations from which you can draw implications that will either strengthen or weaken your convictions, and ultimately move you closer to better knowledge or a greater truth. If that ever happens, it doesn't matter if nobody else reads it because you've rendered a service to yourself.

Posted at 11:48AM 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.