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 21 Aug 2007

About the down-time this morning

Category : Commentary/downtime.txt

This web site was down for about 6 hours from 3.00 in the morning, which should have been its busiest time since it's daylight then in the Western hemisphere, and that's where most of our users come from, by far.

Or at least until China and India wake up to the potential for using the Mac, or until they can afford to buy them, whichever comes later).

Fortunately, I have two Internet lines coming into the house and I switched the server onto the other line when I discovered something was amiss when I woke up this morning.

When everything was settled and the server humming again on the backup line, I prepared to call the ISP of the line that was down. And this is where I've found the most use for Boot Camp.

It's often self-defeating, when you're calling on the techies of a Windows-centric ISP, to let on that you're using a Mac. So I just start up Windows XP on my iMac, and follow through with all the steps - one, look for the DOS prompt and enter this (cryptic) line so that you can find out where the router is, and then open Internet Explorer to enter the location of that router into it, etc. and etc. And I do this, content in the knowledge I can get the Mac to work once the PC manage to get on to the network.

Of course, on the Mac, you can get that router location just by looking into Network Preferences. But you'll never get past hello, once you say you're using a Mac. It's always the Mac's fault.

Anyway, my line's up again and I've switched the server back onto it since that's the much faster line. I use the other just for backup, for times like this, and for testing the live connection and other development jobs.

P.S. : Some updates. I was having a heck of a time getting SASL-based authentication to work again on Leopard. The good news is that I've found a solution to half of the problem (Postfix authenticating with another server as a mail client). The bad news is that I'm still stuck on the other half (Postfix acting as the SMTP server and authenticating mail clients for relay). But I am making some progress. So, is that breaking the NDA? I'll remove this note if it is.

Posted at 9:24AM UTC | permalink

Tue 10 Jul 2007

Downloads!

Category : Commentary/downloads.txt

Within 5 minutes of my putting up the Address Book Plug-In for download, there were two downloads.

And I see a horde coming in from Version Tracker right now for DNS Enabler. I've just updated it three hours ago. How does Version Tracker know? Is it a manual system or do they have a way to automatically track that I've updated my DNS Enabler page with a new version? I don't ever update Version Tracker myself anymore. I'd rather stick my head in the sand than read the reviews there.

But the point is - how can one ever feel alone? I can go hide myself in a cave somewhere, and as long as I have Internet access, I can feel that I'm jacked in to this collective mind. The Matrix exists.

Posted at 7:09AM UTC | permalink

Singapore Maps Address Book Plug-In

Category : Singapore/SingMapsAddBookPlugIn2007.txt

I've also found the time today to update the Singapore Maps Address Book Plug-In. You can download it from here.

I wrote some documentation on this sometime back. It's outdated but I don't have the time to update that yet.

Posted at 6:40AM UTC | permalink

DNS Enabler updated to 2.1.1

Category : Technology/DNSEnabler2dot1dot1.txt

I've updated DNS Enabler, thanks to a bug report from Paul Ruffolo.

The bug occurred when there is a domain, e.g. called ABC.com, and there is another, e.g. called xyzABC.com, which contains the same letters as the first domain. DNS Enabler got somewhat confused when it had to process both these domains in the same list. This has been sorted out and DNS Enabler is smarter now about these things.

Download DNS Enabler 2.1.1 from here.

Ever since I was a kid, I've somehow intuited that the thing I most love to do was to build things. And that the best job was to be a craftsman, a person who takes time to build things right. But I grew up with the emergence of mass industrialisation, in the days of the military-industrial complex, and my father was an Organisation Man, a salaryman.

So, to think that, as technology became ever so much more powerful, it's brought us back to the point where you can be a craftsman again, working from your own home, which doubles up as your factory/studio/shop/warehouse/service centre. It's like if you walk east right across the world, you'll eventually come back to the same point. You've got to believe in the ying and yang of things, in the ebb and flow of life. And that things change and you never walk in the same river twice.

P.S. : Okay, now that I've got all philosophical, there's this book I want to recommend - "The God Delusion" - it does give a jolt to one's perspective. It's quite convincingly argued, and if you're persuaded that there's absolutely no chance there could be a god, or the One God, then what do you make of the trees, and the overhanging vines, and the smell of the earth, and the water lapping the boardwalk, when you go for that long run in the forest. If there is no God, why is there beauty and evident vitality? Or is it all random?

Posted at 3:42AM UTC | permalink

Thu 28 Jun 2007

Building MySQL, PostgreSQL and SQLite-based Applications - Some Sample Code

Category : Technology/MavenDBSourceCode.txt

I've done up an example project to show how a Cocoa Objective-C application can access all three database systems in a simple, uniform, consistent way.

It's meant to show how we can already do quite useful things with the databases we create using Maven, with just a few lines of code.

I have a lot more code, of course, that I've used to create Maven and Luca. So I'm seeing how, as I go along, I can expose more of the database access API's that I've been using, and possibly open-source those framework code as well.

I've taken a different approach from using Apple's Core Data. I believe database access is too important to be constrained using a black-box approach. There's a need for control - where you need to know exactly what is going on in the interface between the user and the database. And yet there's a need for simplicity - where you want to be able to grab at the data and do useful things with it, fast. I believe there's way to marry both objectives. Hence I've created these database access frameworks. You get access to PostgreSQL and MySQL databases. And you can get at them across the network. Today. No need to wait for Core Data to implement these.

The Cocoa project (containing the sample code and the database access frameworks) is available on the Maven page.

Incidentally, I'm using Maven to try out new ideas on how to lay out and present my documentation pages. It's getting harder to do all these on a single web page, as I have been doing them for Postfix Enabler, DNS Enabler, etc.

Posted at 6:35AM UTC | permalink

iPhone

Category : Commentary/iPhone.txt

At last, Walt Mossberg's review of the iPhone. So, is this a ringing endorsement or what?

Next, watch the IT guys weep.

Posted at 6:06AM UTC | permalink

Sun 24 Jun 2007

Ideas Made To Stick

Category : Commentary/MadeToStick.txt

I got this message the other day from a guy called Martin. I like getting mail like these, especially when it's also laced with humour, but also because it helps point me towards what I need to do next. It's not just computer programming that's needed to build this site, but also writing, story-telling, presentation and design skills - it requires multiple intelligences - and you must want to be interested in developing all these to be enjoying doing this, day in and day out. So here's the message from Martin :

Your other software looks interesting but I can't figure out what it does. I bet you are losing thousands of sales because you aren't offering specific solutions to problems. A customer is always looking for a solution to a problem, so that's what you should offer. If you just offer software and state what it does in techno-speak, only geeks will buy it. Here's what I see on your site:

You: "MailCrap helps Mac users set up a totally buzzword-compliant exygon blickser in less than a minute, the Mac Way. It sets up XDRW, DAD3, FMAP and Ditchmail services, including support for XYZ and PJKT authentication."

Me: "WTF ????". [Note from Bernard : imagine that said in a British accent :-)]

Examples of customer requirements:

"I often take my MacBook on holiday but I can't seem to send email. I can receive it OK so why can't I send? What do I need to buy from you that will guarantee I can always send email?"

"When I go to a meeting I need to access files on my computer at home. But it is connected via a router. I've tried "Chicken of the NBC" and "Remote Crapper" but I'm darned if I can access it. I'd settle for accessing just one shared folder if that's all that's possible. What do I need to buy from you?"

"I don't want to subscribe to .mac. It's too expensive. I already have a domain name and a web server (or I already have a G4 at home that never goes to sleep). I just want to synchronise my Safari bookmarks and my Address Book on 3 computers. So what do I need to buy from you that will do the same job?"

Do you see what I mean? Your products might do a lot more than I require but you don't actually say so in language that I (and 99.999% of Mac users) can understand.

BTW the above examples are genuine requirements. I could use those and so could many other Mac users.

Best Wishes,

Martin (age 56)

Well, I know, too, there's a lot that can be done along these lines. Yeah, right, after I've figured out how to get SASLDB working (yet) again on Leopard ;-) But, seriously, those suggestions make sense. And I'd have wanted to be a writer or designer in other lives. So it's not like it's going to be all hard work. I would enjoy improving those pages. I just need to find the time.

But that's the great thing about being a so-called "free-agent". Life doesn't suddenly become a bed of roses but you do get to design your own ultimate, unique, one-size-fits-one job specs.

Just so happens that I'm also now reading a couple of books - "Ideas Made to Stick - Why Some Ideas Survive and Others Die" and "The Medici Effect - What Elephants and Epidemics Can Teach Us About Innovation". They're hugely relevant, within the context of the things I've just discussed. There's a whole world out there that is bigger than IT and programming. And they're all intersecting in strange, novel, and wondrous ways. Can only happen in this age. Couldn't possibly have happened before we've had computers and the Internet.

Posted at 8:35AM UTC | permalink

Mac OS X 10.4.10

Category : Commentary/MacOSX10dot4dot10.txt

I've updated my live Web, Mail and DNS server to Mac OS X 10.4.10, with all the latest security updates. All the services - web, mail, fetchmail, dns, ftp, webdav - continue to work OK.

So, it looks like it's safe to do the update, if you're wondering.

Posted at 6:00AM UTC | permalink

Fri 22 Jun 2007

Updated Maven Documentation

Category : Commentary/MavenDocuUpdate.txt

I've begun updating the Maven web page so that, hopefully, it'll be clearer now what this program does.

I'm planning to improve Maven in three possible directions. One is as a data modelling tool, so that a person can use it to create databases quickly and experiment freely with the data structures. What Maven does is to give the user choice in terms of the database system he wants to use because he'll be able to work across any of the three currently-supported systems (MySQL, PostgreSQL and SQLite3) in a very consistent way, and be able to move data easily across them.

Along this axis, as a modelling tool, I've already been able to help the user create databases, tables, fields, indexes (unique, non-unique and primary key), though I've still some way to go, missing the ability to create compound keys, specify default values and other constraints, etc. But I've also already now been able to create data structures that are mapped consistently to Objective-C data types, and that will sort and behave consistently according to their mapped Objective-C data types.

This last bit may appear puzzling but it'll be clearer to a developer when I make available the API's to the data access frameworks that I've been using. For example, when you use CocoaMySQL, the data that is pulled from the database gets converted into text when displayed in the tables. You lose their meaning as dates, NSData objects, number objects, etc. They've all become text and they're sorted like text. What I've tried to do with Maven is that the table columns remain faithful to their Objeective-C types, even after you've edited them. E.g., they come in from the database as dates, they get displayed as dates, when modified they keep their character as dates, and when dragged and dropped, the receiving application can work with them immediately as NSDates, no conversion neded.

I know Apple is offering Core Data but that currently only works with SQLite3 databases, standalone. If you want PostgreSQL or MySQL, and you want distributed multi-user databases, you're out of luck, you have to wait.

Even inside Core Data, it does too much magic, and I really need more control over the data access, computation, save, commit and roll-back mechanisms. And I believe that other developers who do database-intensive work will also think the same way. So there's probably a need for such a framework and for sharing such a framework, so that we can create inter-operable applications. So that's the second axis I can work on with Maven and that is to make the frameworks that I have been using for Maven, and for Luca, available for other people to use.

Finally, Maven currently has a rather simple way of pulling out data from the database. You can drag and drop tables and field names to build a query and to run it and to edit the query to make a custom query. But there's no fancy footwork here, yet, and there's no way to specify filters to refine the search. In the Windows-world they have some tools that do these adequately - MS Query, GQL, Data Prism/Pivot, and whatever their descendants are called today, etc. The Mac needs more of such tools badly. And maybe we can do better, with the kinds of controls that Cocoa affords us. It was the data access frameworks that we used to lack. Now I believe that is solved. So there's no reason we can't make faster progress with the data mining aspects of these tools. So that's the third axis I believe I can work on, to maybe help spur other Mac developers to think about delivering them.

So that's for Maven, for now.

Posted at 2:20PM UTC | permalink

Tue 19 Jun 2007

Learn. Code. Repent.

Category : Commentary/LearnCodeRepent.txt

I know this guy. His name is Joe Goh. He developed FunkeeStory, an SMS/MMS backup/viewer for the Treo, which I don't use. But I'd seen his work. He's a craftsman. Quality befitting a Mac.

He wrote this switcher story about his trials and tribulations as an indie Mac developer. It's funny (in a laugh-till-it-hurts-real-bad way), and it's true. The story is told in Keynote. Who have thought to use Keynote in this clever, time-saving way? Here's a direct link to the pdf download. Over to you, Joe.

There's this one particular slide headlined, "Learn. Code. Repeat." Funny, I read the line, the first time, as "Learn. Code. Repent." Must be something subliminal.

Posted at 2:52AM UTC | permalink

Mon 18 Jun 2007

The Accounting Game : Basic Accounting Fresh from the Lemonade Stand

Category : Commentary/TheAccountingGame.txt

I was updating our feedback page (you know, the one containing The Mail We Love to Get) so that it'll also include the messages we've been getting about Luca, when I came across this reference to "The Accounting Game : Basic Accounting Fresh from the Lemonade Stand".

I have a reference to "Essentials of Accounting" by Robert N Anthony on the Luca page because that was the book that had finally helped me understand accounting enough to create an accounting application that an accountant would accept.

One of the ways I had meant Luca to be used is as an accounting system you could use interactively when you're reading the Robert Anthony book, entering the book examples into the system, and seeing the different views that result from the data - Balance Sheet, Profit & Loss, etc.

But Paula Hay, who's been trying out Luca, has offered another book that looks really interesting :

"I do have another book I am using in just that way. It's called 'the Accounting Game' and it is based on a narrative of a little kid setting up a lemonade stand. It's put together almost like a comic book, perfect for super-newbies like me: http://tinyurl.com/yeqcb4"

Looks like a book I absolutely must read, next, judging from the Amazon reviews.

Posted at 3:35PM UTC | permalink

Luca and Maven

Category : Technology/LucaAndMaven.txt

I've updated Luca and Maven.

Luca is just a minor bug fix. (Thanks to Sam Pipe for spotting and reporting it).

But Maven has just gotten more useful and, maybe, a lot more usable. Maven is like CocoaMySQL, except that it works with the three popular SQL database types - MySQL, PostgreSQL and SQLite3, and it tries to provide a common interface for a user to work across all three.

I've added the ability to create and delete databases, and to switch between databases. With this in place, I'm finally able to do what I've been wanting to do for a long time - to drag and drop tables and field structures between databases, and across database of different types.

It's quite fun to be able to do this now. I'm going to see if this is going to help me build deeper database functionality into Luca a lot faster from now on.

With this version, I've added the ability to create and drop indexes. including primary, unique and non-unique keys.

Things to do next - Drag and drop contents (not just the structure) between databases of different types. Need also to handle the setting and editing of Null, Non-Null values, default values, compound keys and other constraints.

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