iPhone found ready for enterprise, better than BlackBerry

Tuesday, April 14th 2009

This story on AppleInsider has some choice quotes:

Using the web is a “chore” on a BlackBerry but intuitive on an iPhone.

Kraft, meanwhile, emphasizes that the iPhone was brought in to support a “culture change” at the company and that many of those using iPhones are happier than they were before they switched. It pushes the company at large to use newer technology and has been cutting costs by letting iPhone owners get their own support rather than depend on the company alone for help. “Overall they provide better support than we can,” one person from the company’s IT management says.

And…

“We find the BlackBerry better for email and calendaring and the iPhone better for everything else,” he notes.

Convertbot

Friday, March 27th 2009

From the developer of Weightbot comes Convertbot, a $0.99 app that uses a radial control for selecting your unit, and a very nice looking numeric input pad. I appreciate the built-in conversions that PCalc offers, but this is too cool to not get.

Context Menus and Sub-Menus

Sunday, March 22nd 2009

http://ignorethecode.net/blog/2009/03/21/context-menus-sub-menus/

Another thoughtful article from Lukas Mathis on menu design.  I found particularly interesting the comparison of the different ways to implement submenu mouse movement.  OS X provides a region you can move the mouse through on the way to the menu item without deactivating the submenu.  Windows isn’t quite as good, implementing a simple delay in the closing of the menu.  And the worst of all is most JavaScript implementations on the web, which require precise horizontal movement or the menu will close.

CalDAV on iPhone OS 3.0

Sunday, March 22nd 2009

After all my frustration with iPhone notes, tasks, and events that led to my purchase of Things,* Apple has finally added preliminary support for CalDAV in iPhone OS 3.0. Along with their CalendarServer (which, while only bundled with Mac OS X Server, is implemented in Python and 100% open source) you can setup a decent calendaring server for your network. Here’s how I did it:

First, Apple’s svn repository for CalendarServer isn’t that large, but the setup process downloads lots of bits separately, so make a working directory:

mkdir ~/caldav
cd caldav

Fetch the project from the repository:

svn co http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk CalendarServer

In addition to Darwin, Apple has gone out of their way to make things work nicely in Linux and FreeBSD. Most of the work will be done by the run Python script in this directory. You will need at least Python 2.5 for this. The script has two modes, one to set everything up, and one to run the server. First, lets set everything up:

./run -s

This will download lots of extra projects into the parent directory that CalendarServer is in, so if you skipped that first step, you’re going to have a mess wherever the repository was pulled to. The projects downloaded include:


CalDAVTester
PyKerberos
PyOpenDirectory
PyXML-0.8.4
Pyflakes
Twisted
libevent-1.4.8-stable
memcached-1.2.6
pyOpenSSL-0.7
pydirector-1.0.0
python-dateutil-1.4.1
select26-0.1a3
vobject
xattr
zope-interface-3.3.0

Your version numbers may vary somewhat depending on when you pull down the code. The script will compile anything that needs it, and set it all up for you. The only thing you really need to be careful about is the xattr package. Here’s why:

xattr

This package is a PHP interface for getting and setting Extended Attributes (known as xattrs or EAs) in filesystems. These are essentially extra bits of info in addition to normal attributes like owner, permissions, and timestamp. For this package to work for you, your filesystem must support xattrs. How do you know if it does? If you are using Darwin with HFS+, it’s built in. Likewise if you are using XFS under Linux, its built in and you don’t need to do anything extra. If you are using EXT3 under Linux, your filesystem driver must be compiled with CONFIG_EXT3_FS_XATTR=y and mounted with the user_xattr option. CalendarServer absolutely depends on xattrs to work, and there’s no way around this. So before going any further, take the time to research your filesystem to see if it supports xattrs and how to enable them if it does.

In Linux, you can test for xattr support using setfattr and getfattr:

setfattr -n user.foo -v ‘blah blah’ file

getfattr -d -m ” file
file: file
system.posix_acl_access=0sAgAAAAEABgD
user.foo=”blah blah”

If that works for you, you have xattr support and you can proceed.

After run -s completes, CalendarServer is essentially setup and ready to run, but you’ll want to at least setup some accounts first.
Open CalendarServer/conf/auth/accounts.xml in your favorite text editor.

The first key you see will be for the realm, where some users are defined. If you do nothing else, change the default passwords on the admin and test accounts. And you probably want to go ahead and just change the test account to be one you will use. You can also change the members of the default group to add your name to it.

Now let’s look at the configuration files for the server in CalendarServer/conf. You’ll see 3 of them:

caldavd-apple.plist
caldavd-dev.plist
caldavd.plist

The first and last ones are default plists that would be typical for use in a Mac OS X Server environment. The options are somewhat different, such as paths for data and other configuration, and it tells the server to use DirectoryService instead of the flat XML file for accounts. But for this code that has been checked out of SVN, the run script has been modified to use caldavd-dev.plist, a simpler, leaner config file that works with what you downloaded. You can safely ignore, or even remove the other 2 files, but you may want to keep them around for reference.

Any changes you make will be to caldavd-dev.plist.

I changed my DocumentRoot to a more sensible location: /var/www/caldav/data/ and moved everything in twistedcaldav/test/data/ to there. I also changed location of the logs, socket, and pid files to /var/log/CalendarServer and /var/run respectively.

To run CalendarServer, just execute:

./run

Without the -s. Note that it will not run as root.

Now you should be able to connect to your server on port 8008 (or 8443 for SSL) from any CalDAV client such iCal. In iPhone OS 3.0, Calendar.app doesn’t yet work with SSL CalDAV connections. For the base URL, just enter the server name and it will add the rest automatically.

Now with both iCal and the iPhone working on the same CalDAV server, it doesn’t matter where you manage your calendar, they always stay in sync. This is the idea, at least. In practice, I have found a bug in the 3.0 beta. The iPhone will not refresh and remove events that were deleted by another client. To clarify:

If you add an event on the iPhone, it will appear in iCal
if you edit an event on the iPhone, it will change in iCal
If you remove an event from the iPhone, it will remove from iCal

and the reciprocal…

If you add an event in iCal, it will appear on the iPhone
If you edit an event in iCal, it will change on the iPhone
X If you remove an event in Cal, it will not remove on the iPhone

I have tested this extensively using all possible options, and running the server on both Linux and Darwin, and it makes no difference. Watching the CalendarServer access.log tells me that when the event is removed from iCal, it actually is deleted on the server. It’s simply that the iPhone’s view won’t refresh and remove it. Attempting to remove it again from the iPhone does indeed get rid of it on the iPhone side, but then it ignorantly tries to tell the server to remove it and the server logs a “file not found” since it’s already gone. It would seem that at least for the 3.0 beta, the only sure way to make the iPhone not show a deleted event is to actually perform the delete from the iPhone. This will no doubt be fixed by release day.

UPDATE 5/2/2009: since beta 3, this is fixed.

*ToDos still aren’t implemented on the iPhone, so I’ll be sticking with Things indefinitely, and that’s fine by me. It is a fantastic app.

Safari 4’s topsites://

Wednesday, February 25th 2009

topsites://

An address you can visit to see your Top Sites in Safari 4.

Everything’s Amazing, Nobody’s Happy

Wednesday, February 25th 2009

Louis CK on Conan.

Safari 4 Beta thoughts

Tuesday, February 24th 2009

-It’s fast.  It’s really, really fast.  This is the most important thing.

- New tab bar is different. Makes sense, but will take getting used to.

- MobileSafari-style stop/reload buttons.

- Search bar uses Google Suggest and includes search terms found on the page.

- Top Sites is great.

- CoverFlow is great.

- New Location bar dropdown is interesting. Not quite the mess of ugly that is Firefox’s “AwesomeBar.” I, for one, and glad it only completes URLs and not title tags.

- They renamed the SquirrelFish Extreme JS engine to the more public friendly “Nitro” engine. Chickens.

Update:  WebKit developer Mark Rowe confirms in a posting to the webkit-dev mailing list:

Nitro is Apple’s marketing name for WebKit’s JavaScript engine, code-named SquirrelFish Extreme.  There are no difference between them as the names both refer to the same thing.

Sony Releases New Stupid Piece Of Shit That Doesn’t Fucking Work

Thursday, February 19th 2009

Old news by now, but God I love The Onion.

Rowmote

Thursday, February 19th 2009

I bought Rowmote last night and it’s just great. For .99 you get a remote control for iTunes, QuickTime, VLC, Front Row, Boxee, DVD Player, Keynote, Powerpoint, and more. You have to run the tiny Rowmote Helper on your Mac, but it’s light and simple with no messy installer.

Rowmote (iTunes link)

ClickToFlash plugin for Safari

Thursday, February 19th 2009

http://github.com/rentzsch/clicktoflash/tree/master

A true Safari plugin, not an InputManager hack. Formerly abandoned then adopted by Rentzsch. Couldn’t surf without it now that I’m used to it.

Microsoft to open retail stores

Thursday, February 19th 2009

The most telling fact about this is that while Apple grabbed former Target executive Ron Johnson to be their retail chief, Microsoft’s retail chief David Porter comes from Wal-Mart. As Gruber put it, “Target stores are nice. Wal-Mart stores are hellholes.

fstools

Thursday, February 19th 2009

http://fstools.macosforge.org/trac/wiki

The Filesystem Tools project is a place where the Apple filesystem teams will be publishing some of the tools we use to test the filesystems that are part of Mac OS X. These tools will be useful to developers who are writing new Mac OS X filesystems, or testing Mac OS X network filesystems against their servers.

Apple and Adobe reported to be working together on Flash

Saturday, January 31st 2009

Via AppleInsider

“It’s a hard technical challenge, and that’s part of the reason Apple and Adobe are collaborating,” he says. “The ball is in our court. The onus is on us to deliver.”

Curious that the quote comes from Adobe, not Apple. And Apple really doesn’t like stuff like this getting out early. Hasn’t anyone learned anything yet?

Personally, I hope this doesn’t work out. Flash is a blight upon the web, and given Apple’s deep investment into AJAX based systems like SproutCore, anything that pushes them toward yet another proprietary, closed, system isn’t just a bad idea, it makes no sense.

Keeping an eye on things with rsyslog

Saturday, January 31st 2009

A few months ago I discovered rsyslog, a drop-in replacement for the standard Unix syslog daemon. Rsyslog can do a lot more than I will talk about, but the major appeal to me was built in mail sending.

Since rsyslog is completely compatible with syslog.conf, I started by cp /etc/syslog.conf /etc/rsyslog.conf. Then to make a few specific changes. First, we should know that you can split your config directives out to multiple files and read them in independently. You can include multiple files or whole directories.

$IncludeConfig /etc/rsyslog.d/

I commented that line out, since all my config will be in one file: rsyslog.conf

Next, let’s allow some remote connections to use this daemon for logging:

$AllowedSender UDP, 127.0.0.1, 192.168.1.0/24
$AllowedSender TCP, 127.0.0.1, 192.168.1.0/24
$UDPServerRun 514

This allows local loopback connections and the LAN.

Now, we get into the heart of rsyslog, modules and templates. First, we will load a module allowing the import and logging from klogd, the Linux kernel logging daemon:

$ModLoad /usr/lib/rsyslog/imklog.so

And then, a module to allow rsyslog to communicate to SMTP servers directly:

$ModLoad /usr/lib/rsyslog/ommail.so

Since these are the only modules I load, let’s go ahead and configure the directives for ommail:

$ActionMailSMTPServer airwaterunix.org
$ActionMailSMTPPort 25

$ActionExecOnlyOnceEveryInterval 1

$ActionMailEnableBody on

$ActionMailFrom alert

The options are pretty straightforward. The third option there can be increased to keep rsyslog from slamming your mail server, and the fourth option is incase you only want a subject line sent (in the case of SMS). The “alert” in the last option is the name of a specific mail alias on the server that points to root.

Now it’s time to set up some templates:

$template TraditionalFormat,”%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n”

This one won’t apply to mail. It’s just the standard template to use for the messages that appear in the log files.

Next:

$template mailSubject,”%programname% on %hostname%”
$template mailBodyShort,”\r\n\r %timegenerated% \r\n\r\n %msg%”

$template mailBody,”\r\n\r %timegenerated% \r\n\r\n %hostname% %programname% %msg%”

A generic template for mail Subject, consisting of messages that will appear like “ssh on airwaterunix,” and two types of mail Body templates. One truncated style for SMS, and one longer one for email. I could have multiple Subject templates also, but it’s not really necessary at this time.

Now that we have defined the templates, we have to enable a Subject:

$ActionMailSubject mailSubject

Now come the conditionals. For every 'if...then' style line we use, we must define the mail recipient beforehand, as that directive is reset after the loop closes. So for our first recipient and conditional:

$ActionMailTo alert if ($fromhost == ‘airwaterunix’) and ($msg contains ‘Failed password’) or ($msg contains ‘eth0: link up’) then :ommail:;mailBodyShort

Simply, the logic works like: if
A

and

(B or C)

then

ACTION

So for this to be met, it must be happening on host airwaterunix, and the message must either be “Failed password” or “eth0: link up”
These two messages have nothing in common, except they are two messages for which I would like to trigger an email to user ‘alert’ (which happens to be an alias not only to root, but my SMS number as well). And since these are going to a phone, we use the mailBodyShort template so everything fits in one message.

Next, a slightly less alarming notifier:

$ActionMailTo admin if $msg contains ‘Authentication failed’ then :ommail:;mailBody

In this case, ‘admin’ is an alias to root and nothing else. This string will only pass through rsyslog if an incorrect password was entered via the ’su’ command. Since I typo this one from time to time, I don’t want an SMS every time I do it. An email will suffice.

Let’s add one more similar one, but this time to handle failed logins from the console:

$ActionMailTo admin if ($programname contains ‘login’) and ($msg contains ‘invalid password’) then :ommail:;mailBody

Next up, handling specific messages from smartd, the SMART disk monitoring daemon:

$ActionMailTo admin
if ($programname == ’smartd’) and

($msg contains ‘RawReadError_Rate’) or

($msg contains ‘ReallocatedSectorCt’) or

($msg contains ‘SeekErrorRate’) or

($msg contains ‘SpinRetryCount’) or

($msg contains ‘Reported_Uncorrect’) or

($msg contains ‘AirflowTemperatureCel’) or

($msg contains ‘Temperature_Celsius’) or

($msg contains ‘HardwareECCRecovered’) or

($msg contains ‘Offline_Uncorrectable’) or

($msg contains ‘UDMACRCError_Count’) or

($msg contains ‘MultiZoneError_Rate’) or

($msg contains ‘TAIncreaseCount’)

then :ommail:;mailBody

Note: Even though I split this up for legibility, rsyslog will not work unless you put your entire 'if...then' conditional on one single line.

Finally, we’ll add one to handle failed ssh logins on a secure remote server:

$ActionMailTo ssh-alert if ($fromhost == ’seraphim’ ) and ($msg contains ‘Failed password’) then :ommail:;mailBodyShort

In this case ’ssh-alert’ is an alias of several email addresses and SMS numbers that will all be notified in the event that an ssh login failure occurs on host “seraphim.”

The rest of rsyslog.conf is lines like:

.info;.warn;authpriv.none;cron.none;mail.none;news.none -/var/log/messages;TraditionalFormat

to handle the actual text file logging of messages, specified by a previously defined template.


iStat for iPhone

Sunday, January 25th 2009

Bjango’s iStat for iPhone works with iStat Server (free download) to let you monitor your Mac remotely. Very clever interface and includes a couple of extra tools like ping and traceroute.

iStat Server installs to /Library/Application Support/iStat Server/ and includes /Library/LaunchDaemons/com.bjango.istatserver.plist

The Problem with “Feeling Creative”

Thursday, January 22nd 2009

Creative work only seems like a magic trick to people who don’t understand that it’s ultimately still work.

More wisdom from Merlin Mann.

Stanford iPhone Class Over, Details Posted

Thursday, January 22nd 2009

http://www.stanford.edu/class/cs193p/cgi-bin/index.php

“App Store rewards crap apps”

Thursday, January 22nd 2009

http://www.appleinsider.com/articles/09/01/22/iphone_developer_app_store_rewards_crap_apps.html

Fascinating article from the developer of Sound Grenade, an app that he spent less than hour on, but which ended up in the top list within a few days. Now, he updated it with an ad-supported version that nets him over $200 an hour from embedded ad revenue.

“The App Store is not like any other software market we’ve ever seen. If it could be compared to any other market, it’s like the Billboard Charts for Music. A good pop music producer can take someone with minimal talent, get them to sing some lyrics, and then run it through auto tune. Bam. Number one song. That’s all it takes with the App Store. Do some market research, work out that most of the people that download free apps are immature and seriously uncool. Then wrap an average idea that you think will appeal to immature and uncool people with some average graphics, and boom, top 10 app. Like the pop market, it’s hit or miss; sometimes it will work, sometimes it won’t.”

How to not use Marker Felt in a Notes.app note

Thursday, January 22nd 2009

1) Go to Settings > General > Keyboards and enable an Asian language keyboard.

2) Open Notes and create a new note.

3) Tap the globe icon to change languages.

4) Tape the 123 key and enter a digit into your note.

5) Marvel as the font changes to Helvetica.

6) Tap the globe and change back to English.

That note will now be Helvetica permanently.

7) Cry about why this is not an option.

iPhone apps worth buying

Thursday, January 22nd 2009


Things

Complements the desktop app very well, syncs over wifi. Very simple, not too much to play around in and lose focus.


PCalc


Throw away the default iPhone calculator and any other unit conversion apps you have and use this instead. Simple yet full of features.


Grocery iQ


If you’re the type to completely forget what it is you’re shopping for every time you go buy food, get this. I’m not sure I use it the way the developer intended, as I make one long permanent master list, and check/uncheck items based on have/need status. Too much work to create a new list every single time.


Weighbot


If only just for how well designed it is and how fun it is to use.


Gas Cubby


If you hate car maintenance because of all the crap you have to remember to do.


Keynote Remote (iTunes link)


Simple and works well.


Wordbook (iTunes link)


Best dictionary app yet, and a bunch of other stuff like anagrams and crossword solver too. Great “words of the day” feature to help increase your wordiness.


Mobile Chat


Some people praise BeeJive and the official AIM client, but for my money this is the best one yet. Supports several common protocols and has a clean usable interface.


Tweetie


Fast, clean, bunch of features (trends, search) and it can fart too. What more could you want? Can also support more than one account.


Jaadu


If you need a VNC client on your iPhone, this is the one to get. Most stable, fastest, and most remote control features with no resolution limits.


Deliveries


Package tracker that syncs with the Dashboard widget, and looks fantastic.

Seagate posts updated firmware for affected drives

Thursday, January 22nd 2009

http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931

One of these is in airwaterunix.org, and has been promptly updated.

“Transparency and the rule of law will be the touchstones of this presidency”

Thursday, January 22nd 2009

January 19, the robots.txt on whitehouse.gov was over 2,400 lines long.

January 20, it became 2 lines.

Well, I think you know the answer to that

Thursday, January 22nd 2009

PC Pro’s Barry Collins interviews Microsoft’s Hugh Griffith, head of their mobile division, about Microsoft’s return to DRM and their defense of it:

Q: If I buy these songs on your service – and they’re locked to my phone – what happens when I upgrade my phone in six months’ time?

A: Well, I think you know the answer to that.

Pre

Tuesday, January 13th 2009

Any time a new thing comes out with the notion that it’s going to “kill” the existing market dominator, it is almost certainly doomed to fail, and fail spectacularly. Nowhere is this truer than when competing with Apple. Because of this, my natural response to the Palm Pre is to mock it derisively, but let’s give it a fair chance. After all, it’s not even out yet.

The big deal about the Pre is that it’s not tied to any specific ‘main’ computer, and that all your data is wirelessly synced with various accounts online. It presents this to you using a WebKit-based interface they are calling “webOS” (no word yet on the actual underlying OS) It’s Linux. Also, right now Palm is claiming all third-party development (which will be presented to the user through the Palm “App Catalog”) will be based on HTML, CSS, and JavaScript. This is what Apple originally claimed about the iPhone, except that it was a lie to make the big SDK/App Store reveal much more impressive. It just wasn’t ready yet at the time. Palm could have a similar secret, or they may change their minds later, but for now we have to take them at their word. It’s doubtful that very many interesting apps could be creating given those limitations.

Physically, the screen is much smaller than the iPhone, which makes the UI do some interesting things to cope. Lots of elements are represented as full screen windows that zoom out slightly, then slide off the screen temporarily while something else comes into view. It also has a fairly fluid (at least in the demos) multitouch capacitive screen.

The sliding keyboard is where Palm sharply disagrees with Apple on design. In the original iPhone announcement, Steve Jobs began by explaining why it would not have a physical keyboard. He made a very strong case for a dynamic, virtual touchscreen. In addition to not being tied to particular buttons for the life of the device, there are also fewer parts to manufacture, assemble, and potentially fail. Making the device slide open also knocks a point off the design of the thing. Having one, singular shape makes the design iconic and memorable. The division among users over the physical/virtual keyboard argument may never end. I had to use my iPhone’s keyboard for a few weeks before it finally clicked with me and I didn’t have any typing trouble. But it doesn’t look like Apple is going to budge on this no matter how many users complain. And if Palm chooses to serve those people, well then good for them.

The Pre doesn’t look nearly as much like a turd as all the other clearly intentional iPhone wannabes from major players. By all accounts so far (keeping in mind it is not even available yet), it seems to be a very good smartphone. But I suspect the majority of the hype is coming from people who have never used an iPhone, or very intensely value one of the features the iPhone lacks and the Pre has.

In other words, if the scale of smartphone quality was measured on a scale from 1-10, with 10 being the magical Tricorder all nerds fantasize about, the vast majority of products out there are hovering around 2-3, the iPhone is sitting at 9, and the Pre is around a 6. It’s not bad compared to the rest of the spread, but it’s no iPhone.

By installing Java, you will be able to experience the power of Java

Monday, January 12th 2009

Joel Spolsky:

Just because there’s room on the dialog box, doesn’t mean you have to put something there. The Java installer starts off with a dialog box that manages to repeat the word Java six times without really telling you what it is, just that it’s “everywhere.”

Brain Crack

Sunday, January 4th 2009

And the longer they wait, the more they convince themselves of how perfectly that idea should executed…But the bummer is most ideas kind of suck when you do them.

http://www.zefrank.com/theshow/archives/2006/07/071106.html

One more thing, or: Wherein I paste my emails to a friend about task management and iCal

Sunday, January 4th 2009

January 3, 2009 11:57:07 PM CST

Ok, so the lowdown is:

The iPhone has a Notes app that stores its data in an SQLite db, and seems to be entirely independent of Mail.app’s Notes (which are individual, separate email messages).

AND

Mac OS X has a system-wide “To Do” list, which are actually ICS text files stored in ~/Library/Calendars/{unique id}/Events/

BUT

Which are not in the iCal sense truly “Events.” They show up on the “To Do” side bar in iCal, and they show up in Mail.app’s To Do list, or any other GTD style app that chooses to use or sync with the system-wide To Do items.

THEREFORE

Since these system-wide To Dos are not iCal Events, and do not show up in the Calendar, and thus cannot have alarms attached, etc. There appears to be no option or any automated way whatsoever to have your To Dos also be calendar Events.

ADDITIONALLY

Because iPhone’s Calendar.app only syncs your Calendar Events, and has no To Do support at all, anything added to the system-wide To Dos does not sync to your iPhone, and thus will not have any alarm capability.

SO

If you absolutely need the alarm, then you’ll have to keep using iCal for those things, and maybe Things.app will be useful to you for everything else. That’s what I’m doing. But there’s just a such opportunity for integration here that it’s frustrating as hell it isn’t happening. Why can’t there be a single, synchronized version of calendars, events, to dos, and notes? I hope they have it planned and just haven’t gotten around to it yet.

If there’s a way to shellscript To Dos into becoming alarmable Events, I’m going to figure it out, and I’m not going to sleep until I do.

January 4, 2009 11:41:03 AM CST

Okay, after some work, I’ve come to a few conclusions.

Scripting to turn a To Do into an Event isn’t that difficult. They are both ICS files, and the only difference is that Events contain a BEGIN:VEVENT line near the top and an END:VEVENT line near the bottom (and BEGIN:VTODO and END:VTODO for To Do items). Events also contain DTSTART and DTEND lines so the calendar knows what time frame to use for the duration of the event.

So while the actual scripting part isn’t difficult, what is difficult is figuring out just how a To Do practically becomes an Event. Even the items on my To Do list with do have due dates do not have time windows, and short of setting a default option for all To Dos with due dates, it’s just logistically difficult to implement.

The reason is that To Dos and Events _are_ fundamentally different. Events are scheduled items, not just by date, but also by time, and usually Events happen whether you attend to them or not. They are often inherently tied to the time in which they happen. To Dos, however, are less like unstoppable windows in time, and more like things absolutely under your control. So, even for those To Dos with due dates, a _due date_ is not the same thing as an Event reminder. A due date can come and go, and the task remain unfinished and still finishable, and exist as “overdue” until you do get around to it. A Event, like for example a doctor’s appointment, is not something that can be “overdue.” You either attend to it at the specified time or you miss it and reschedule for another specific time.

So, there seems to be 3 levels of specificity here:

To Dos (general)
Stuff that needs doing, but is not tied to a particular day or time. It is completed when you complete the task.
Ex: “Fix broken end table leg”

Events (specific)
Stuff that happens on a specific day and time, regardless of whether you’re involved or not.
Ex: “Niece’s birthday party”

To Dos w/ due date (in-between)
Tasks that need completing /by/ a certain date, but can usually be done earlier, can exist as “overdue” and not necessarily
tied to a specific time window.
Ex: “Pay credit card bill”

So, it makes no sense for the first group to be calendar events, and only partial sense for the third group to be calendar events. I suppose if you could decide on the time window, it would be possible to do it (maybe any To Do with a due date is set as an “All day Event”), but it’s still awkward and ill fitting. So let’s say you get a reminder on the due date, but if you miss it, you don’t get any more reminders but it stays unchecked and overdue in your To Do list? The problem is that semantically, Events and To Dos are completely different, but in practice, we *need* reminders for To Do items at times.

Another solution would be if there existed some other kind of alarm reminders. If it was possible to just attach alarms to To Do items with due dates, which is not possible currently. Not exactly sure how that would work, would it just alarm you at 12:00:01AM on that day? Would you set a default time (e.g. 8:00AM) for iCal/Calendar to pummel you with all the To Dos that are due that day?

I think for now, I’m just going to keep using Things.app and habitually peruse my list.

January 4, 2009 12:10:03 PM CST

Ok, so To Dos do support their own alarms, but the “Add a default alarm to all new Events and Invitations” excludes To Dos from getting a default alarm.

They are trying to drive me mad.

More on Notes and To Dos

Sunday, January 4th 2009

CONCLUSIONS

The iPhone has a Notes app that does not sync with Mac OS X.

Mac OS X has To Dos that do not sync with the iPhone.

Things it is, then.

Things 1.0

Thursday, January 1st 2009

The most frustrating thing about the iPhone isn’t its clear limitations; it’s what is just so obviously within the device’s grasp but doesn’t work. Those things which are obviously useful, make complete sense, but aren’t there because Apple just hasn’t gotten around to implementing them. One example is that the mobile Calendar.app doesn’t subscribe to CalDAV accounts, despite Apple promoting CalDAV for Leopard Server, and also despite being able to sync over the air with an Exchange calendar. Perhaps the most frustrating deficiency is that Notes.app does not in any way whatsoever sync with Mac OS X, even though in the weeks leading up to the iPhone’s release, it was clearly advertised as a feature, then removed from all published copy.

NOTES

I have been using Notes for awhile as a universal scratchpad. Financial stuff (bills to pay, balance payoffs), long and short term shopping lists, and other general to-do reminders. For this, Notes is great, because there’s almost no features whatsoever. You can create new notes, edit existing notes, and delete notes. Notes are named according to the first line in them, and sorted by most recently edited. There is nothing else there to occupy you. This would be great, if a little bare, if there was any way at all to get this information on your computer. Even better would be syncing with the ‘Notes’ or ‘To Dos’ in Mail.app. But there’s nothing. In the meantime, Apple suggests creating and editing notes in Mail.app, and then connecting to your mail account with the iPhone. For IMAP accounts, this is fine except there is absolutely no way to create or edit those notes (which are really just email messages) on the iPhone. This is unacceptable, because the whole benefit of the iPhone is being able to create and update that information anytime, anywhere, with or without connectivity. And even with connectivity, you can’t do it.

THINGS

So if you want read/write ability for your notes on both your Mac and your iPhone, unfortunately, for now you have to rely on third party software. Or maybe, fortunately. Because Things from Cultured Code is by far the best “Get Things Done” type app I’ve ever used. It’s almost a pleasure to use, and that almost is exactly why it’s the best.

Nerds have a huge problem when it comes to task management, scheduling, and informational organization in general. They overthink, overplan, and in general overdo everything to the point that the management system itself becomes another distracting toy keeping them from accomplishing the things the system should be helping them accomplish. This is why I don’t use iCal as much as I should, why it’s dangerously unproductive for me to carry a physical planner or datebook, and when nerds try to use a sophisticated computer program to simplify and order their lives, there’s huge potential for a productivity backfire.

Things realizes that, like my approach to using Notes.app, there are different types of things that go on your list. There are little tasks you want to do now or very soon. There are things upcoming, just around the corner, there are normally recurring things that you still need reminders for, and there are long term things that don’t have a definite due date, that you need to be able to think about and remember, but not have in your face all the time yelling “Accomplish me! Tick this box!” Things treats these items as completely different items, instead of the same type of item distinguished by mere due dates.

The five focus groups in Things are Today, Next, Scheduled, Someday, and Projects. While Today comes first in the list, Next and Someday are where I create most of my tasks. Anything with a definite due date I create in Next, and on the appropriate day it’s moved to Today. Anything without a due date goes into Someday. Scheduled is a list of repeating, recurring events (daily, weekly, monthly, etc.) that gives you incredible granularity over the recurrence period. Have certain bills due on a certain day, or weekly appointments that you can’t seem to remember? Those are for Scheduled. And, like those upcoming items in Next, on the appropriate day, a task will be added to Today.

Projects is great for those tasks with subtasks. For example, you may have a Project called “Remodel Kitchen,” and it has one global check box, but under it are subtasks such as “Pick out new linoleum,” “Measure for cabinets,” and “Install wiring for electric oven.” You can check off the boxes of each subtask separately, and checking the global parent box with any unchecked subtasks will prompt you to cancel or check those remaining subtasks. This allows you to record and manage those projects with a depth of tasks, but without littering up your entire to-do list with information related to a single specific project.

Things also features tagging (creating new tags as they are used), and a view of “Areas of Responsibility.” You can add any task to an Area of Responsibility and quickly get an overview of those unchecked items in each Area. In case you suspect you’re spending too much time doing things in one area while neglecting others. I also like that any task, regardless of section or due date, can be Starred and it will appear in Today. This is a great way to get ahead on your Next items, and whittle down those items in Someday. And once you do finally check an item, it will be archived in the Logbook.

FOCUS

What I love most about Things is there’s no requirement to name, tag, schedule, or organize anything at all. Tasks can have tags, due dates, notes, and belong to an Area of Responsibility, but none of them have to. Every action in Things steers you toward actually accomplishing what’s in those tasks, instead of playing around with the app itself and trying to make it a task. There’s plenty of features, but they are hidden in the elegant design and workflow of the app. There’s no room for fun, and the joy in using the app is how much it helps you stay focused on your tasks.

And as of now, Things Touch 1.2 is available on the iTunes App Store, and 1.3 is in the review queue. It lets you view all the information about your tasks, create a new task from anywhere in the app, and perform most of the management functions. It’s also one of the few apps that sync with their Mac OS X counterparts.

Things might just be the first GTD style app that I actually use.

Regarding Apple’s Antivirus Recommendation

Wednesday, December 3rd 2008

It wasn’t a new article in their KnowledgeBase, it was an update of a much older preexisting article. They only bumped the version numbers of the recommended software.

After all the flak from folks who’d never noticed the article was there until the update, Apple in response took the article down with the comment that most users really don’t need AV software, because Mac OS X is inherently more secure than something like Windows.

In conclusion, this was not Apple capitulating on the claim of OS X’s security, and the net result is they actually said it’s more secure than ever before.

Notes from Jordan Hubbard’s LISA 08 talk

Wednesday, November 19th 2008

http://www.usenix.org/events/lisa08/tech/hubbard_talk.pdf

Interesting bits:

- 10.6 to be released Q1 2009?
- Leopard’s sandbox files are written in Scheme
- “ASL,” Apple’s replacement for syslog
- Claims MacPorts is “Apple’s 2nd most successful project”

Snow Leopard to have Cocoa Finder

Friday, October 17th 2008

Via Appleinsider

Hope this means Cocoa iTunes as well.

Best of Breed

Thursday, October 9th 2008

John Gruber:

Let’s just say it up front: the iPhone is the greatest piece of consumer electronics that has ever been made.

Everything Apple as a company has ever stood for, good and bad, was to get to the point where they could make this.

A billionaire can buy homes, cars, clothes that the rest of us cannot afford. But he cannot buy a better phone, at any price, than the iPhone that you can have in your pocket today.

I agree completely, and this is the same feeling I had when I first started using a 15″ aluminum PowerBook.  I used to hear that it was a “very satisfying feeling to own a Sun machine.”  I am very satisfied knowing that I couldn’t possibly own a better class of computer.

10.5.5 updates X11.app

Wednesday, September 17th 2008

And replaces the OS X-ish icon with one that resembles the X.org logo.  I kind of liked the design of the old one, but it’s good to know they are moving forward with X11.

“Windows Mobile” magazine halted, publishers to print “iPhone Life” instead

Tuesday, August 26th 2008

Smartphone & Pocket PC magazine publisher Hal Goldstein noted in a blog entry that the reason isn’t that sales of Windows Mobile devices are plummeting — on the contrary, almost 20 million Windows Mobile devices were sold during the last Microsoft fiscal year. It’s just that advertising support from Windows Mobile manufacturers, cellular carriers, and developers has dropped significantly.

(via Tuaw)

The Last Word in File Systems

Thursday, August 21st 2008

When developers make a claim like this, it takes serious proof to back it up. I’ve been interested in ZFS ever since the first rumors about it appearing in Mac OS X Leopard, where it was reportedly included, then pulled, then included, then pulled for a Sun developer stealing Steve’s thunder from the keynote, but actually pulled because it wasn’t ready.

And now Apple is officially claiming ZFS read/write support in Snow Leopard, I decided it’s time to test it myself. While source code and binaries are available for the testing code in OS X, I wanted something I could test without going over USB, and something I could use for an extended time to provide some practical benchmarks. And with a new spare hard drive in my Linux server, I looked into the ZFS-FUSE project.

Right now there’s no native support for ZFS in the Linux kernel, and while Sun is “looking into it,” there may never be support due to fundamental incompatibilities between the ODDL and the GPL. Someone could conceivably work on a native Linux port, but until the licensing problems are resolved it will never be included in the mainline kernel. So for now, the only working thing is to go through the Filesystem in Userspace (or FUSE) project, which adds more CPU and RAM overheard. I have no other ZFS usage to compare it against, but as I’ve been using it, I can’t help but think it should be a little faster.

ZFS is a new approach to filesystems. It seeks to bring just about every important feature together and become the end-all filesystem. End-to-end data integrity (no fscking, ever), built in RAID and RAID-like features, the arbitrary creation and destruction of volumes, arbitrary addition and removal of disks, and a mathematical data allocation limit that is so unfathomably huge, it exceeds the quantum limits of earth-based storage, requiring more energy than could be gained from boiling the oceans just to create the bits on which the data would need to be stored. It very well could be the last word in filesystems.

For working with ZFS volumes, there are only two commands to learn: ‘zpool’ and ‘zfs’

To understand what’s happening, it’s important to first learn how ZFS approaches the idea of a disk, a volume, and a filesystem. It’s simple, but it may take a little unlearning of what you already think about storage.

First there is the physical disk itself, as it is represented in your operating system, along with it’s partitions, if any exist.


Linux
/dev/sda First disk
/dev/sda1 First disk, first partition

Mac OS X
/dev/disk0 First disk
/dev/disk0s1 First disk, first partition

Solaris
/dev/c0t0d0 First disk
/dev/c0t0d0s0 First disk, first partition

Typically all you would think about is the partition and the mount point, but ZFS adds another layer to the stack: pools, which are made up of any number or combination of whole disks or partitions, in any RAID configuration you like. And from the pools come your mountable filesystems. Since it’s a popular concept now, think of the pool like a cloud. You can put anything (in terms of disks) into it. And you can get anything (in terms of filesystems) out of it.

Here’s how a typical, one disk, one partition ZFS filesystem is created. From here on, I’m using device names as they are in Linux. Italicized text is my input.


zpool create pool0 sda

That’s it.  No other command is necessary to start using your filesystem.

Note the absence of a partition designation. That’s because ZFS understands how to use partitions as well as whole disks, and it doesn’t care how they go into the pool. “pool0″ is just the name of the pool. It could be “tank” or “array” or “box” or any other thing that helps you remember this is both a container of your disks, and a grab-bag for your filesystems. It’s a virtual entity that connects your disks (which could be any number of anything) to your filesystems and their mountpoints (which could be any number of anything). It’s sort of like a logical volume in RAID, but much, much more.

By default, ZFS will create a mount point in / by the name of the pool, so to change this mount point from <code>/pool0</code> to something else, you can do:

<code>

zfs set pool0 mountpount=<i>/mnt/zfs</i>

</code>

Mount points are created automatically if they do not exist.  There’s a bunch of other properties you can change, including built in compression.

<code>zfs get all <i>[filesystem]</i></code>

See a list of all properties on a zfs filesystem

<code>zpool status</code>

See the status of your pools, whether they are single drives, striped RAID arrays, or mirrors, and what disks comprise each pool.

<code>zfs list</code>

See total, free, and used space for each zfs filesystem.

<code>zpool iostat</code>

See real time read/write statistics on your filesystems

<code>zpool scrub <i>[pool]</i></code>

Force an integrity check of the entire pool.

<code>ztest</code>

Simulate all sorts of crashes and problems and see how your ZFS copes with it

In the next part, I’ll go through some of the more complex tasks such as creating a RAID-Z, mirroring, and importing/exporting volumes.

‘Back to My Mac’ as a killer app for IPv6

Tuesday, August 19th 2008

Interesting article at AppleInsider on the idea that Apple may be silently pushing adoption of IPv6 through the ‘Back to My Mac’ service, which tunnels IPv6 over IPv4 using IPSec.

While Apple can’t single-handedly transfer the Internet to IPv6, it can provide killer apps that will drive adoption among consumers. That kind of thing is right up Apple’s Infinite Loop alley. The company pushed for adoption of the MPEG AAC codec with iTunes and the iPod, upgrading the world from MP3 while preventing the world’s music from being locked up in Sony’s ATRAC or Microsoft’s Windows Media DRM. Most other music players now support AAC as well.

Apple then got behind H.264 video and started pushing hard, even while file traders complained that Apple should just stick with the well known old variants of H.263 codecs used by DIVX and others, or use the proprietary codecs used by Windows Media Video and Adobe Flash. The success of iTunes helped push even Adobe’s Flash to H.264, and convinced Google and the BBC to serve their video content to iPhones using standard MPEG H.264 rather than Flash or Windows Media.

I’ve similarly wondered if this is the case with Apple’s use of SproutCore for MobileMe as an attempt to get people away from Flash. And somewhere deep in my soul I believe that Apple is driving up Linux and BSD usage by the existence of OS X, but that just may not be true.

Linux 2.6.26 including memtest

Thursday, July 24th 2008

Memtest is a commonly used tool for checking your memory. In 2.6.26 Linux is including his [sic] own in-kernel memory tester. The goal is not to replace memtest, in fact this tester is much simpler and less capable than memtest, but it’s handy to have a built-in memory tester on every kernel. It’s enabled easily with the “memtest” boot parameter.

Commit log

Developer responses to App Store reviews

Thursday, July 24th 2008

Craig Hockenberry on App Store reviews:

Some have suggested that buying the app should be a requirement before leaving a review. I agree, but this will not completely mitigate the need to vet content. A large percentage of applications are free: the trolls will just download before going on their merry way.

If all of this wasn’t depressing enough for developers, I’ll leave you with my biggest disappointment: reviews are a one way street. I’m not one to feed the trolls, but many of the reviews I’m seeing would benefit from a “Just try this…” or “We’re working on that…” type of response. There’s not even a link to our support on the reviews page.

I’ve found that the effect of having a single, centralized source for iPhone apps can be a two-edged sword. While it gives the developer much greater exposure with much less work, it also provides a single, centralized feedback forum, with a de facto community of users that can and will publicly praise or decry your work.

iPhone 2.1 beta, no sign of NDA.

Thursday, July 24th 2008

http://developer.apple.com/iphone

Updates to the Push API that is coming later this year, GPS updates rumored to be getting prepped for turn-by-turn:

A few new things we are seeing in this version of the software is the addition of a bunch of Core Location features that track the direction you are heading, and the speed you are traveling.

The notes state you cannot use this toolchain to build apps for the App Store, and apparently the link to the NDA is gone. (Via GearLive)


MarsEdit

Thursday, July 24th 2008

Along with the native Wordpress client for the iPhone, I’m trying out MarsEdit. The live preview is nice, and so is the ability to quickly look back over and edit previous posts.

It seems strange to use a specialized client app for posting on a website, but not strange at all to use a specialized client app for, say email or Usenet.

Wordpress.app on the iPhone

Wednesday, July 23rd 2008

Nothing special, but it does allow posting, editing posts, and previews.

The iPhone as the “Mac tablet”

Wednesday, July 23rd 2008

TUAW’s point/counterpoint on the iPhone as the long rumored OS X tablet.

See also.

Fox News anchors sit with fake coffee

Wednesday, July 23rd 2008

http://www.boingboing.net/2008/07/23/fox-tv-news-anchors.html

Pretending it’s a comedy or parody show is the only way I can not cry about this.

MultiTail

Wednesday, July 23rd 2008

http://www.vanheusden.com/multitail/

Great utility for tailing multiple files on one console.

spamlearn, part two

Tuesday, July 8th 2008

After much reworking, I have updated my spamlearn script yet again.

NEW
You no longer need to specify a list of ham directories. It will automatically scan your $MAILDIR and seek out all folders. All you need to do is tell it which folder(s) to use as Junk, and optionally any folder(s) you don’t want imported as ham. I exclude Trash and the Apple Mail To Do folder, for example.

More complex and repetitive tasks have been moved into functions, and generally the code just looks a lot cleaner and is easier to read.

I’ve moved the 5 variables that most people would need to worry about to the top, with lesser altered variables below that. For a default amavis/spamassassin install, just changing the top 5 will make it work most of the time.

More code has been moved into tight routines, and unnecessary bits have been removed. Some options have been combined, for example, unsetting MAILTO, LOGFILE, or QUARANTINE will disable those features entirely. The verbose mode isn’t quite so verbose anymore since it has been migrated from it’s debugger origins. The log and mail report are now prettier, and adjustable timestamps have been added to all log entries.

All you absolutely need to change are the top 2 variables, but have a look at them all for your own adjustments.

http://airwaterunix.org/spamlearn

spamlearn

Sunday, July 6th 2008

I have posted my spamlearn script for anyone to use. I tried to make it as useful as possible for cleaning up those things that amavis/spamassassin don’t cover, and made it as easy as possible to change to anyone’s needs.

The script will crawl through a set of user defined spam and ham IMAP-style Maildir folders, importing the new messages into the spamassassin database. It then gzips, renames, and moves the spam into the normal amavis quarantine. It logs everything it imports, and optionally generates an email to you to let you know what it has done. I recommend putting this in your cron.weekly.

If you use this, have a look through the top 30 or so lines and change the variables to suit you. Of particular note:

MAILDIR
Change this to the top level of your user’s Maildir format directory. This script assumes you are using IMAP compatible Maildirs.

SPAMDIRS and HAMDIRS
You can have as many of these as you like.

MAIL_REPORT
This will send out an email to $MAILTO with a report detailing which spam and ham have been imported into the database. But it will only send if spam was found. Just finding ham alone won’t trigger it.

LEARN_AS_USER
If you run spamassassin as a daemon with the defaults, leave this alone.

The rest should be pretty straightforward. Don’t forget to change the From address in MAILHEADER.

http://airwaterunix.org/spamlearn

Microsoft Equipt

Wednesday, July 2nd 2008

Gruber, quoting CNet:

Ina Fried, reporting for CNet on Microsoft Equipt, a new $69 annual subscription software package from Microsoft for Windows users:

The idea behind the subscription service is to convert more new PC buyers into Office buyers. It plays on the fact that although most people don’t buy Office at the same time as a computer, many do purchase a security software subscription.

Microsoft is trying to tap into the fact that while many people would rather find a copy of Office that they don’t have to pay for (either an older version or a pirated copy) they are willing to pay for security software. “Security is basically the No. 1 thing that gets attached with a PC,” said Microsoft group product manager Bryson Gordon.

Equipt includes Microsoft OneCare anti-virus software. So, when you buy a new Windows machine, even Microsoft encourages you to pay extra for security software.

Organized Dashboard widget from iSlayer

Wednesday, July 2nd 2008

From the people who brought us the wonderful iStat Dashboard widget and iStat Menus menuextra, an all-in-one organizational widget called Organized. Seems iPhone-esque. Love the icon.

Jonathan Ive wins MDA Award for iPhone design

Wednesday, July 2nd 2008

Ars Technica has the story, Jonathan Ive takes home MDA award for iconic iPhone design

“The iPhone is arguably the most talked about consumer-electronics device that has hit the market in the last 5 years,” the judges commented. However, they went a little too far in attributing the iPhone’s touch UI to Ive; that took a team of designers, software engineers, and (according to patent filings) The Steve himself.