David Sinclair's blog

Tweeps 2.1 released

Version 2.1 of my new iPad and iPhone app, Tweeps, has just been approved, and is now available on the App Store.

You can get it at no cost, too. I've decided to make it completely free. Tell your friends!

The two major additions in this release are support for iOS 4, and for the new iPhone 4 device.

The recent iOS 4 operating system release added multitasking and a number of other great enhancements to devices that support it. Tweeps 2.1 now fully supports fast app switching. There's nothing Tweeps can usefully do in the background, but the convenience of flipping from another app (e.g. your preferred Twitter posting client) to Tweeps and back is very useful.

This update also includes a number of minor bug fixes and tweaks to support other changes in iOS 4.

Apple's new iPhone 4 is a very nice little device. One of its key enhancements is a beautiful new "retina display" — twice the resolution of older iPhone devices, with pixels smaller than the human eye can see. Tweeps 2.1 adds higher resolution icons and other images so it looks even better on the iPhone 4.

Learn more about Tweeps, or get it for free now:

TrialPay Store

A few weeks ago I added a new payment processor to my site: TrialPay, which I mentioned in a previous blog post.

It's a great deal for my customers, as they can get automatic discounts when buying more than one app at the same time, or by try a third-party product that they might have been interested in anyway. And it's a great deal for me, as the discount offers cover the cost of the payment processing, so I get 100% of the money my customers pay for my apps, instead of losing a few percent to the payment processor.

I've been very satisfied with the service. When I first set it up, my contact at the company was extraordinarily helpful, with prompt replies to my queries, and doing much of the setup work for me, or providing plenty of info on the steps I had to do. I was quite impressed.

So I'd like to recommend their service to other Mac developers. It's a great way to offer quick-and-easy payment processing that gives your customers a great deal.

Here's my referral link. If you use this to sign up as a TrialPay merchant, I'll get a $500 referral bonus, and you'll get a $250 Amazon gift card by way of thanks. More details on their site.

TrialPay Referral Program

DSActivityView updated for iOS 4

This blog post has been replaced by a newer edition.

Please see blog posts on DejalActivityView.

DSActivityViewI've committed a minor update to the DSActivityView open source project for iOS. See the DSActivityView introductory post for more information, including a video demo.

This update adds a new prefix to the class methods to create the activity view, to make it more clear that they return a retained object, rather than autoreleased.

So you'd now display the activity view via something like this:

[DSActivityView newActivityViewForView:self.view]

This update also includes a bug fix for iOS 4, where the activity view would appear behind the keyboard.

It is compatible with iOS 3.0 and later, including iOS 4, on iPad, iPhone and iPod touch.

You can get the project from my Dejal Open Source Subversion repository via this Terminal command:

svn checkout http://dejal.svn.beanstalkapp.com/open/DSActivityView

Or browse the source directly on the web.

Mariner Software acquires Narrator

Big news: my first Mac OS X application, Narrator, an app to read out stories and interviews in multiple voices, has been acquired by Minneapolis-based Mariner Software, Inc..

Mariner Software produces several Mac apps, including MacJournal, Mariner Write, Mariner Calc, StoryMill, and many more, plus apps for Windows, iPad, and iPhone. They're a great fit for Narrator, since they already have a focus on writing-related products.

So why did I decide to sell Narrator? It comes down to a lack of time. I'm basically a one-man shop: I do development, support, marketing, administration, and more, all myself. I sometimes use contractor assistance for development projects or graphic design, but the vast majority of the work I do myself. I also do contract work. So I have to prioritize my time: I can only devote so much time to each product.

Narrator was originally written back in 2002 as a fun exercise to learn the Cocoa frameworks. Then version 2 was a complete rewrite in 2008 as a way to learn Core Data and other modern technologies. But while speech technologies have always been a bit of a hobby interest with me, I haven't had enough time to enhance Narrator further. Which is a pity, as I and Narrator users have had lots of great ideas for enhancements to the app.

I finally came to the conclusion that since I couldn't give Narrator the attention it deserved, I had a choice: I could discontinue it, or let some other company take over its development.

I didn't want to discontinue Narrator, since it has such great potential, and is relied on by lots of customers, including schools and writers. So to better serve the app and its users, selling Narrator was the best option. Fortunately, Mariner Software came along at the right time, and seemed a perfect fit, since they have the resources to support multiple products, and already have apps that focus on the writing and educational markets where Narrator is most popular.

This is great news for Narrator users.

We'll make the transition as easy as possible for existing customers. Until the official switchover, you can continue to buy and get support for Narrator via the Dejal site. And once it is moved to the Mariner site, licensed users will be able to upgrade to the Mariner-branded edition of Narrator for free.

Stay tuned for news of when the changeover will occur, and further details.

Time Out 2 icon

As many of you already know, I've been planning version 2 of Time Out, my handy break reminder tool, for quite some time.

I actually started work on it about a year ago, but then got distracted by iPhone and iPad apps, with some experimentation, an abandoned project, and finally Tweeps, my iPhone and iPad app to manage Twitter accounts. But now I'm back working on my Mac apps, with Simon 2.6 underway currently, and resuming work on Time Out 2 next month, at long last.

Anyway, in preparation for this major upgrade, I wanted to design a new icon for Time Out. The current icon (seen above) is actually not all that old; the app originally had a really ugly icon. But while I mostly like this icon, it isn't perfect. The bezel around it isn't shaded properly, and a number of people are put off by the yoga figure in the background; it can offend the sensibilities of some people for religious or philosophical reasons.

I'd like your help.

I'm not sure what design to use for the new icon. I've enlisted the help of a professional icon designer, but I don't want to waste his time in sketching notions when I don't know what I want. Can you help me?

When you think of taking a break, what image springs to mind?

If you use Time Out now, what image would you prefer to see during the breaks? (Note, Time Out 2 will have more versatile break options, so you won't have to see the icon then at all. But imagine what better image could be used in the current version.)

Have a think about that before reading on.

My own notions tend to be similar to the current icon. A clock, much like the current icon, but with an improved design. Or a stopwatch, or perhaps a kitchen timer, or even a pocket watch.

One fun idea I had was to draw wedge segments over the icon when it's in the Dock, or in the app, to show when upcoming breaks are due, and how long they are. If the icon were a clock, it could have live clock hands showing the current time, with colored segments representing the breaks that are coming up over the next hour. That could also work with a kitchen timer or perhaps stopwatch design. But since Time Out 2 won't have to be running in your Dock, this idea may not be all that useful, so the icon doesn't necessarily have to be constrained by it.

Anyway, I'd love to hear from existing Time Out users or potential users. What are your icon design ideas? Let me know in the comments or contact me privately.

Minority Report-like interfaces from TED

As readers of my blog may know, I'm a fan of multi-touch and similar gestural interfaces. Here's a recent video from the TED conference, from a consultant for the movie Minority Report, demonstrating interacting with data via gestures:

"I could care less"

One of my pet peeves:

Tweeps 2.0 released

I previously mentioned that version 2.0 of my new iPad and iPhone app, Tweeps, was in the approval queue. Well, today it was approved, and now it's available on the App Store.

You can get it at no cost, too, if you're quick — in celebration of the 2.0 release, I've made it free for a limited time. Tell your friends!

The two major additions in this release are the iPad support, and OAuth support.

The iPad support was of course the biggest change, with a new sidebar and expanded content to take advantage of the increased screen space.

But the OAuth support was a more important change, especially for iPhone users. Without that, Tweeps would have stopped working after June, if Twitter sticks with its plan to turn off the old-style authentication. Tweeps uses xAuth, which is a more convenient variation of OAuth; you still enter your username and password in Tweeps, and it authenticates via a complex dance of exchanging tokens and such. Once you've authenticated once (via a secure connection), Tweeps doesn't need to send the username and password again.

Learn more about Tweeps, or get it for free now:

Building Universal iPad/iPhone apps

Warning, developer topic... uninterested customers can skip on to the next post....

I was having difficulty getting my new app, Tweeps, working as a universal app: running natively on both iPhone and iPad from one binary.

For some reason, I was in a Mac universal mindset. For Mac apps, a universal app uses two separate targets: one for PowerPC, one for Intel. This is necessary since they are of course very different architectures, so have to be compiled separately.

In iPhone OS, that isn't the case — both iPhone and iPad have the same processor architecture, so both editions can use the same code without needing conditional compilation.

However, there are important differences. Currently, iPhone (and iPod touch) is on iPhone OS 3.1.3, whereas iPad is on OS 3.2. The iPhone can't use OS 3.2, and iPad can't use 3.1. So extra steps are required.

The way this works is to set the Base SDK to the latest one you want to use (in this case 3.2), and the Deployment Target to the earliest you want to support (3.1). You can then use any available APIs from 3.1 and earlier with impunity, and can use APIs from 3.2 if you check that they are available before using them.

The recommended way to check for a new method is to use +instancesRespondToSelector:. For example, 3.2 renames the method to hide the status bar. So to use the new method if available, or fall back to the old method, you'd write:

    if ([UIApplication instancesRespondToSelector:@selector(setStatusBarHidden:withAnimation:)])
        [[UIApplication sharedApplication] setStatusBarHidden:hiding withAnimation:YES];
        [[UIApplication sharedApplication] setStatusBarHidden:hiding animated:YES];

Sometimes, you need to take alternative code paths depending on whether you're running on iPad or iPhone. So the way to do that is:

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

I used the following definition to save some typing:

#define IS_IPAD        (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

That's all fine and good. But things get more curly when you want to use new classes. Apple's TopPaid sample code demonstrates the best way to handle this. You can load different xibs depending on which device you're running on, to set up the root views (e.g. to use a split view or a navigation controller). Each xib would load a different controller, which would contain relevant properties for each view.

There's one final gotcha that caused me trouble recently: you have to be careful about programmatically allocating newly introduced classes. If you run and it crashes with an error like the following, this is the issue:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController

The solution is to use NSClassFromString to resolve the class name, like so:

    Class popoverClass = NSClassFromString(@"UIPopoverController");
    if (popoverClass != nil)
        popoverController = [[popoverClass alloc] initWithContentViewController:contentViewController];

What got me was that this is necessary even in code only called on iPad, which I thought counter-intuitive. But it makes sense on further reflection, as the dynamic nature of ObjC means that it wants to resolve all class references when loading the bundle on startup — it doesn't know that that code won't ever get called if the current device happens to be an iPhone.

I hope this helps others having difficulty building universal iPhone/iPad apps.

Tweeps 2.0 in the review queue!

Last night I submitted version 2.0 of Tweeps, my new iPhone OS app to easily manage Twitter accounts, to Apple for review prior to appearing in the App Store. I have no idea how long it'll take Apple to review and approve it, but I'd anticipate it being available sometime next week. Follow the Dejal RSS feed or @dejal on Twitter to be notified when it is available.

In celebration of the impending Tweeps 2.0 release, I've now made Tweeps completely free! This is just for a limited time, so go get Tweeps for free now!

It's been about two months since Tweeps 1.0 was released. The 2.0 update includes a number of changes, the main one being native support for iPad, which is why I think it deserves the 2.0 designation. There are some major changes to support the extra screen space, including a sidebar / popover like the Mail app and others use, and lots of other changes.

Another big change is invisible, but essential: it now uses xAuth to authorize the accounts with Twitter. This is a more convenient variation of OAuth, which will be required for Twitter access by the end of June. Tweeps has the same convenient username and password fields as before, but now uses xAuth to log in to the Twitter service. Any Twitter clients that don't support this by the time Twitter disables the old mechanism will stop working.

This new version also includes some fixes for iPhone usage, and should be more compatible with the forthcoming OS 4.0, though some further tweaks may be needed for the final OS release. Note that it now requires a minimum of iPhone OS 3.1.

One unfortunate casualty of the xAuth change is that I had to disable the feature where you can edit your avatar image from within Tweeps. I just couldn't get it working without crashing the library used to handle OAuth. I'll restore this feature in a future update if f I can solve this issue.

I've been working on Tweeps for almost a year, though mixed with other work, so actually about three man-months of work. Still, it's been quite a sizable project, and very gratifying to achieve the 2.0 release. I have a number of ideas for improvements in future versions, if there's sufficient customer interest, though first I've got several updates of my Mac apps to do.

Anyway, get Tweeps for free now, and you'll automatically get the 2.0 update when it is available.

Caboodle 1.3.6 released

Another minor update, this time for Caboodle, my lean clean snippet machine — a simple app to store text, graphics, PDFs, or other attachments for later access.

As with the recent Simon 2.5.7 and BlogAssist 2.2.5 updates, I'm planning on dropping Tiger support for the next feature update of Caboodle. I'm hoping to get to that in a few months, after I release Time Out 2. Dropping Tiger support will really benefit Caboodle, since it is currently held back by some legacy technologies, which I'll be able to replace with more modern tech. I'm looking forward to working on it.

Download Caboodle 1.3.6 now!

BlogAssist 2.2.5 released

I've just done a minor fix update for BlogAssist, my handy tool to help with HTML markup.

As with the recent Simon 2.5.7 update, I'm planning on dropping Tiger support for the next feature update of BlogAssist. That may not be for a while, though; I have updates of Tweeps, Simon, Time Out and Caboodle scheduled before I get back to BlogAssist. This is a simple app that does its job well (I use it every day), but I do have some great plans for it when I do get back to it in my development schedule.

Download BlogAssist 2.2.5 now!

Dejal site tweaks

Over the weekend I made a few changes to the Dejal website.

One was somewhat trivial on the surface, though required updating several pages: I increased the page width from 900 pixels to 980 pixels, which is the same width Apple and others use. 80 pixels doesn't sound like much, but it gives a little more room for page content. If things look wacky, try reloading; you may have a cached CSS file from a previous visit.

The wider page also gave room for a new tab in the page header: iPad. This new page lists my vast collection of iPad software... namely Tweeps. Though as I write this, the iPad edition of Tweeps isn't released yet, but this was in preparation for that momentous occasion.

I do plan on adding more iPad apps in the future: I want to do iPad editions of at least two of my Mac apps, Simon and Caboodle. I probably won't have time to implement either this year, but they'll come eventually.

Similarly, I added an iPad block to the sidebar, between the Mac and iPhone ones, to make it really easy to see what apps are available for each platform.

Another change was the introduction of a new TrialPay-powered Dejal Store, using their new e-commerce solution. I have made that the default store (for most Mac apps), as it has some advantages over the PayPal-based store. For customers, it has the ability to give automatic discounts when you buy more than one of my apps. Plus you can get a big discount by accepting a third-party offer — for something you might be wanting to buy anyway. And it benefits me, as there are no transaction fees — the discount offers pay for the service. Try it, and tell me what you think.

I already had an experimental TrialPay store before, which has now been expanded to the same set of Mac apps. This is now called the Get It Free store. This is similar to getting a discount when outright buying one of my apps, except that you get the app completely free! Here's how it works:

Take a look and get an app for free!

I have a few more changes planned. One is to add some smaller feature boxes to the home page. Currently, there's a single large feature graphic at the top of the page, highlighting the latest significant release, but I'd like to be able to highlight other recent updates of note, and make it easier to see what apps I offer. I've experimented with mockups of a few designs, but this is my current favorite:

What do you think?

I've also been debating on whether or not I should keep the latest blog post on the home page. I kinda like it, as it makes it easier for people to see, but some blog posts perhaps don't really belong in such a prominent position.

So, I posted my first poll last night, asking how people read the Dejal Blog — via the RSS feed, Twitter mentions, on the Blog page, on the home page, etc. Please take a moment to cast your voie in the poll. (If you saw it yesterday and weren't able to vote, try again; it is now open to anonymous voters.)

More Tweeps for iPad screenshots

As promised last week, here are a few more screenshots of the iPad edition of Tweeps, my new iPhone OS app to easily manage Twitter accounts.

Firstly, the Find Others view in landscape. You can use it to quickly locate any Twitter user. You can search for a person's name, a company or brand name, or a username. If you know the exact username, you can prefix it with an "@" to skip the search results and go straight there. On the iPad, a "Recents" popover is displayed, that includes your recent searches, making it even easier to search for them again:

In portrait orientation, the sidebar is in a popover, like in Mail etc (here's the list of people who follow you... which may get some further improvements before release):

And lastly, another landscape view, this time the Mentions list — tweets that replied to you or mentioned your username:

Stay tuned for more screenshots next week!

Remember, you can still apply to become a Dejal beta tester to try Tweeps 2 now, or buy now to get it at the version 1 price.

Simon 2.5.7 released

Simon, my flagship Mac app to monitor websites and servers for changes or failures, has been updated to version 2.5.7. It includes just a couple of changes, but is a recommended update for everyone:

  • Fixed a bug in the Port plug-in where it would misbehave if the text to receive or send started with a "-" character. This could affect many people, as the default Incoming Email (POP) service uses this when the server doesn't accept the login.
  • Fixed an issue where a notification could fail if the TestChangeCount, TestFailureCount or TestRecoveryCount variables are used.

Please note: version 2.6, currently scheduled for release in July, will require Mac OS X 10.5 (Leopard) as a minimum OS. So (unless there are any further bug-fix releases) this will be the last version that supports Mac OS X 10.4 (Tiger).

Download Simon 2.5.7 now!

Tweeps for iPad ready for beta testing

Here's an update on the iPad edition of Tweeps, my new iPhone OS app to easily manage Twitter accounts.

I mentioned in my post last week that I wanted to have Tweeps 2.0 released in time for the US 3G release, which is today. I wasn't sure I'd make it, and a few days ago I decided that there wasn't enough time to do proper testing and get it through the approval process, so my new goal is to beta test it during May, and have it in the App Store for the international iPad release, around the end of May.

I know that some people will be disappointed by the delay, but I don't feel comfortable rushing it out without adequate testing. I pride myself on releasing quality products, and that's more important than an arbitrary self-imposed deadline.

But all is not lost. If you want to try Tweeps 2.0 now (on your iPad or iPhone), you're welcome to apply to become a Dejal beta tester. Tweeps is a Universal application, so works natively on both iPhone and iPad. Only a few of my existing beta testers have notified me of iPad device IDs, so I'm keen to get some more iPad testers. I'll do the first beta release once I have a few more.

As a reminder, Tweeps 2.0 will be a free update for existing customers, but will have an increased price for new purchasers. So buy now to get it at the cheaper price!

Here are a few screenshots of Tweeps on iPad. Firstly, the Profile view. Notice the sidebar providing quick access to the other views, and more spacious avatar and other info (only bug here is the count badges are truncated on the left):

In portrait orientation, the sidebar is in a popover, like in Mail etc (here's the integrated map view):

And lastly, editing the location — you can edit it here, and see the location on the map (or find your current location), or edit it on the Profile view simply as text:

Stay turned for more screenshots next week!

Apply to become a Dejal beta tester to try Tweeps 2 now, or buy now to get it at the version 1 price.

Tweeps for iPad sneak peek

I am currently working on the iPad edition of Tweeps, my new iPhone OS app to easily manage Twitter accounts.

My current goal is to have Tweeps 2.0 released in time for the US 3G release, in just over a week's time. I'm not sure if I'll be able to make it, and of course that depends on a quick approval by Apple, but I'll try!

Tweeps 2.0 will be a free upgrade for existing customers. It is a Universal application, so available as one edition for both iPhone and iPad. I plan on increasing the price for new purchasers. I'm currently thinking of $4.99, with a limited-time special price of $2.99 to ease the transition. So buy now to get it at the cheaper price!

Here's a sneak peek of the current progress; the view I was working on last night: the Edit Avatar view in portrait. There are a couple of issues with this view currently, but otherwise it's fully functional:

Creators Admit UNIX, C Hoax

When looking through my old documents archive, I came across the following, saved in 1997. I don't know who wrote it or where it came from originally; it was probably written even earlier. If anyone knows, please let me know in the comments. But it's still just as funny (to a programmer, anyway):

In an announcement that has stunned the computer industry, Ken Thompson, Dennis Ritchie and Brian Kernighan admitted that the Unix operating system and C programming language created by them is an elaborate prank kept alive for over 20 years. Speaking at the recent UnixWorld Software Development Forum, Thompson revealed the following:

"In 1969, AT&T had just terminated their work with the GE/Honeywell/AT&T Multics project. Brian and I had started work with an early release of Pascal from Professor Niklaus Wirth's ETH labs in Switzerland and we were impressed with its elegant simplicity and power. Dennis had just finished reading 'Bored of the Rings', a National Lampoon parody of the Tolkien's 'Lord of the Rings' trilogy. As a lark, we decided to do parodies of the Multics environment and Pascal. Dennis and I were responsible for the operating environment. We looked at Multics and designed the new OS to be as complex and cryptic as possible to maximize casual users' frustration levels, calling it Unix as a parody of Multics, as well as other more risque allusions. We sold the terse command language to novitiates by telling them that it saved them typing.

Then Dennis and Brian worked on a warped version of Pascal, called 'A'. 'A' looked a lot like Pascal, but elevated the notion of the direct memory address (which Wirth had banished) to the central concept of the language. This was Dennis's contribution, and he in fact coined the term "pointer" as an innocuous sounding name for a truly malevolent construct.

Brian must be credited with the idea of having absolutely no standard I/O specification: this ensured that at least 50% of the typical commercial program would have to be re-coded when changing hardware platforms. Brian was also responsible for pitching this lack of I/O as a feature: it allowed us to describe the language as "truly portable".

When we found others were actually creating real programs with A, we removed compulsory type-checking on function arguments. Later, we added a notion we called "casting": this allowed the programmer to treat an integer as though it were a 50kb user-defined structure. When we found that some programmers were simply not using pointers, we eliminated the ability to pass structures to functions, enforcing their use in even the Simplest applications. We sold this, and many other features, as enhancements to the efficiency of the language. In this way, our prank evolved into B, BCPL, and finally C.

We stopped when we got a clean compile on the following syntax:


At one time, we joked about selling this to the Soviets to set their computer science progress back 20 or more years.

Unfortunately, AT&T and other US corporations actually began using Unix and C. We decided we'd better keep mum, assuming it was just a passing phase. In fact, it's taken US companies over 20 years to develop enough expertise to generate useful applications using this 1960's technological parody. We are impressed with the tenacity of the general Unix and C programmer. In fact, Brian, Dennis and I have never ourselves attempted to write a commercial application in this environment.

We feel really guilty about the chaos, confusion and truly awesome programming projects that have resulted from our silly prank so long ago."Dennis Ritchie said: "What really tore it (just when ADA was catching on), was that Bjarne Stroustrup caught onto our joke. He extended it to further parody, Smalltalk. Like us, he was caught by surprise when nobody laughed. So he added multiple inheritance, virtual base classes, and later ... templates. All to no avail. So we now have compilers that can compile 100,000 lines per second, but need to process header files for 25 minutes before they get to the meat of "Hello, World".

Major Unix and C vendors and customers, including AT&T, Microsoft, Hewlett-Packard, GTE, NCR, and DEC have refused comment at this time. Borland International, a leading vendor of object-oriented tools, including the popular Turbo Pascal and Borland C++, stated they had suspected this for a couple of years. In fact, the notoriously late Quattro Pro for Windows was originally written in C++. Philippe Kahn said: "After two and a half years programming, and massive programmer burn-outs, we re-coded the whole thing in Turbo Pascal in three months. I think it's fair to say that Turbo Pascal saved our bacon". Another Borland spokesman said that they would continue to enhance their Pascal products and halt further efforts to develop C/C++.

Professor Wirth of the ETH institute and father of the Pascal, Modula 2 and Oberon structured languages, cryptically said "P.T. Barnum was right." He had no further comments.

Tweeps for iPad

I got my iPad on Saturday, and spent much of the weekend playing with it. The iPad really is a magical device — as Arthur C. Clarke said, "Any sufficiently advanced technology is indistinguishable from magic."

I don't really have much to add to the numerous commentaries, reviews, and discussions on the interwebs. So suffice to say that I think it's a great device, and will only get better as OS upgrades and software updates enhance it.

Kudos to developers who provided iPad-native updates for the initial release. It takes a lot of bravery to release an app without ever trying it on a real device. For the most part, the risk paid off for them, though many of the apps have some issues, varying from UI malfunctions to crashes, which the developers are scrambling to fix.

Personally, I decided to wait for my iPad before I released Tweeps for it. Though part of that was due to a lack of time, since Tweeps 1.0 was only released a few weeks ago, then I was away on a cruise. But I think I would have been rather hesitant to do a release without live testing, even if I had enough time.

Anyway, work on the iPad edition of Tweeps is underway. It will look much like in the previously-posted mockups. I'll give my existing beta testers a first chance to try it, then will open it up to others.

One point I wanted to emphasize: Tweeps will be a Universal app — so it will run natively on iPad, iPhone and iPod touch, from one app. If you've already bought Tweeps, you'll get the iPad edition for free! If you haven't bought Tweeps yet, you can get it now at the special introductory price, and will get the iPad edition at no extra cost. I'll be increasing the price soon, so don't miss the low-low price.

Here is my latest design mockup again; see the previous post for more views (click to see full-sized):

15th wedding anniversary

Fifteen years ago today, Jennifer and I got married. Actually, technically it was yesterday, since it was in New Zealand, but we ignore the time zone differences. It was April 2, 1995.

Ours was a rather unusual story at the time, though not so much anymore. You see, we met via the internet, before most people had even heard of the internet. Before there was a web browser (or at least before we had heard of one: Mosaic technically was released a couple of months earlier).

Back in 1993, I was attending the University of Auckland in New Zealand, and Jenn was at Lewis & Clark College in Portland, Oregon, USA. I was using the FirstClass BBS client software on my Mac, while she was using a text-based terminal at her part-time job at the college.

We were both fans of Star Trek, so were reading the rec.arts.startrek.current newsgroup via Usenet, and met via a posting there on June 18, 1993. We switched to email, and quickly became friends, and developed deeper feelings as we got to know each other better. This was all via text communication, so we discussed all sorts of things, and got to know each other really well. We still have a foot-high stack of printouts of our early discussions.

It doesn't seem so strange to have e-friends nowadays, that you've never met in person, but back then it was definitely not the norm.

In due course, it was evident that we were in love. So we talked about getting together in person — remember, we were separated by nearly 7,000 miles of ocean, and just had emails and a few photos and other airmail correspondence. So on February 3, 1994 I flew to Sea-Tac and we met in person. So the first time we saw each other in person was at the gate in Sea-Tac (this was before the increased security, when non-travellers could go right to the gates). I stayed with Jenn in Portland for 5.5 weeks, getting to know each other even better, and exploring the area. Then I headed back to Auckland.

Yes, I had hair back then, or some anyway. :)

Our odd long-distance relationship continued, though that time apart was quite difficult for both of us. On August 17, 1994, Jenn moved to New Zealand, and on October 15, 1994 on Long Bay beach near the water edge, I proposed, and she said yes.

We set the wedding date for halfway between our birthdays, on April 2, 1995. (For some reason, we didn't want to get married on April 1. Go figure!)

We've always been ones to do our own thing, and our names were another example. My surname was originally "Lambert", but rather than Jenn taking my name, or using a hyphen or other convention, we decided to both adopt a new name of our choosing. We decided on "Sinclair", and I legally changed my name, then she took it when we married (seems much easier for women to change their names when getting married).

Our wedding was in our own style, too. We didn't want a big fancy traditional wedding, so we opted for a small informal affair on our favorite beach, Long Bay. We rented a shelter for the reception, and had the ceremony on the adjacent grass overlooking the beach. The ceremony was conducted by my late grandfather, who was a minister and came out of retirement for us. That was very special. And since we were (and still are!) unashamed geeks, our wedding cake had bride & groom Macs on top (see the photo).

Since meeting via the internet was so remarkable back then, we were interviewed by a local newspaper and TV station, who filmed our wedding. Some of the best footage of our wedding is from their pro cameras. Apple even gave us a PowerBook 150 laptop as a wedding present.

That was 15 years ago. 15 wonderful, happy years, and we love each other all the more deeply now.

What's the secret of our success? The "four C's":

  1. Communication: talk through concerns, don't use the "silent treatment"; always be honest.
  2. Commitment: those vows really mean something.
  3. Compassion: be supportive and considerate of feelings.
  4. Compromise: be flexible, come to agreements that you can both live with.

That's worked for us. That, and starting out as e-friends, where all we had were our words, so we really got to know each other very well. We both work from home most of the time, so spend a lot of time together, without getting on each others nerves too much. :) So we must be doing something right.

Happy anniversary, Jennifer. I love you!

Syndicate content