|
Tue 10 Jul 2007
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.
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.
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 : 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.
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.
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 : 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
Thu 24 May 2007
Mail Servers and DNS
Category : Technology/MailServersAndDNS.txt
James Keating wrote me a question : Can we run two (or more) mail servers for a single domain? The answer is not a simple yes. Neither is it a no. And this had set me thinking. I reproduce my answer below in the hope that this can help other people understand mail servers better, as well as their relationship with the domain name system. Usually you run one mail server for a single domain. You can have other mail servers for that domain, but these are used as backups that will get the mail when the primary mail server is down. Start with the simplest case, where you have one mail server for the domain and this mail server sits on the machine you reach by typing its domain name. For example, ksd140.org sits on 207.63.165.6 and the mail server is also on that machine, on IP address 207.63.165.6. In this case, you don't even need to create an MX record. Second case, where the mail server sits on a different machine from the machine known as ksd140.org. For example, the mail server sits on a machine with an IP address of 207.63.105.131, reachable via a host name called mail.ksd140.org. Then you need to have an MX record in the Domain Name System to declare that mail.ksd140.org is performing the function of the mail server for the domain, ksd140.org. In DNS Enabler, this is specified as Hostname                 IP                   Alias mail.ksd140.org       207.63.105.131       MX[10]ksd140.org or, simply, Hostname                 IP                   Alias mail.ksd140.org       207.63.105.131       MX[10] because, if you leave out the domain name after the square brackets, DNS Enabler assumes that you're referring to the primary domain, ksd140.org. This is what happens when someone sends a message to james@ksd140.org. The originating mail server will check if there is an MX record for the domain, ksd140.org. If there is, it will follow that record and know that it has to send the message to the machine, mail.ksd140.org, which is acting as the mail server for that domain. If there isn't an MX record, it will send the message directly to the machine, ksd140.org. Third case, where you can have more than one mail server acting as mail servers for that domain, but these are secondary mail servers acting as backups for the primary mail server. For example, if mail2.ksd140.org on IP address 207.63.105.132 is the backup mail server for mail.ksd140.org, for the domain ksd140.org, then we will denote its status as a backup by setting it with a higher MX number : Hostname                 IP                   Alias mail.ksd140.org       207.63.105.131       MX[10] mail2.ksd140.org       207.63.105.132       MX[20] This is what happens when an originating mail server tries to send a message to james@ksd140.org and finds that the primary mail server is down. It will look up the MX records for the domain and see if it can find the next higher-numbered MX record to send the message to. If this is also down, it goes on down the line to the next record until it either succeeds in sending the message or fails entirely. Fourth case. We can have another mail server, not acting as mail server for the domain, but acting on its own right : Hostname                 IP                   Alias wmail.ksd140.org       10.10.2.99 In this example, this mail server is reachable only by machines on the internal private network, and it can be used as an outgoing smtp server for any mail client on the internal network. However, in this case, if we're using the MailServe setup panel, we must take care to enter wmail.ksd140.org into the Domain Name field, rather than ksd140.org, otherwise the Postfix running on wmail.ksd140.org will mistakenly hang on to all mail destined for users on ksd140.org. There is a fifth case, where wmail.ksd140.org acts as the mail server for another host machine entirely, say, host2.ksd140.org. For completeness, this is how we set up DNS Enabler : Hostname                 IP                   Alias wmail.ksd140.org       10.10.2.99       MX[10]host2.ksd140.org and then the Domain Name field in MailServe should be set as host2.ksd140.org, but I think your eyes are all glazed over by now and I'd better stop. All this is to say that our little programs, MailServe and DNS Enabler, can actually do a heck of a lot. Hope all these make sense.
Posted at 1:24AM UTC | permalink
Wed 23 May 2007
8000 Customers
Category : Commentary/8000Customers.txt
We've reached 8000 unique customers for our products. That may not seem like much. But it's a milestone nevertheless. If and when we hit 10,000. That will be something. 
Posted at 2:36PM UTC | permalink
Sun 06 May 2007
The White Road Journey
Category : Commentary/WhiteRoadJourney.txt
Gary Erickson, in "Raising The Bar - Integrity and Passion in Life and Business", makes a distinction between White-Road bike journeys and Red-Road ones. 
"We hadn't set out with a final destination in mind." Years later, Erickson, maker of Clif Bar energy bars for athletes, faced wth having to sell his company or to go on ahead as an independent entrepreneur, drew on his experience on the white-road jouneys to decide that it's the journey that's going to be the greater reward. This book is a great read of those of us who find ourselves lost, from time to time, on our own white road journeys - for you do get lost on those white roads. It's for remembering that being lost is part of the pleasure of the journey when you're not moving to the beat of someone else's drum. Life has a way of opening up interesting new vistas (and I'm not talking of the Microsoft kind), at the next turn, when you least expect it.
Posted at 8:12AM UTC | permalink Read more ...
|