You are herenews aggregator / sources / red sweater blog

red sweater blog


Syndicate content
Mac & Technology Writings by Daniel Jalkut
Updated: 11 hours 20 min ago

Giving MarsEdit A Voice

November 18, 2008 - 4:54pm

Peter Verkhovensky recently wished out loud on Twitter for a feature in MarsEdit. He wanted the application to play a sound when a post has been sent successfully to a blog, similar to how Mail can play a noise when sending a message.

Although MarsEdit doesn’t have built-in support for this, it turns out to be relatively easy to achieve if you take advantage of the built-in Growl support. Growl is best known for its ability to display small, floating notification windows when certain actions are performed in applications, but it also supports the ability to play a sound.

Peter describes the process of adding a successful post sound in this manner. Nice work, Peter, and thanks for sharing the details on how it was done.

Categories: Tech Blogs

VoodooPad 4

November 18, 2008 - 10:22am

Big congratulations to my friend Gus Mueller whose company, Flying Meat, shipped VoodooPad 4 today.

One of the major features in the updated desktop wiki software is page syncing across multiple computers, allowing users to easily maintain a collection of VoodooPad pages on multiple computers.

I know from a user point of view syncing is very exciting and important, especially with the popularity of notebook computers. It’s something I’d like to provide in MarsEdit, someday.

From a technical point of view syncing is a very tricky feature to get done right. I’m sure Gus is wiped out from the effort. Give yourself the day off, and congratulations again.

Categories: Tech Blogs

The Graphic Design Hat

November 2, 2008 - 12:00pm

Those of you who have followed my blog for some time are aware that Red Sweater Software is, more or less, a company of one. I am the lead developer, marketer, strategist, bookkeeper, PR rep, and, as luck would so terribly have it, designer.

Bob Walsh brilliantly summarizes the conundrum of small indie business people like myself, in the title of his blog: 47 Hats. If I may say so myself, I’ve adapted pretty well to wearing all these different hats. But inevitably, some of them don’t fit as well as others.

I’m not completely inept when it comes to graphic design, but I’m far from professionally capable. The beautiful aspects of my applications are mostly thanks to the brilliant work of designers such as Bryan Bell, who I will continue working with. But I also need somebody at the ready for a sustained period of design brainstorming and production. It’s time for me to take off this hat and hand it to somebody else.

Will you be my visual genius? Will you wear this hat?

About The Hat

As a part-time contractor to Red Sweater, you will facilitate the expansion of the company’s graphic identity in all areas including desktop UI, iPhone UI, web presence, advertising, and more. The position is hourly, with a guaranteed minimum per week or month to be arranged.

The position is primarily “visual design” but your skills in interaction or usability design would also be put to good use.

You’ll have a major impact on the look of Red Sweater’s products and presence. You’ll get paid. And when we get huge one day, you’ll be able to say you were there “way back when.”

The Qualifications

Sound like a position you’d excel in? This hat fits a designer who:

  • Pushes pixels and pulls vectors with confidence and skill.
  • Is passionate about typography, layout, and visual balance.
  • Respects the tradeoff between usability and aesthetic beauty.
  • Embraces platform design trends with moderation and taste.

On a personal level, the type of designer I will get along with:

  • Work iteratively and collaboratively.
  • Accepts criticism but stands up for strongly-held beliefs.
  • Designs with integrity and would never steal the work of others.

To Apply

This is an open invitation to talented designers of all ages and circumstances. The only hard requirements are professionalism, skill, and availability for part-time work. Let’s make it happen!

Please send an email to “jobs” at red-sweater.com. Include in your message at least the following information:

  • Your name and professional status.
  • A portfolio of your best graphic design work.
  • Your minimum and maximum hourly availability per month.
  • Name up to three designers who you admire. What do you respect most most about their work or how they conduct it?

Feel free to include other information such as your expectations for pay rate, questions about Red Sweater or my work style, etc.

I look forward to hearing from you. And to taking off this hat!

Categories: Tech Blogs

I’d Tumbl For You

October 16, 2008 - 4:12pm

MarsEdit is my popular desktop application for writing and editing blog posts from the comfort of your Mac.

Tumblr is a popular web-based blogging system that emphasizes simplicity of authoring and presentation.

You might guess that among fans of these two popular products, there is a significant overlap. You would be right. I regularly receive requests from customers who are hoping to use MarsEdit as a remote editor for their Tumblr blog. And I would very much like to see that happen.

But there’s a problem. The Tumblr API is deficient in ways that make it impossible for me to provide an acceptable user experience, and my attempts to reach a sympathetic ear at Tumblr have been fruitless for almost a year. I am forced to reply to each request for Tumblr support with a somewhat complicated, apologetic reply.

Brief Interlude: Blogging APIs

A blogging API is the mechanism through which a blog service such as WordPress, Blogger, Movable Type, etc., make their content available to clients such as MarsEdit for posting, editing, or deleting. At its simplest, you could think of it like a file format. In the same way that Photoshop can edit images of type “JPEG”, MarsEdit can edit blogs that implement formats that it recognizes.

Most services use one of a few standard blogging API interfaces. This makes it possible for applications such as MarsEdit to work with a variety of services. MarsEdit even works with blog systems which I myself have never heard of! Because blog developers design APIs to match a standard implementation, they work well with MarsEdit, Windows Live Writer, and dozens of other blog editing applications.

Generally speaking, when I make improvements to MarsEdit, I’m working to improve its support for these standard interfaces. By adapting to the standard interfaces, an improvement that benefits Movable Type users may also benefit the users of dozens of other blogging services. A pretty nice arrangement for me, users, and blog service developers!

Tumblr’s Custom API

Tumblr does not implement any of these standard APIs. They provide a custom “Tumblr API” that provides both much more and much less functionality than any of the standard interfaces. Normally, I would not be inclined to add support for a non-standard API in MarsEdit, for the same reason that Photoshop would not be inclined to add support for some new image file format that somebody invented. But because of Tumblr’s incredible popularity and because of the strong user demand for such support, I decided to implement support for Tumblr in November, 2007.

In fact, shipping versions of MarsEdit have for almost a year included Tumblr specific support. But I refuse to enable it or endorse it because it falls far short of what I would call an acceptable user experience.

What’s wrong with the Tumblr API? The most glaring omission is that it doesn’t provide the ability to edit existing posts. As you might imagine, for a product called “MarsEdit,” I find this functionality extremely important. Imagine writing a new post to your Tumblr blog, only to notice a second after posting that you’ve made an embarrassing typo. In order to fix the post, you’ll have to leave MarsEdit and go to the web to edit the post. Unacceptable.

Less significant but still annoying is the inability to delete posts. While this functionality is certainly less common than editing, it’s still something that users reasonably expect to be able to do. Though I could disable the “Delete” button in MarsEdit, or display an informative alert when attempting to delete, it would be much better if the API simply supported deleting.

Smaller problems also exist, such as a poorly documented date format, and the inability to read back tags that have been set on a post. I suspect that if I was able to proceed further with the API, other issues might arise over time.

These issues are, in short, great bug reports for Tumblr. But the company does not seem interested in fixing them, or even acknowledging a lack of interest in fixing them. Frustrating for me, and frustrating for any of my customers who yearn for this support.

Where Do We Go From Here?

By no means do I think Tumblr should feel compelled to implement one of the standard blogging APIs. Nor do I feel that they should be compelled to extend their API such that it provides the bare minimum of functionality for clients such as MarsEdit. They are an independent company with priorities that are different than mine. Whether they choose to support remote clients with their API is their decision.

What I want Tumblr and MarsEdit customers to know is that the ball is, and has been for some time, in Tumblr’s court.

There are relatively simple changes that Tumblr can make to their API to facilitate an acceptable user experience not only from MarsEdit, but from other client applications that might choose to embrace the service’s API.

Because Tumblr has not responded to my inquiries, I would encourage any Tumblr customers who would benefit from a remote editing client such as MarsEdit, to contact Tumblr directly and ask that they take my suggestions to heart.

Information about contacting Tumblr is available at the bottom of the Tumblr Help Page.

I hope that this information helps to explain MarsEdit’s continued lack of support for the Tumblr platform. For those of you who have waited so patiently, I hope that one day I am able to add full-fledged Tumblr support to MarsEdit.

Update 10/17/2008: Sometimes the internet works! In a great turn of events, Marco Arment from Tumblr has commented on this very post, indicating that he’ll be making a priority of this requested support. I am looking forward to a positive development in Tumblr’s API!

Categories: Tech Blogs

MarsEdit 2.2.1

October 15, 2008 - 12:07pm

MarsEdit 2.2.1 is now available as a free update for MarsEdit 2 users.

This release addresses a number of bugs and enhances the support for AtomPub-based blogs that was added in 2.2.

A detailed list of changes since 2.2:

  • Restore slight indentation to Title column in blog posts list
  • Fix a crash that could occur when typing Thai and other characters that use more than one glyph per character.
  • Fix a bug that prevented using categories with single quotes in them on Blogger.
  • Fix a bug that prevented adding new categories to a freshly configured blog.
  • Fix a bug where selecting category could undo category choice from toolbar popup
  • Fix bugs that caused the upload and insert buttons in media manager to stay enabled inappropriately
  • AtomPub-specific fixes
    • Support nodes that have namespace prefixes
    • Be sure to properly strip markup child from xhtml content nodes
    • Eliminate obsolete attribute behavior for and
    • Fix resolution of relative URLs in service document
    • Support “Excerpt” field for AtomPub, mapping to the “Summary” attribute.
    • Recognize a blog’s category list when embedded inline in service document.
    • Fix a bug that caused inappropriate UI fields to show on AtomPub blogs.
    • Show correct error message if AtomPub disabled on a WordPress blog.
    • Enable support for adding categories if the categories are not fixed

Hope you enjoy the update!

Categories: Tech Blogs

I’ve Been Macbroken

October 2, 2008 - 8:19am

I was honored this week to be invited as a guest host on the excellent MacBreak Weekly podcast.

MacBreak Weekly 108: Pull My iTunes

I listen to the show regularly so it was a bit strange to record with the guys I’m normally listening to passively. Every so often I had to remind myself that I could actually open my mouth and add something to the conversation!

A particularly well-timed (or poorly-timed, depending how you look at it) topic was that of the iPhone developer NDA, which we discussed a bit, carefully tip-toeing around any actual violation of the NDA, which was still in effect when we recorded, but was lifted a day later.

Developer Austin Meyer of X-Plane fame was also on the show, and one of the points we disagreed upon was whether or not it is productive for people outside Apple to present dissenting opinions or otherwise make a fuss about the inner workings of the company.

Austin tended to believe that we should trust Apple to work its magic in secrecy and with autonomy. I believe those of us on the outside can offer a unique perspective which Apple is itself sometimes blind to. A number of positive changes have happened in the past few years only after the public collectively agreed that Apple was taking the wrong course. It’s possible that Apple’s decision-making process has always been completely independent of outside influences, but I prefer to believe that they value the collective wisdom of their customer base, and are at least taking it into consideration as they develop their products and services.

I really appreciate Leo Laporte’s letting me take part in the show this week. If you haven’t given MacBreak Weekly a try before, this would be a great week to start!

Categories: Tech Blogs

Apple Lifts iPhone Developer NDA

October 1, 2008 - 8:50am

Apple made the right choice today, in choosing to publicly lift the non-disclosure agreement which has, for the past several months, prevented iPhone developers from discussing specifics of the platform and development process.

I’m sure most of you have already heard the news, it’s being shouted from the rooftops on venues such as Twitter, but I wanted to make my own announcement, as I think many developers should do.

Why? Because as much as we cry and whine in the face of Apple’s misguided actions and policies, we should be prepared to turn around and laud them when they do the right thing. Today, Apple deserves to be lavished with praise from all corners of the iPhone developer world.

You go, Apple.

Apple’s statement, reproduced here in entirety because the page has a temporary look to it:

To Our Developers

We have decided to drop the non-disclosure agreement (NDA) for released iPhone software.

We put the NDA in place because the iPhone OS includes many Apple inventions and innovations that we would like to protect, so that others don’t steal our work. It has happened before. While we have filed for hundreds of patents on iPhone technology, the NDA added yet another level of protection. We put it in place as one more way to help protect the iPhone from being ripped off by others.

However, the NDA has created too much of a burden on developers, authors and others interested in helping further the iPhone’s success, so we are dropping it for released software. Developers will receive a new agreement without an NDA covering released software within a week or so. Please note that unreleased software and features will remain under NDA until they are released.

Thanks to everyone who provided us constructive feedback on this matter.

No longer any need to ask forgiveness, now that we’ve got permission to productively discuss the development process. Thanks again, Apple!

Categories: Tech Blogs

Core Intuition 8: For The Good Of The Country

September 29, 2008 - 11:58am

Manton and I sat down to record another episode of Core Intuition, speaking as usually on a variety of topics including the C4 conference, Android, and Apple’s “elevated user experience.”

Hope you enjoy the show!

Categories: Tech Blogs

Building A Bigger Nerd Ranch

September 25, 2008 - 8:52pm

When newcomers to programming on the Mac ask me for advice about getting started with Cocoa, I usually boil it down to three steps, depending on the amount of time and money they are prepared to put into the task:

  1. If you’re the slightest bit curious, buy Mark Dalrymple and Scott Knaster’s affordable book, Learn Objective-C on the Macintosh. It’s great that this book not only starts from the very beginning, but is available as an easy electronic download, for instant gratification.
  2. If you’re convinced you’re in for the long haul, but prefer to learn at your own pace and in your spare time, pick up Aaron Hillegass’s Cocoa Programming for Mac OS X.
  3. If it’s time to put the pedal to the metal, and you want to minimize the chances of failing as you learn the basics of this art, drop everything and enroll in the Objective-C and Cocoa Bootcamp class at Big Nerd Ranch.

Big Nerd Ranch is run by the very Aaron Hillegass who authored the book you picked up in step 2, and he teaches the Cocoa bootcamp class himself. The class is not cheap, but neither is it exploitatively expensive. You will learn to program for the Macintosh with a group of classmates, living and programming on a bucolic country retreat, where your meals and lodging are taken care of.

The Big Nerd Ranch concept is exciting, and I have often fantasized about attending a class there myself. I’m probably overqualified for the boot camp, though as with most life experiences, you learn something when you review the basics. The ranch offers a variety of classes in addition to the boot camp, including courses on more advanced Cocoa programming, iPhone development, and even on Django and Ruby on Rails web programming.

Right now, Aaron is busy building a bigger, better, greener, serener (funner? funnest?) Big Nerd Ranch. He’s actually bought a large plot of land and is drafting plans for several new buildings. He’s treating all of us to many glorious details on his personal blog: possible/probable. The blog frames itself as the chronicle of a man in his mid-youth, aiming to improve an already successful life by taking chances and aiming for the stars. It so happens that his stars form a constellation that idealizes and glorifies learning to program on the Mac.

When you check out the blog, be sure to read through the archives. You’ll be riveted by his stories of searching for suitable property, securing bank loans, winning and losing architects, and grappling with the underlying question of just how crazy pursing this dream might be.

Fortunately for us, Aaron seems to be guiding his own life with the words of his blog title, “possible” and “probable.” I interpret these slash/stroke separated terms optimistically, as I expect he does. If you can imagine something, if it seems vaguely possible, then with a little work it is made probable.

I find Aaron’s optimism inspiring, and his stories remind me of my own possible/probable dreams still waiting to be fulfilled. His zeal for the pursuit of happiness rests safely between recklessness and painful deliberation. He recognizes that while frightening risks need to be taken, putting in hours of hard and tedious work will greatly improve the odds of success.

We should all get to work turning our own possibilities into probabilities, because nobody else is going to do it for us. With the help of Aaron’s blog, we might find ourselves inching just a little bit closer.

Categories: Tech Blogs

Better To Ask Forgiveness

September 19, 2008 - 2:55pm

The tension among iPhone developers is palpable, as hundreds of us wait anxiously for Apple to lift the NDA restrictions that prevent us from discussing development on the platform with the public, or even discussing it amongst ourselves.

It’s widely expected that the iPhone developer community will inherit this charming aspect of the Mac developer community: its insatiable desire to share techniques and code, making us all more productive and more capable of creating top-notch applications. The quality of applications on the Mac is legendary, and helps to fuel a cycle of positive feedback among and between software developers, customers, and Apple itself.

The question on more and more minds is whether the secrecy imposed by Apple will seriously threaten the speed or degree to which this kind of healthy innovative environment develops on the iPhone platform. Some suggest that innovation has already been catastrophically stunted, but I think that analysis is hyperbolic. While the AppStore is filled to the brim with titles that many people wouldn’t hesitate to classify as “junk,” there are also numerous examples of brilliant ideas brought to reality. The question isn’t so much whether the iPhone platform will thrive, but to what extent and how efficiently it will do so.

Perhaps the darkest angle of our ongoing wait for the lifting of Apple’s iPhone NDA, is that we seem to be “waiting for Godot.” The parallels to the fabled character are pretty weak, but I can’t help but think myself a fool when I observe that I, along with countless others, am waiting for a happy day which may never come.

We have to face the fact that Apple may never lift the NDA. We don’t know all of the causes or motivations for their persisting in enforcing it, and they don’t seem anxious to share. This story becomes more tragic and more comedic with each passing day, as Apple allows events that are widely perceived as violations of the NDA to go unpunished, and opens up new niches of freedom that don’t benefit the very developers who are adding the most value to the system.

Today, Apple announced a free program for student iPhone developers. This program seems to endorse learning about and discussing iPhone development in an academic environment, which is great news. The part that stings is this is a privilege which those of us in the professional world are still not convinced we have.

The announcement drove developer Craig Hockenberry of The Iconfactory to a point of protest. Craig has been publicly decrying the NDA since the AppStore opened, and alluding to a number of blog posts which he hopes to share once the NDA is lifted. Today, apparently enraged by the academic program announcement, he decided the time had come to share one of his pending blog posts, NDA be damned. Lights Off is an iPod adaptation by Lucas Newman of the popular handheld electronics game, Lights Out. Craig adapted the original to the official iPhone SDK, and has decided to publish the project’s source code.

The old phrase suggests that it may be better to ask forgiveness than to ask permission. As we stand around like buffoons, waiting for an NDA dismissal that may never happen, perhaps we should start entertaining ourselves. Regaling each other with valuable iPhone development tips and source code might help us to pass the time more easily. And in the event Godot never does arrive, we should feel slightly less foolish for having at least put our time to good use in the interim.

Categories: Tech Blogs

Shush Little Baby

September 15, 2008 - 11:35am

Well, I suppose it was inevitable. I joked on the last episode of Core Intuition that I was being drawn in by the idea of developing software specifically for the “baby market.”

Since that time, I developed and deployed version 1.0 of the simplest product I’ve ever designed: Shush for the iPhone and iPod touch.

Check out Shush on the iTunes App Store.

Shush is an onomatopoeically titled iPhone application whose only purpose is to generate a constant shushing static noise, similar to the noise you might make when you want to quiet a baby who is frantic with fussiness and crying. Of course, you might also use it to calm your fussy and frantic self in a noisy airport, subway, or neighborhood where you live.

Partly due to time constraints, and partly due to purity of vision, Shush is an extremely simple 1.0 application. Its user interface consists of just a single button for starting and stopping the shushing, and a slider for fine-tuning the volume.

Although I really enjoy the minimal design of the app so far, I can see adding some features as time goes on. For instance, users have almost instantly asked for “pink noise” in addition or instead of the default white noise which is currently being generated. A common joke about pink noise is “you know, for girls,” but actually what pink noise refers to is a more appropriate distribution of the randomness in the noise, to suit the way that the human brain hears audio. Learn more about the colors of noise on Wikipedia.

Why White Noise?
Some of you without babies of your own may be wondering what white noise has to do with calming a baby. I read somewhere that every, or at least almost every, culture on earth has a word that is used for calming babies, and invariably it includes some form of this “shush” syllable, geared towards getting white noise out of soothing human’s mouth. In my reading of several books about baby care I have come across repeated advice to use shushing with a fussy baby, and it’s become especially emphasized by the very popular book: The Happiest Baby on the Block, by Dr. Harvey Karp.

One thing I can tell you is this product has already been extensively field tested. It’s easy enough to make a shushing noise with your mouth, but it gets tiring, and can be hard to sustain. I almost always have my iPhone with me, so it’s great to know that if a serious, full-blown fussy tantrum is taking place, I’ve got a little technological help in my pocket. How well the app will do among the general public is anybody’s guess, but I’m sure there will be at least a few jubilant parents out there who find this as useful as I do.

iPhone: $299.

Shush: $0.99

Stopping a fussy baby from screaming inconsolably? Priceless.

Categories: Tech Blogs

FastScripts As Apple Menu

September 15, 2008 - 6:52am

Jim DeVona was feeling homesick recently for the old Apple menu on Mac OS 9 and earlier operating systems. For those of you too young (or too old!) to remember, the Apple icon in the upper-left corner of our Mac desktops used to contain a highly customizable list of files and applications, for easy access from wherever you might be on your Mac.

As an avid user of FastScripts, Jim noticed something about the application that I frankly should make a bigger deal out of myself:

A little-advertised fact about FastScripts is that it will open anything in your Scripts folder, not just scripts.

In short, FastScripts makes a pretty good replacement for the old Apple menu, if that’s what you’re in to. And in general, if you find yourself wanting to access the same documents, applications, or even (gasp!) scripts on a regular basis, FastScripts does a stellar job of organizing them and making them instantly accessible from the menu bar.

You can even add keyboard shortcuts to documents or applications that you put in the FastScripts scripts folders. And don’t worry about copying the actual files in, just make an alias pointing to the original!

Thanks, Jim, for drawing attention to this under-appreciated feature of FastScripts.

Categories: Tech Blogs

Microsoft Ads Are Genius

September 11, 2008 - 8:02pm

Lately we’ve been treated to the introduction of a couple new ads from Microsoft, featuring Jerry Seinfeld:

Windows Ads

The prevailing thoughts on the internet seem to be that these ads are ridiculous, that they make no salient point, that they are barely funny, and that they are a pathetic, misguided attempt by Microsoft to rekindle affection from a public that has grown quite accustomed to viewing the company as a stodgy old curmudgeon.

I think these ads are genius. Or if not genius, as close to genius as Microsoft could ever dream of coming. If I was one of Microsoft’s competitors, I might not be quivering in my boots quite yet, but I’d be thinking, “my god, I am wearing boots!”

Most critics of these ads point out, quite rightly, that the message doesn’t ask viewers to buy anything. If an ad doesn’t ask you to buy something, surely it’s a failure. I find this assessment flawed by default. Come on, people. Surely you, as sophisticated citizens of the internet, can appreciate that advertising is an art more than a science. If you want to criticize these ads, come up with something deeper than their failure to clearly condense into 30 seconds what purchasing action a consumer should take!

A more savvy viewer will notice that these ads are not meant to influence the immediate buying patterns of viewers, but instead to alter the long-term impression of the company that develops and markets the world’s leading desktop computer operating system. The company, Microsoft, is at once desperate to change your impression of it, but at the same time in no particular hurry to do so.

Imagine yourself in Microsoft’s position. you’ve got some 90% of the market share for computer operating systems, and you’re facing increasingly negative reports about the public’s impression of your place in the world. You’re a cold, hard company. You’re not very much fun. You don’t care about innovation. You’re a sleeper in a dancer’s universe. You’ve got no soul. You’re a plain old, boring, damn it all ridiculous stick in the mud. Microsoft, you suck.

If you’re Microsoft, and you’ve grown tired of these assessments, you wouldn’t have to be a rocket scientist to realize that owning 90% of the market and having a bajillion dollars … is a pretty good place to start from, in turning around your public image.

So begins the patient public image reform. When rumors started swirling about Microsoft enlisting Jerry Seinfeld to help sell its wares, the reaction was appropriately cynical. Come on, Microsoft. It’s going to take more to spin Windows than asking last decade’s comics to stand up for it.

But the ads that have actually come out, so far, are nothing like what anybody might have expected. They are so random, indeed so touchy-feely, that the universal reaction among the “smart-asses” I know, is to declare them ridiculous, not-funny, and utter failures.

These people are expecting something cliche from Microsoft, and instead the company has handed them a revolution. While Seinfeld’s collaboration with Microsoft has been widely heralded as a long-overdue reaction to Apple’s Mac/PC ads, Microsoft has instead taken a completely different path. And people can’t stand it.

I propose that Microsoft’s ads, with their mysterious yet evocative plot, are the most creative and purposeful ads ever to come out of the company. While devoted Apple fans might relish in declaring them an utter failure, I make the opposite assessment. These ads are the last best hope Microsoft has at erecting a dam in the face of a tidal shift towards Apple. Microsoft’s relative silence over the past few years has damaged the company. While Apple has charged the public’s mindset with compelling 30-second Mac/PC aphorisms, Microsoft sits idly by, taking the punches and sucking up the pain of each landed blow.

With these first ads from the Seinfeld era of Microsoft marketing, we see a company that is no longer simply spittling up blood, but instead spraying it in the face of its opponent. If Apple has been wondering when the competition will strike back, the answer is now. With a vengeance, albeit a somewhat mysterious one.

People ask what the point of Microsoft’s ad campaign is. What are they trying to convince us of? What do they want us to buy. Who are they trying to fool? If you have to ask, then you won’t be convinced. Microsoft already controls 90% of the market, and only a subset of the other 10% cares to call into question the motives or quality of these latest ads. The very fact that Microsoft can dance at all will be enough to sell them as belle of the ball to most who look on. So if you think the ads suck, don’t worry, you’re not the target audience. Laugh away!

Categories: Tech Blogs

Core Intuition 7: Promoting Ourselves Endlessly

September 4, 2008 - 8:09pm

I’ve been pretty swamped these past few weeks helping to care for our newborn son, who arrived on August 8, 2008. That’s 08/08/08 for the numerophiles out there! We’re pretty excited by him, but we’re also experiencing the typical exhaustion that comes along with a new baby.

Finally got around to recording another episode of Core Intuition, which is now live and ready for download. In this episode we talk a bit about promotion and how small developers such as ourselves should approach it, and also rap about a few other issues such as how I’m being drawn toward the “baby oriented software” market.

Give it a listen, hope you enjoy!

Categories: Tech Blogs

Wii Transfer 2.6

August 14, 2008 - 2:56pm

My buddy and podcasting cohort Manton Reece has announced the release of Wii Transfer 2.6. His application is apparently a very cool means of interfacing content from your Mac over to your Nintendo Wii. I wish I had more hands-on experience, but unfortunately I do not yet have a Wii of my own to play with!

If you love your Wii and your Mac, then this app is probably worth taking a look at. Congratulations, Manton, for finally shipping :)

Categories: Tech Blogs

Core Intuition 6: Bug And Baby Tracking

August 6, 2008 - 8:58pm

A Reminder: This blog post and the accompanying podcast audio media are covered by the terms of the Core Intuition NDA.

The contents of this podcast, expressed or otherwise, including but not limited to hints as to the veracity therein, triple-entendres relating to its verbosity, and also covering private or public scrutiny as to the tenacity of this agreement shall not, under any circumstances be conveyed, portrayed, imbibed, or parlayed to or by Apple Inc, its affiliates, or its aficionados.

(Spread the word! But don’t tell Apple!)

Just posted! Core Intuition 6, in which Manton and I leave a love note to The Talk Show, yack it up about bug tracking systems, and discuss juggling an indie business with new-dad responsibilities.

Thanks for listening!

Categories: Tech Blogs

Unit Testing Roadblocks

August 1, 2008 - 9:49am

Unit testing is a good idea. Ask any random developer what they think about unit testing and you’re likely to get one of four responses:

  1. I don’t know what they are.
  2. I love them! You should always use them!
  3. I hate them! You should never use them!
  4. I appreciate them, but I’m lazy and don’t use them that much.

Of these, I have the most respect for the first and fourth. If you don’t know what unit testing is, you can hardly be blamed for failing to employ them. Go learn more about them and maybe you’ll enjoy the rest of this entry a bit more. If you are familiar with them but feel that you don’t use them enough, don’t beat yourself up. You’re probably using them “about the right amount.” That is to say, as much as you need to, in order to alleviate your pains.

Groups 2 and 3 could practically be folded into one, because each is about as useless the other. Some things in life demand a strict behavioral code, but programming is not one of them. Some kinds of code bases and programming tasks are extremely conducive to unit testing, and others are not. Use them wherever they make sense, and where they accelerate your ability to improve upon your existing code base. I won’t go into much more about the whens and ifs, but Wil Shipley and Bill Bumgarner have delved deeper into this question, if you’re interested in reading more.

Laziness Incubators

Let’s assume for the sake of argument that you’ve learned about unit testing, and self-disqualified yourself from either of the extremist groups described above. You probably find yourself in that fuzzy group that I’ve labeled lazy yet appreciative. Laziness on its own is one thing, but it doesn’t help when tedious roadblocks are put in our way to incubate further laziness.

“I should really add a unit test suite for this complicated class.”

“But then I’d have to create a new unit test file, and stuff…”

I’m ashamed to admit that this is how many a unit test has been put off. Other laziness incubators include the friction of adding a suitable unit test bundle target to a project, and the difficulty of deciding how to factor your unit tests so that they make sense in the context of your project. Oh, and let’s not overlook the difficulty of having to think up how to write the specific unit tests themselves.

Apple makes some of these roadblocks somewhat easier, with built-in unit testing support for Xcode. Unfortunately, they only go about 80% of the way in many regards, leaving us floundering to figure out how to fill the gaps for the remaining assistance we might need. These gaps where we’re forced to scramble for solutions can be a great deterrent to using unit tests as much as we might like.

Debugging Unit Tests

So you’ve overcome inertia and established unit testing build targets in your projects. You came up with an approach that makes sense for your code, created a new unit test suite source file, and actually written a few tests for your code. But now you’re bound to run into a vexing question: “how the heck do I debug this thing?”. Since unit tests are generally built into a standalone bundle, there’s nothing for Xcode to run. But when you come across a failing unit test and you can’t figure out why, you find yourself wishing you could step through the code just as you might in an application.

The answer to this question, as well as many other “missing pieces” for unit test support in Xcode, comes from Chris Hanson, who shares a great deal of useful information on his blog, including this gem on debugging unit tests. This post also contains a number of useful links if you’re still struggling with the other roadblocks such as adding a target, etc.

What we learn from Chris is essentially that the easiest way to debug unit tests in your project is to set up some executable, any executable, and arrange for your unit test bundle to be “injected” into the executable at runtime. Now, to debug your unit tests, you just ask Xcode to debug the injected executable.

It turns out this isn’t very difficult, but it’s tedious. To set up this custom executable, you need to add a bunch of cryptic command line arguments and environment variables to your project. Yuck! This cumbersome process has caused me on many occasions to “just skip doing unit tests for now.” That’s not really helpful to me or to the health of my code, so I finally got off by butt and wrote a handy AppleScript to do it for me:

Download Add Unit Test Executable. Free AppleScript.

What does this script do? In a nutshell, it asks for the name of your unit test bundle. Provide it, without the “.octest” extention, and the script will add a custom executable to your application, with all the gross arguments and environment variables needed to “make it work” in both Xcode 3 and Xcode 3.1. I added it to my Xcode application-specific scripts folder, and select it (using FastScripts) whenever I find myself in a project that doesn’t already have a suitable custom executable for debugging unit tests.

My script uses TextEdit.app as the test harness application, because it’s on everybody’s Mac, and because it seems like a fairly innocuous host application. Of course, you could use your own application, or another custom host application of your choosing. Just edit the script to suit your needs.

Hope this helps some of you overcome one source of laziness getting in the way of writing excellent unit tests!

Update: It just occurred to me that this script could probably be made even smarter by assuming that the selected target in the active project is in fact the test bundle we want to debug. That would eliminate the clumsy need to ask the user for the name of the test bundle.

Categories: Tech Blogs