Archive for the 'Creations' Category

Now, 4% more bingo!

Saturday, January 6th, 2007

I’ve just posted version 1.0.1 of Keynote Bingo MWSF 2007 Edition. This adds nine strings, and at Patrick Gibson‘s suggestion, removes one (“Intel Core 2 Duo”, which has already happened).

The added strings, all by me, are:

  • Name of Apple phone: iChat mobile
  • Apple phone is CDMA
  • Apple phone is GSM
  • Apple is now a mobile-phone service provider
  • Apple announces agreement with Cingular
  • Apple announces agreement with Verizon
  • Apple announces agreement with Sprint
  • Apple announces agreement with T-Mobile
  • Lucida Grande replaced by Myriad in Leopard

This brings the count to 186, from 178.

You know MWSF2007 has started when…

Friday, January 5th, 2007

It’s finally here: The MWSF 2007 Edition of Keynote Bingo is out. Just in time for the start of the Expo!

It’s very small — the whole disk image is about 57 K, using UDIF+bzip2 format. As you may guess from that, the disk image requires Tiger; there won’t be a Panther version this time, because the app requires Tiger too (for PDFKit and NSError presenting). Instructions are included on the disk image, in the README file.

I would encourage you to download your copy now, or at least very soon. When I released the WWDC 2006 version, the vast majority of the downloads came within the half hour or so before the keynote started. At the time, I was on GeoCities, so that drove me straight into the hourly bandwidth limit. I don’t have that problem anymore, being on TextDrive now; even so, you should get your copy now to help the server and its pipe not be swamped come the keynote.

Here’s hoping you get a bingo!

On initializing static variables

Thursday, January 4th, 2007

Did you know that you don’t have to initialize static variables? (If you’ve done any Cocoa programming, you know that statics are commonly treated as class ivars, most commonly to hold singleton instances.)

Quoth C99 (§6.7.8 paragraph 10):

… If an object that has static storage duration is not initialized explicitly, then:

  • if it has pointer type, it is initialized to a null pointer;
  • if it has arithmetic type, it is initialized to (positive or unsigned) zero;
  • if it is an aggregate [array or structure —PRH], every member is initialized (recursively) according to these rules;
  • if it is a union, the first named member is initialized (recursively) according to these rules.

And I’ve prepared a test app that shows that gcc 4.0.1 on OS X 10.4.8 does seem to comply with this handy part of the standard.

Happy not-initializing!

The list of strings

Wednesday, January 3rd, 2007

Here’s what I have for MWSF 2007 Keynote Bingo. This is the entire list, including old strings from the WWDC 2006 edition (except for the ones that I pruned).

If you’re still kicking around a string idea, or you think of one while flipping through this list, consider this the eleventh hour. This is the last call for new strings. ☺


These strings are from the original WWDC 2006 card by John Siracusa:

  • Universal Adobe or MS Office demo
  • “Boom”
  • Virtualization in Leopard
  • New video iPod
  • New iPod Nano
  • Mac Pro model <= $1,499
  • “Otomatic”
  • “New” Finder in Leopard
  • New case for Mac Pro
  • Movie rental service
  • iPhone
  • Mac Pro model >= $3,499
  • New MacBook Pro
  • “One more thing…”
  • New desktop Mac (not Mac Pro)
  • New kernel in Leopard
  • Resolution Independent UI in Leopard
  • iPods with cameras
  • Quartz 2D Extreme enabled in Leopard
  • New file system in Leopard

New strings for WWDC 2006!

  • At least one white product
  • At least one black product
  • At least one brushed-metal product
  • At least one product in multiple colors
  • HD/HDTV mentioned (HD-DVD doesn’t count)
  • Blu-Ray
  • Bluetooth 2
  • HD-DVD
  • New displays
  • New display size
  • Any display size discontinued
  • Mac mini accessory
  • Intel Core 2 Duo
  • ATI dropped
  • ATI not going away
  • Xserve with Intel
  • 500 GB drive
  • 750 GB drive
  • New iPod model
  • Apple Bluetooth headphones (no mic)
  • Apple Bluetooth headset
  • iPod with Bluetooth headphone support
  • iPod flea/pico
  • Touch-screen iPod
  • Finger-hover- operated iPod
  • Tablet iPod
  • Tablet MacBook (Pro or otherwise)
  • iPod accessory
  • Tie-in between Quartz and any GPU maker
  • Mac engraving
  • New incarnation of AirPort
  • Nike+iPod mentioned
  • USB telepathy adapter
  • FireWire dropped from all Macs
  • Safari 3.0
  • RSS/Atom /podcasting added to any app
  • Updated iLife (not just iTunes)
  • HyperCard 3.0
  • Growl included in Leopard
  • Growl cloned in Leopard
  • Safari RSS replaced with Vienna
  • Safari RSS replaced with Feed
  • Safari RSS replaced with NetNewsWire
  • Safari RSS replaced with NewsFire
  • Safari RSS replaced with NewsMac
  • BitTorrent in Leopard (in any form)
  • BitTorrent in Safari
  • BitTorrent in iTunes
  • BitTorrent in iPhoto
  • BitTorrent in Pages
  • BitTorrent in Keynote
  • BitTorrent in Software Update
  • BitTorrent in Chess
  • New Sudoku application
  • New Sudoku widget
  • BitTorrent tracker in OS X Server
  • New Pro app
  • One or more updated Pro apps
  • Grapher 2.0
  • Writable FTP in Leopard
  • FTP client
  • New iApp
  • OpenOffice Document support in Pages
  • OpenOffice Document support in TextEdit
  • Updated iWork
  • New app in iWork
  • Spreadsheet
  • Crash during demo
  • iTunes DRM changing
  • iTunes DRM going away
  • iTunes Store music sales
  • One or more new APIs in Leopard
  • ZFS in Leopard
  • ZFS in Leopard explicitly denied
  • ReiserFS in Leopard
  • Writable NTFS in Leopard
  • Any of ext[234]fs in Leopard
  • BeFS in Leopard
  • New UI theme
  • New QuickTime codec
  • Mouse gestures
  • Hand gestures (via iSight, like EyeToy)
  • Focus- follows- mouse
  • New API added to Quartz
  • Copy of Windows to be included with every OS X disk
  • Copy of Windows to be included with every Mac
  • New anti-virus app introduced due to Windows
  • New .Mac features
  • .Mac price dropped
  • .Mac price raised
  • Backup 4.0 (.Mac)
  • .Mac SDK 2.0 released
  • Music is played during an app demo
  • Musical guest
  • Video conference
  • Apple Store data presented
  • Third party application talked about
  • Phil Schiller on stage
  • Roz Ho on stage
  • Paul Otellini on stage
  • Wil Shipley on stage
  • Chris Forsythe on stage
  • Apple employee number 8 (Chris Espinosa)
  • Steve with beard
  • Steve without beard
  • Steve with no belt
  • Shot of audience
  • Audience member yells “BINGO!”
  • Audience member whispers “BINGO!”
  • Audience member ejected from auditorium
  • Audience member ejected for yelling “BINGO!”
  • Audience member not ejected for yelling “BINGO!” (special dispensation from Jobs)

New strings for MWSF 2007!

  • Apple’s cell-phone: “iPod phone”
  • Apple’s cell-phone: “iMobile” (Kevin Ballard, referencing iPhone Insider)
  • Apple’s cell-phone bundled with new Macs
  • Illuminous (new UI instead of Aqua)
  • Keynote ends without “One more thing”
  • Parallels bought by Apple, bundled with Leopard (Kevin Ballard)
  • iPod phone socks (Kevin Ballard)
  • Spreadsheet in iWork 2007 (Kevin Ballard)
  • Spreadsheet’s name is Numbers (Kevin Ballard)
  • Name of iTV announced
  • Release date for iTV (Kevin Ballard)
  • .Mac discontinued
  • Beatles on iTunes Store
  • Paul McCartney on stage
  • Representative of Apple Records on stage
  • Bertrand Serlet on stage
  • “Top Secret” Leopard features revealed
  • iTunes Store TV show sales
  • iTunes Store movie sales
  • iTunes 8
  • GPS in the iPod (Andy Kim — he was joking, but I like the idea. Also, I will accept a GPS add-on (see the Belkin voice recorder for an example).)
  • New “adult” section in iTunes Movie Store (Luc Pellissier)
  • New iLife app
  • One or more updated iLife apps (including iTunes)
  • LED backlight on notebooks (DigiTimes.com: Apple and HP to launch LED-based notebooks)
  • Bruce Chizen (Adobe CEO) on stage (Jesper)
  • Steve to Bruce Chizen (Adobe CEO): “What took you so long?” (Jesper)
  • Steve in Nike+ shoes (Jesper)
  • Steve in New Balance shoes (Jesper)
  • Steve in shiny business shirt (Jesper)
  • Nike+ for more iPods (Jesper)
  • Nike+ for iPod phone (Jesper)
  • “The back of our computers looks better than the front of our competitors’ computers.” (Jesper and Andy Kim)
  • Potshot at Vista (Jesper)
  • Announcement of one or more movie studio deals for iTunes (Andy Kim)
  • No announcement of movie studio deals for iTunes (Andy Kim)
  • Adobe CS3 release date announced (Andy Kim)
  • 802.11n compatible Airport or Macs (Andy Kim)
  • New displays with built-in iSight (Andy Kim)
  • iPod games mentioned
  • One or more new iPod games
  • HD content on iTunes (Dan Benjamin: Regarding Macworld 2007)
  • New, smaller laptop (Dan Benjamin: Regarding Macworld 2007)
  • Beatles special-edition iPod (Dan Benjamin: Regarding Macworld 2007)

UPDATE 2006-01-07: See also “Now, 4% more bingo!”, in which I announce version 1.0.1. Version 1.0.1 adds a net total of 8 strings.

Keynote Bingo MWSF 2007 Edition page is up

Tuesday, January 2nd, 2007

The keynote looms ever closer, and so does the bingo! I’ve now posted the MWSF 2007 Edition page, complete with the sneak preview. (You can tell that seed numbers are now printed — this one is marked “Card #0”.)

It’s still not too late to think of things to put into those cells. You can propose new strings either by commenting on my “Call for strings” post or by emailing me (my address is on my front page).

Patches for WP-Cache

Sunday, December 31st, 2006

UPDATE 4:45: Ricardo Galli, the author of WP-Cache, has accepted my patches and released WP-Cache 2.0.20 incorporating them (along with one other fix).


I use the WP-Cache plug-in here on the blog in case that anything I post here should get dugg/linked-listed/reddited/etc. Over on Jeff Johnson’s blog, Scott Stevenson says:

… Vienna … seems to get confused on these:

  • feed://boredzo.org/blog/feed/atom/

This prompted me to run my Atom feed through the Feed Validator. It mentioned that I was using the “copy” named entity reference and that that was undefined; that was easy enough to fix. It also mentioned that my feed was being sent as text/html.

Wait, what?

Sure enough, curl -D /dev/stdout -o /dev/null revealed that my feed was being sent as text/html; charset=utf-8. I looked in wp-atom.php (I use Jeff Johnson’s Atom 1.0 version, in case you’re wondering), and saw that it was indeed promising application/atom+xml. Funky.

I did something or other to wp-atom.php, then reloaded the Feed Validator. Imagine my surprise to discover that — in addition to still saying text/html — it still had the “copy”-entity-reference error!

Then I remembered that I use WP-Cache, so it was retrieving a cached copy of the feed. So I went to the WP-Cache Manager and dropped the cache. OK, curl says application/atom+xml now, so I went back to the Feed Validator.

Still text/html!

I tried curl again. Sure enough, it was back to text/html. WTF?

I also noticed this other symptom: When I loaded it freshly after dropping the cache, it had a bunch of headers like “Cache-Control” and “Expires”. I didn’t know those were there. When I loaded it again (from the cache), those headers — among others — were missing.

The verdict was clear at this point: WP-Cache was eating my headers.

Further investigation confirmed the diagnosis, and several hours of even further investigation revealed the nature of the bugs (plural) that resulted in it:

  1. WP-Cache wanted to retrieve the headers from the response in order to cache them, but the function that it was using to do that (apache_response_headers) didn’t exist, so it (correctly) skipped over all of that code. I added code to make it use headers_list when apache_response_headers isn’t available.
  2. Even after I did that, WP-Cache didn’t actually store its shiny new headers anywhere because it had not yet created the description object to put them into.

I have filed two tickets, each with a patch. I’m running with both patches now, and I provide the links to them so that you may run with them too. (The second patch fixes both of the problems above; the first patch is for an unrelated bug that I fixed while I was there.)

Keynote Bingo sneak preview

Friday, December 29th, 2006

Here’s a sneak preview of the MWSF 2007 Keynote Bingo card, which I’m still working on.

The bingo card with none of the strings shown yet. New font: Bitstream Vera Sans, in place of Optima.

Changes:

  • The new font for headings, instructions, and the “Made in the USA” tag is Bitstream Vera Sans, replacing Optima from the previous Bingo.
  • I replaced the word “FREE” in the center with a star on an 80%-white background.

  • You’ll be able to enter any seed value of your choice. This is so that John Siracusa can distribute cards 1–n (for a value of n of his choosing), if he wants to. It’ll also make it easier for winners, if any, to tell others what cards they won on.
  • There’ll be an app that will let you enter the seed value, so that you can reproduce somebody else’s previously-generated card. You’ll also use this app to generate a card randomly (using the current time as the seed). In either case, the seed value is printed on the card.
  • You’ll no longer be required to have the disk image mounted when you open the card in Preview. The app will take care of being in the right directory when it converts the EPS files to a PDF.
  • If I have time, I may do a Windows version: EPS only, no app. Obviously, this means that Windows users wouldn’t be able to use a seed value of their choosing; it would be hard-coded to use the current time. Consider it a downside of not being on a Mac. (Or, feel free to write your own app using the same EPS files. It’ll be the same BSD license.)

I’m open to suggestions for new and different header graphics, and my call for strings still stands — I’ll be doing the strings last, so you still have time to think of predictions (serious or humorous) and either post them in comments on the call-for-strings post or email them to me directly.

Keynote Bingo: Call for strings!

Sunday, December 24th, 2006

I’m working on the new Keynote Bingo for MWSF 2007. It’ll be a little different this time, with an actual app that lets you enter a specific seed number for the PRNG.

Other than the “iPod phone” and the “Illuminous” UI replacement for Aqua, what do you think may be announced in the MWSF 2007 keynote? Some degree of fancy/humor is welcome, but I do want to keep it mostly grounded in order that, maybe, we should hear a “Bingo!” on the live stream. ☺

(I do request that if anybody yells “Bingo!”, that it should be the last “Bingo!” for that keynote. Once is amusing; twice is pushing it; any more than that is simply disruptive. Let Mr. Jobs give his keynote address in peace.)

Feel free to post your suggestions in the comments, or if you’d rather suggest something anonymously, by email. I will list your name in the credits in the Keynote Bingo app unless you tell me otherwise.

Plugging the comment spam inlet

Saturday, December 16th, 2006

I’m going to be working on the comment spam problem today. Attempt #1 is adding a Turing test to the comment form; you might not be able to comment while I’m debugging it. I’ll update this post when it’s all working.

UPDATE 2006-12-16: I’ve decided to host the project for attempt #1 at Google Code. It’s called Negative Turing Test. You’ll be able to get the fruits of my labor when it’s done, and you can watch me work on it in the Subversion repo. (And yes, that means that I’m not debugging yet. You can still comment for now. ;)

Instant replay in iTunes

Friday, December 1st, 2006

While flipping through Michael McCracken’s blog, I found his blog post about his instant replay in QuickTime Player script, and decided that that would be a good thing to have in iTunes (especially when I want to quote some George Carlin to somebody).

So here it is. It’s in source-code-only format; you should probably compile it using Script Editor before using it. It uses iTunes’ own rewind function, which will jump back four seconds; play with the “delay 0.1” line if you want to jump back farther. I bound it to ctrl-⌘-⇠ using Quicksilver‘s Triggers feature.

GestaltPeeker

Wednesday, November 29th, 2006

My newest product is a front-end to the Gestalt Manager, the Carbon API for system introspection. Examples and the app on the GestaltPeeker webpage.

It’s actually quite old, but just now is when I got around to rubbing it shiny, ironing out the bugs when running on Intel systems, and releasing it. :)

New utility: image

Friday, November 17th, 2006

When I was writing “The fun of length-declared strings”, I needed to resize that lightbulb photo down to something more suitable for a blog post. Normally, I’d just use Photoshop, but I’m not on a PowerPC Mac anymore, so Photoshop 5.5 won’t run. So I needed to use other things.

The crop was easy; Preview can do that. But I also needed to scale it, and Preview can’t do that. I tried installing the (sigh) Photoshop CS2 tryout, but that didn’t work; the installer fails while it’s doing something ambiguous to Photoshop’s help files. No surprises there.

And I didn’t want to use iPhoto for it. That would mean importing it into my Library, and I only want to do that for my photos.

The alternatives are sips and GIMPShop. I passed on sips because I don’t know how sips scales images (i.e. which interpolation quality it uses), and because it makes you specify the dimensions backward for no obvious reason. GIMPShop is out of the question because (1) it is slow, and (2) it is an X11 application, and I do not like running X11 applications on my shiny Aqua desktop.

This left only one solution: Write my own. So that’s exactly what I did.

Introducing image. image is a utility that can both scale and convert images; this includes rasterization of vector art. Here are the examples from the webpage:

  • % image piechart.eps pdf
    Output: piechart.pdf
  • % image lightbulb.jpg 50%
    Output: lightbulb-50%.jpg
  • % image lightbulb.jpg 240
    Output: lightbulb-240.jpg (scaled proportionally)
  • % image lightbulb.jpg 320x240
    Output: lightbulb-320×240.jpg
  • % image lightbulb-orig.tiff 50% jpg lightbulb.jpg
    Output: lightbulb.jpg

Pretty useful, huh? I hope so.

Enjoy.

Cats can’t talk!

Saturday, November 4th, 2006

You may have heard of people removing Garfield’s thought bubbles to improve the strip; it changes from being about an anthropomorphic cat to being about an insane cat-owner. I’ve started doing this, and I liked the results so much that I’ve started an new website on BlogSpot to show them off.

The new website, Cats can’t talk!, is a combination of that idea and the very funny Joe Mathlete Explains Today’s Marmaduke. There’s a fuller introduction on the site.

And in case you were wondering, yes, it uses the new Blogger Beta. It’s not much different; the big changes are Google Account support and “labels” (aka categories, tags, …). Other than that, it looks basically the same as the old Blogger.

ISO 8601 parser, version 0.4

Thursday, August 31st, 2006

I’ve released version 0.4 of my ISO 8601 parser and unparser.

Colin noticed that 0.3 didn’t work so well for parsing the datestamp in the filename on an Adium log file (those datestamps being in ISO 8601 format). You see, Adium generates the filename with a ‘.’ instead of a ‘:’, since ‘:’ is special on HFS/HFS+. 0.3 expects a ‘:’ and only a ‘:’.

So I added new methods that take a time-separator character. Now you can pass ‘.’ (or anything else, except NUL) when you need to. The old methods are still around, in case you don’t. This is the case, for example, for datestamps inside a chatlog file, as opposed to in its filename.

My WWDC 2006 Keynote Bingo cards

Monday, August 7th, 2006

My four bingo cards, marked up.

Red circles are things that happened during the keynote. Green question marks might have happened, but I won’t know until a video is available. (UPDATE 17:25: I just noticed that the Mac Pro has a Xeon, not a Core 2 Duo, just like the Xserve. So I will be unmarking Core 2 Duo later. UPDATE 19:09: Done.)

Be sure to post your own card. I’d also like it if you bookmarked it on del.icio.us and tagged it “keynotebingo” and “keynotebingowwdc2006”.

Technorati tags: .

It’s 3:30…

Monday, August 7th, 2006

And my WWDC Keynote Bingo page has received 161 hits in those three and a half hours.

This following 275 hits yesterday, 88 hits Saturday, and 224 hits Friday. Plus the 182 hits on -07-29, the 155 hits on -07-30, and the 69 hits on -07-31, and the 65 hits between then and Friday.

I predict quite a bingo game at the WWDC. ☺

Technorati tags: .

WWDC Bingo 2006

Saturday, July 29th, 2006

John Siracusa recently came up with a great idea: WWDC keynote bingo. But I find the prospect of having just one card rather limiting.

The_Tick jokingly suggested on freenode #macsb that I create a randomized version (note: this was before Simone created his):

22:41:18: <The_Tick> Mac-arena: quickly
22:41:21: <The_Tick> we need an app
22:41:25: <Mac-arena> The_Tick: Who?
22:41:27: <The_Tick> random bingo card generator
22:41:31: <Mac-arena> Hehe.
22:41:32: <The_Tick> all wwdc participants
22:41:40: <The_Tick> so it generates a random square
22:41:51: <The_Tick> from a bunch of blocks
22:41:55:              Mac-arena imagines doing that in PostScript
22:42:04: <Mac-arena> Hooray for images that change every time you open them! :D
22:42:05: <The_Tick> then it spools them all to be printed
22:42:09: <The_Tick> and then you print them
22:42:14: <The_Tick> and hand them out to everyone at wwdc
22:42:19: <The_Tick> bam!
22:42:27: <Mac-arena> I remember that there are a few handwriting fonts written in PostScript, so that every letter varies
22:43:48: <The_Tick> http://arstechnica.com/staff/fatbits.ars/2006/7/23/4730
22:43:52: <The_Tick> something like that
22:43:58: <The_Tick> but.. more random
22:43:58: <Mac-arena> Yeah, saw it on simx's blog.
22:44:04: <Mac-arena> Also saw that it was dugg.
22:44:25: <Mac-arena> The_Tick: I accept your challenge.
22:44:34:              Mac-arena incarnates a svn repo in his PostScript folder
22:46:12: <The_Tick> if you make it so
22:46:23: <The_Tick> then I believe we can have ourselves a little bit of bingo humor at wwdc
22:46:37: <The_Tick> well, I won't be there
22:46:47: <Mac-arena> Me either.
22:47:23: <The_Tick> but it'd be funny to hear someone yell bingo on the streaming video
22:47:24: <The_Tick> lol

I took him up on it anyway (like I said). And here’s the result: WWDC Bingo 2006!

This version comes in the form of three (actually four, but that one is hidden and simply draws the header graphic) EPS files. Every time you open one, one or more boards are randomly generated for you automatically. The first is 1-up (full-page), the second is 2-up, and the third is 4-up.

In addition to the randomization, there are 119 more strings in this version than the original. Print out multiple cards and increase your odds!

Oh, and if you really do play it in the keynote, I want to hear you yell “BINGO!” on the webcast. Make it good and loud.

Or, if you’re a presenter, I have a tchotchke idea for you: branded bingo markers. I’m envisioning one with the Panic logo on the barrel. :D

Technorati tags: , , ,

How to securely destroy your card

Thursday, July 13th, 2006

Earlier today, I destroyed an extra check card that I didn’t need. I don’t know if anybody’s ever done it this way, though. I had my mom take photos (thanks, mom!), and I created a webpage with the step-by-step information. Here it is: How to securely destroy your card.

Technorati tags: , .

About CPU Usage 0.3…

Thursday, June 29th, 2006

The version that I put up before was broken. I’ve hotfixed it, and also moved the downloads over to my folder on jkp‘s server. No more worrying about GeoCities’ hourly transfer limit.

And I’ll be posting it on VT within the hour.

UPDATE 2006-08-28: Well, now that I have real hosting, the downloads are over here. This is the best place to get them.

They’re still in the folder on jkp’s server, but there’s no longer a reason to download them from there.

CPU Usage 0.3

Wednesday, June 28th, 2006

An unobtrusive (unless it needs to be obtrusive) CPU usage meter.

CPU Usage meter, shown relative to a Finder window, indicating 40% CPU usage.

When your CPU usage is low, the floating window is nearly invisible. When your CPU usage is high, the floating window becomes more prominent, until it becomes completely opaque at 100% CPU usage.

Multiple-CPU-core machines, as you might expect, beget a version of the window that has multiple, connected CPU-usage cells. (If you have such a machine, feel free to send me a screenshot that I could put on the webpage. Let me know how to credit you, too.)

Though the first two versions are available to the public, this is the first public release. The previous versions had a large memory leak; this version fixes it, and therefore has no known bugs. (Still not 1.0 because it’s not done. I have one or two features that I want to add in future versions.)