Jan 192011
 

After the wild success of the Paris documentation sprint we had in the fall, we’ve decided to start trying to do a sprint every quarter, alternating between in-person and virtual sprints. Our first-quarter sprint will be a virtual one, with writers gathering in #devmo to collaborate, commiserate, and cajole one another while cranking out epic quantities of documentation!

The virtual doc sprint will be held on January 28 and 29. This is a great time to challenge yourself to write about something you want to learn about, or have been meaning to write about for a while now. Or to write something for the very first time! There will be plenty of writers around to help you with the verbiage if you’re not an expert wordsmith. Just drop into #devmo and tear into something.

I, for one, am planning to finally dig into the Cocoa event model for NPAPI plugins. The subject intimidates me entirely, but that makes this sprint a good time to challenge myself!

 Posted by at 1:16 PM
Aug 092010
 

The new Add-ons Builder from Mozilla Labs has become a must-have tool for me when I’m writing documentation for Gecko and Firefox. In the past, when I needed to try things out before writing documentation for a new API, I would have to write up an extension, install it, debug it (with the repeated Firefox relaunches that entails), then finally write my documentation.

With the Add-ons Builder, I can write sample or test code in-browser, debug it in place without any restarts, and write my documentation — all at the same time. No more writing an entire extension to test two lines of code. I just drop them into the Add-ons Builder and go.

The amount of time this has saved is huge. Even better, my simplest code snippets are getting tested much more often. In the past, I rarely bothered to test one-liners, but now even those get a quick trial run.

So, a huge thumbs-up and thank you to everyone responsible for creating this tool. I’m your number one fan!

 Posted by at 3:10 PM
May 262010
 

Although we’ve actually been working on Gecko 1.9.3 documentation for a while now, we finally now know that these changes will be in Firefox 4. As such, I’ve now set up the Firefox 4 for developers page on the Mozilla Developer Center site; this page will provide links to all Firefox 4 developer documentation.

A few articles have already been written. There’s lots left to do, of course, but we’re making progress. If you see something you’d like to write about, feel free to contribute!

As always, the content of that page is in flux while the feature set of Firefox 4 continues to be adjusted. In addition, it’s obviously too early to be sure exactly what articles will be produced for all the topics at hand, so there are a number of placeholders.

If you’ve contributed code to Gecko or Firefox recently, you may be hearing from me or one of the documentation contributors soon, to gather information about your area of expertise as documentation comes together.

 Posted by at 6:02 PM
May 032010
 

I’ve been using it some more, and I have additional thoughts. Go figure!

Back To My Mac

One thing that would be insanely useful for me would be support for accessing Back To My Mac services using my iPad. Prime among these would be accessing my Mac via Screen Sharing. Yes, I’m aware there are VNC clients available, but VNC uses more bandwidth and is slower than the Apple Remote Desktop style screen sharing used by BTMM. I would love to be able to quickly slip over to my Mac and do something like email myself a file I forgot or something like that.

Apple’s Extra Apps

Apple has released some extra iPhone apps over the years. I own two of these: Texas Hold ‘Em and the iDisk app. Neither of these has been updated for iPad yet, which is annoying.

Keyboard Dock

I like this thing. I bought it on a whim, but I predict I’ll actually use it pretty often. I like that waking up the iPad using the keyboard doesn’t require the “Slide to unlock” part.

Printing

It’s amazing how fast you get so used to doing stuff on the iPad that the lack of printing support from arbitrary apps becomes a problem. For example, last night I placed an order online on it, forgetting that I needed to be able to print my receipt. Now I’m stuck. Apple needs to add a printing API, or at a bare minimum a way to email a PDF of the page you’re looking at in Safari. Just emailing links to the desktop doesn’t always cut it.

 Posted by at 6:04 PM
May 022010
 

I got my iPad with 3G a couple of days ago, and I have some initial thoughts.

First off, by and large, this is possibly the most amazing device I’ve ever used. It’s beautiful, it’s fun to use, and it seems perfectly suited to replace my laptop for those basic tasks that I used to whip it out for: email, general web surfing, quick blogging, etc.

Obviously I’ll be keeping the MacBook Pro for heavier-duty tasks.

However, I thought I’d sum up a few specific things that occur to me as I use it.

Safari

Browsing the web works pretty well in Safari, for basic surfing tasks. It feels quite natural, by and large, and pages render cleanly and quickly.

However, I do have one specific nit to pick: when you switch between tabs, about 90% of the time, Safari reloads the tab you switch into. This, for my needs, is a serious drawback.

One of the major tasks I plan(ned) to use my iPad for is basic maintenance of the Mozilla Developer Center wiki. That is, reading the recently changed articles list in Google Reader and opening up articles that need re-editing in new tabs to tweak them or proofread them, and also occasionally opening up the user ban panel to ban users.

This is all technically possible, except for this common usage scenario:

  1. A user creates an account.
  2. The first thing they do is post spam.
  3. Now I need to both delete the spam and ban the user.
  4. So I click the link in the RSS feed to open the article to delete it.
  5. Now I switch back to the Google Reader tab so I can click the “ban user” button.
  6. But the page reloads, and that item in my Google Reader tab, now having been read, is no longer available, so I’ve lost the “ban user” button.

Frustrating. There are workarounds, but they’re tedious and require significant changes to my workflow over how I do things on the desktop.

I fail to understand why Safari insists on reloading tabs on switch. Especially when it doesn’t do it every single time. I’d very much like it to stop, please.

Mail

Mail is good but not awesome on the iPad. To be fair, doing mail “awesome” is a difficult task, one which I don’t think anyone has really achieved yet.

My main gripe about Mail on the iPad is that it insists on opening messages automatically. This same thing frustrates me on desktop clients. Having to turn off a “preview” mode on the desktop is annoying enough; having it be the only way to fly on the iPad is annoying. I only want to see the content of a message when I explicitly tap on it. Until then, I’d rather see a blank panel next to it. Seeing the content of messages automatically makes it too easily to accidentally mark a message as read before I’m actually ready to read it, let alone act on its contents.

I’m pleased to know that unified inbox support is on its way in iPhone OS 4. I hope other improvements are coming as well.

iBooks

iBooks is the hotness. That’s all I have to say about that so far. I’ve not spent enormous amounts of time reading yet, so I don’t have more comments than that yet.

Third-party Apps

Another gripe, although not an overly important one, is that many of the apps I use on a daily basis (often many, many times a day) haven’t yet got iPad versions, or have iPad versions that aren’t quite ready for prime time.

High on the list is the Facebook app, which hasn’t been updated to use all that screen space yet. Yes, you can do Facebook in Safari, but I find I actually prefer the iPhone app’s experience over the browser experience. Curious to see what Facebook will do on iPad.

I also would like a good Google Reader-syncing RSS reader. On iPhone, I’m a huge fan of Byline. I bought “My Times” yesterday for a couple dollars, but it crashes pretty often. According to the developer, an update is winding its way through the approval process. However, I prefer the Byline UI and suspect that an iPad version of that would be nicer.

I love Rooms for IRC on iPhone, but it doesn’t have an iPad version yet. I bought a copy of LimeChat, which works well, but in landscape mode, it insists on having two sidebars, one for your channels, and one for the users in the channel, and there’s no way to hide either or both of them, meaning you’re stuck with the chat squeezed in between them. I’d like this to let me use more of my screen for actual content. The user and channel lists could easily be drop-downs.

I’m a long-time Twittelator user on the iPhone, and the iPad version was one of my first purchases. By and large I like it, but IMHO it uses too much of the screen for borders and cute effects and not enough for content. And in landscape mode, it makes the friends timeline very narrow, using most of the screen for a box that lets you look at various other views, such as @mentions. I don’t use any of those views very often. I’d much rather be able to have my friends timeline use the majority of the screen.

 Posted by at 5:55 PM
Apr 162010
 

As I’ve previously blogged about, I’ve written a Firefox extension that lets you easily add images from the Web to your iPhoto on Mac OS X. This serves both as a handy utility and as a nice demonstration of how to use js-ctypes to access native libraries from JavaScript without having to write any C glue code.

I’ve also written a rather lengthy article on MDC about how it works. Hopefully this will be helpful!

I’m now getting started on writing the more extensive documentation for js-ctypes, including a full reference for its API.

If it’s not obvious, I think js-ctypes is one of the coolest things ever.

 Posted by at 3:02 PM
Apr 122010
 

I’m back at the office now for the first time since my surgery. Today will be a little complicated due to certain family obligations during the day, but at least I’m really working!

MDC

The big task for this week, other than getting caught up (which shouldn’t be too hard since I generally was able to triage most of my email and did handle MDC editing tasks while I was out), is to start the overhaul of the js-ctypes documentation now that I have a pretty good handle on the changes there.

We’ve scheduled — finally — our upgrade to MindTouch 2009 9.12.2, to take place during tomorrow’s maintenance window. We have hopes that this will further improve reliability and performance. It does on our staging server, at least under certain situations, but it’s hard to gauge how that will carry over to the live site, which obviously gets much more traffic and is more powerful hardware.

Weave

I’ve started playing with the code for the iPhone Weave client a bit. I think I’m going to try to build a simple web browser around the code, so I can do quick surfing to look at stuff using my Weave bookmarks and history without having to tap links to swap over to Safari to do it. At the moment, I have the existing client building but it’s crashing on me. Not sure, yet, why that’s happening. Looks like I may have pulled the repository in a state of transition, so I’ll try again tonight.

Weave has turned into something I really can’t live without, and it’s driving me nuts not having it on my iPhone.

This will become more of a problem once I have my iPad; I placed my order for a 3G iPad last night after finally having a chance to try one out yesterday afternoon. I foresee the iPad becoming my primary method of surfing and handling email when I’m at home, just because of how convenient it is to have with me. So getting a good Weave client together is pretty important to me.

 Posted by at 10:19 AM
Apr 022010
 

This afternoon, I got my js-ctypes sample working. As I mentioned yesterday, it lets you add images you find on the web to iPhoto on a Mac by simply right-clicking, choosing “Add image to iPhoto” and away it goes, automatically.

The trick, for the moment, is that the sample requires a customized build of Firefox, since it relies on a patch to enable support for accessing external data. This patch, or, more likely, a revised version of it, should land sometime before too long. There’s some discussion ongoing about changing the way this feature is exposed, so I’m holding off on posting my sample until that’s finalized.

I’m quite intrigued by the possibilities offered by js-ctypes; another idea I’m kicking around is an extension that would let you download and burn ISO images in a single action, using the Disc Recording framework built into Mac OS X.

There are a lot of interesting things this makes possible to do very easily, that previously would have involved a lot of native code and XPCOM trickery. It’s very exciting stuff!

 Posted by at 11:56 PM
Apr 022010
 

I’ve been working on sample code for js-ctypes lately. My demo isn’t done yet, but I thought I’d talk about the experience a little. As you’ve probably seen, js-ctypes is a new JavaScript code module that makes it possible to describe a C API and access it from JavaScript.

This opens up a lot of possibilities for extension developers, by making it vastly easier to interface with native libraries. This includes support for directly talking to system APIs.

The demo I’m working on is an extension for Mac users that adds an item to the context menu that appears when you right-click on images, “Add image to iPhoto.”

I’m using Core Foundation routines and the Launch Services API, which is part of the Application Services framework to implement this, by taking the URL from the img element’s src attribute, grabbing that, and using Launch Services to open it in iPhoto.

The trick at the moment is that I need to pass a reference to a standard, built-in structure that’s part of the Core Foundation framework to a Core Foundation routine, and at the moment, js-ctypes doesn’t support accessing these external structures. But dwitte has a patch for that, and we’re testing that patch now, so that barrier should be lifted shortly.

With that done, hopefully I’ll be able to wrap this demo up soon, then I can work on updating the existing js-ctypes documentation, which was written to an older version of the API. While the existing docs are mostly still accurate, they only cover a fraction of the current capabilities of js-ctypes.

The past week or so of working on this has been a blast. I really enjoy when my code monkey side and my documentation overlord side collide like this. It’s great fun, and, as in this case, often leads to discoveries that are helpful to the engineers behind the feature being documented.

In this case, we found a viable use case for needing to implement support for accessing external data provided by libraries. We also found a situation in which not being able to catch exceptions thrown by the external libraries can be a problem (ie it can bring down your browser), so there’s now a bug filed for that.

Also, the errors reported by js-ctypes still need some love, so there’s a bug for that now.

Also, there are cases where it would be very helpful for clarity’s sake — and for implementing things such as the concept of a CFMutableArrayRef being passable to any function that accepts a CFArrayRef — to support const declarations.

This is one of those times where being a technical writer feels especially full of win. My work toward understanding a technology has resulted directly in improving the technology itself. That reeks of awesome, and makes my job all the more worth doing.

 Posted by at 1:30 AM
Mar 072010
 

I recently started blocking ads in my browser. I don’t actually mind advertising, and I resisted blocking ads for a long time. I understand that some sites rely on ad revenue to earn a living, and I’m fine with that.

Why, then, have I started blocking ads?

Simple. Companies that insist on using tricks to try to force you to look at ads you don’t want to see. Pop-up and pop-under ads, for example.

Worse, to me, is those ads that pop up if you simply mouse over text in the middle of a news story. This is the epitome of skanky behavior on the part of advertisers. It’s offensive and disruptive. This is why I block ads now. If advertisers would simply realize, “Hey, if we only put some ads here and there in the main page and refrain from making them stunningly distracting, from interfering with the actual usability of the site,” then I would be perfectly happy to turn off the ad blockers and let the ads back into my life.

Until then, I’ll block the ads.

 Posted by at 12:11 AM