Archive for January, 2009

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.