iPhone + 64-bit = Nope

There I was, hoping to get my new iPhone set up and to replace my RAZR which can’t even keep up with my typing, and then …

I’m using the x64 version of Windows Vista Ultimate. A small amount of digging online highlights the fact that the iPhone doesn’t work on 64-bit Windows. This fact is not listed on the box, nor on their website (oh woops, apparently it’s hidden deep within some random support document).

Way to go Apple! How hard could 64-bit support possibly be for a launch as big as this? Especially when Mac OS X Leopard has 64-bit trumpeted as one of its big new features, you’d think their engineers would spend the time to add support for it on the Windows side.

Paint.NET Plugin spotlight: Curves+

Paint.NET v2.6 added an adjustment called Curves. A member of the forum, pyrochild, has recently released a new plugin called Curves+ that takes the source code for Curves and builds on it to add several cool new features. In fact, this is the first plugin I’ve seen that copies code from Paint.NET and uses it as the basis for a new plugin.

A number of new features have been added to this enhanced version of Curves:

  • Histogram underlay in the transfer map (forgive the screenshot above – it doesn’t do this feature justice)
  • HSV, CMYK, Alpha, and “Advanced” transfer map modes. The “advanced” mode lets you map any input channel to any output channel (virtual channels, such as hue and intensity, are included).
  • Ability to save and load settings to XML files. This will be a boon for tutorials – instead of posting a screenshot and telling the user to “make it look like this,” you can just post the XML file and have them load it.
  • Simple linear interpolation mode (“straight lines”) for the transfer map, in addition to the standard spline interpolation.

In the screenshot above I’m using the HSV mode. Notice how the line for Hue isn’t just monochromatic, and follows the full range of colors in the hue spectrum. Personally, I think that’s pretty cool and creative J

If you follow the pages in the forum post for the plugin, you’ll see that numerous features, tweaks, and performance enhancements have been made due to conversation and collaboration with other forum members. They seem to want this bundled in the next version of Paint.NET … but if you’ve been following my previous blog posts or have been paying attention on the forum, then you will know that my goal is to make discovery, installation, and updating of plugins like this much easier. Why bundle when you can delegate! J

All in all, this is a big upgrade for Curves and gives the user many new ways to manipulate images. The HSV mode in particular, while not necessarily intuitive, produces some very powerful results.

Updates for Paint.NET 2.5 – 2.64 are working again

I was told earlier today that an old copy of Paint.NET wasn’t updating, along with the fact that the version was 2.63. This was a version that is pointed at the old Paint.NET website, http://www.eecs.wsu.edu/paint.net, for the update manifest, and that manifest has not changed since 3.0 was released. The problem is that the manifest was pointing at a copy of 3.0 that was sitting on my site, but I had long since deleted the file to make way for 3.01 through 3.08!

The file is back up and so older Paint.NET clients will now update just fine. It will offer you an update for 3.0, but will actually download and install 3.08. So if you know someone who was trying to update an old install of Paint.NET but it wasn’t working, then encourage them to try again!

Paint.NET Forums and Plugin spotlight: Shapes 3D

I’m hoping this will be the first of many “spotlight” blog posts. I think the forums have become, interestingly enough, an integral feature of Paint.NET (“Web 2.0 meets Desktop 2.0?”), where a large selection of user-generated tutorials and plugins have been made available for free. Free is always good, and can do amazing things for the virality of your product (yes, virality, not “virility”, although in this case the two are kind of related. And no I’m not sure if it’s even a word).

This first spotlight will be on a plugin that was just published yesterday by a new forum member, “MKT”. It is called Shapes 3D and has the most complicated user interface I’ve seen to date in a plugin:

Despite this complexity, and the fact that it’s in Japanese, it has quickly soared in popularity and already has 5 pages of responses. Everyone seems very excited about this plugin, and my hope is that it will inspire other new plugins and tutorials.

I can’t read kanji, but I played around a bit and was able to make the following based on a photo of Mandy Moore:

Pretty cool for about 30 seconds of “work”. You can get the Shapes3D plugin at the forum here: http://paintdotnet.12.forumer.com/viewtopic.php?t=5271&postdays=0&postorder=asc&start=0 . When combined with other plugins, such as Drop Shadow or the Object Reflections, this makes it very easy to do things like software boxes or other perspective-based designs.

Paint.NET in the Firefox/Google search suggestions box

Try this in the latest Firefox. First, make sure your search provider is set to Google, and then type “paint” in the search box. A drop down box filled with suggestions will be sent back from the Google servers, and …

… “Paint.NET” is the third suggestion J

Edit: Woops, it was usedHONDA on the forum that found this. Sorry I forgot to mention that!

LOLcats with Paint.NET: Stella needs a caption!

There was an article on Slashdot last week titled, “Alternatives to Adobe’s Creative Suite?” There was a good discussion about various alternatives to the various pieces of Creative Suite, and Paint.NET was mentioned numerous times. Every single mention was very positive! So, thank you Slashdot! You’ve come a long way since the December 2004 story titled, “Paint.NET: The Anti-GIMP?J

I particularly liked one of the comments by hkmarks (emphasis added by me):

“I just heard about Paint.NET a few weeks ago, and I now use it more than Photoshop. Photoshop has superior text capability (Paint.NET rasterizes text and leaves it uneditable) and a kajillion other features that make it indispensable for serious work, but Paint.NET is much faster for things like adjusting color levels, cropping and resizing photos. Or gluing captions to cats. It’s not a total replacement, but for some applications it might be enough.”

Apparently the crew behind I CAN HAS CHEEZEBURGER? are fans of Paint.NET too, as witnessed by the comment on another one of today’s posts:

cheezburger Says:
June 12th, 2007 at 3:46 pm


i uses paint.net when i needz quick captions!

This brings me to the main topic of “LOLcats”, as popularized by sites like that. In December I got a cat for Christmas and I named her Stella at the suggestion of my friend Emily (“she looks like a Stella!”). True to form, I took the following picture yesterday and glued a caption on it:

Quick story behind it: no, she didn’t eat the food, I did! She jumped up and started licking the wrapper that had leftover cheese on it, and I thought it was funny so I took a picture. No Stellas were harmed in the making of this LOLcat, she didn’t get a chance to snarf down too much of it.

I used Ed Harvey’s Fragment effect plugin to make the shadow behind the text. I typed the text in white, the duplicated the layer and used Adjustments -> Invert Colors on the bottom layer so that it would be colored black. Then I used the plugin on that layer, duplicated it several times to get the right amount of contrast, and then flattened the layers together with Merge Layer Down. (You’d think text effects would be built-in to Paint.NET … uh oh, am I foreshadowing future features again?)

Unfortunately, I can’t think of a good caption for the following picture, so maybe someone can help me out J

Here’s another one that’s ripe for tagging, maybe something like “Shh, I’m hunting wabbits!” :

And that concludes today’s necessary stupidity.

Paint.NET … as seen on TV!

A CBS affiliate in California had a short segment on free software, and they mentioned Paint.NET. There’s an online article by Jeanette Pavini that also includes a short clip from the TV broadcast.

Denny Arar of PC World magazine said a software program called Paint.net offers good features for digital photographers.

“It’s an amazingly capable image-editing application. It does all the cropping, color correction — things you used to have to pay to get in software,” Arar said.

Maybe the Paint.NET logo should have a “As see on TV!” sticker J </kidding>

The Accidental Success of Paint.NET Plugins

The effects system in Paint.NET is generally a well thought-out system and great for someone like myself to develop against (hey I wrote it, so I know all the rules!). It was designed to give all effects the same support and workflow for selection clipping, user cancellation, multiprocessor/multicore scaling, and preview rendering.

However, when extended for plugins, it has not held up to the test of time.

“But just wait a second!” you might yell. “There are tons of plugins on the forum, and some of them are really good!” You’re probably referring to things like the EdHarvey Effects pack, or the DirectX Surface (.DDS) plugin by Dean Ashton. These are the types of plugins that really extend Paint.NET’s usefulness and cause developer envy in myself … but I digress! J

This effects system is definitely a case of something that was written by one developer (me), for two developers (myself and Tom Jackson). However, for a very long time, it didn’t matter because there were no plugins! Paint.NET wasn’t popular enough for anyone to have really written any of them, and the community was small – maybe 1 or 2 posts to the forum on any given day. In fact, between version 2.5 and 2.6, I made changes to the system that completely broke all plugins written for 2.5 and before. This was back in February 2006, and I didn’t get any grief e-mails about it. Nowadays if I make the slightest change, such as moving a class between DLL’s, I get e-mails from many users whose plugins are now causing crashes! (Which brings to light another problem, that of robustness, but that’s another topic.)

Some people have so many plugins installed that they are crying out for a way to organize them in to sub-menus of their choosing. Their Effects menu gets so big that they have to scroll around to find their effects!

As a developer and publisher of software, this is the absolute best kind of problem you can have. Think about it: people wouldn’t be asking for an “organize effects” feature unless there were lots of effect plugins!

Wow, what a difference one year makes! So right now there are a number of problems that I’m hoping to solve in the next release:

  1. Make it easier for casual plugin developers. Not all plugin developers have a computer science degree and a day job as a software engineer. Nor would they want to! (Heck, most professional software engineers would rather be doing something else, to be brutally honest.) A lot of people right now are making plugins by using CodeLab which was originally only intended to provide a rapid prototyping environment – turns out people are perfectly happy using the DLL’s it spits out!

    On the forums, BoltBait has even extended CodeLab so that it will automatically generate a user interface by adding a small amount of metadata to your script file. However, it is limited to the very basic UI dialogs that are built in to Paint.NET. BoltBait doesn’t exactly have time to pour in to CodeLab to turn it into Visual-Studio-inside-Paint.NET, complete with syntax highlighting and a UI designer. I think he’d rather spend time with his family, for instance, and I don’t blame him.

    I’d like to make it so that you can tell Paint.NET to automatically generate a user interface based on some schema that defines the properties for your effect. Maybe you can throw some XML at the effect system, like <Property Name=”Blurriness” Minimum=”1″ Maximum=”100″ Type=”Int32″ /> and it will figure it out.

  2. Make it easier for plugin users. Right now you have to download the DLL … or the ZIP … and then figure out that you need to extract it to C:\Program Files\Paint.NET\Effects. Oh, and don’t forget to close Paint.NET and restart it. Also, if you downloaded a DLL then Internet Explorer will tag the file as “blocked” so you have to right click it, hit Properties, and unblock it. Etc., etc., argh! It’s no problem for myself, or other developers. File system acrobatics are second nature. But if I were to tell my mom how to do this, she’d be lost.

    I like to call this the “I have a dll, now what?” problem:


    (image from: http://icanhascheezburger.com/2007/05/30/i-has-a-money/)

    This is not to disparage the many users who have asked about this. It simply highlights that, to most users, a DLL is a weird foreign object much like the quarter is for the kitten.

    So, like I mentioned in an earlier blog post, I want to make this a lot easier! Right now the idea is to have a container format, maybe using the extension “.pdnmod” (Paint.NET Mod) that would basically be a renamed ZIP file. Once that extension is associated with Paint.NET, installing a plugin will be as simple as linking to a .pdnmod on a web page and then clicking the appropriate approval dialogs.

    This container format will also simplify, standardize, and/or facilitate things like attribution (“copyright so-and-so”), localization, and automatic generation of UI based on a schema for property values (as mentioned above).

  3. Extend what the Effect system is useful for. Right now there is some confusion about the effect system and how it works. “Why is my Render method called hundreds of times!?” Some people are trying to use it for image analysis (“analyze pixels, write data to text file”), which it is just not intended for. There is also the really big problem that implementing multi-pass rendering algorithms isn’t really feasible right now. Some people are, to be honest, horribly abusing the effect system and going outside the rules just to get it to do what they want. To that end, I’d like to make the workflow a little more customizable so that they don’t have to do these terrible things.
  4. Provide documentation. This is where the title of this post comes in to play. People are writing effects even in the absence of any real documentation! So … I think I will write some, finally.

Anyway, that’s about all I have to say right now. I’m taking this week off from my day job, so I’ve got plenty of time to catch up on things and go enjoy the sunshine here in downtown Kirkland.

A Paint.NET Success Story: San Gorgonio Middle School

I received this e-mail earlier in the week. I liked it so I asked if I could publish it to my blog, and Matthew gave me the okay:

Mr. Brewster,

I first contacted you in January asking if I could install Paint.NET* on the computers in my classroom. I teach at 7th and 8th graders at San Gorgonio Middle School in Beaumont, CA. You gave me the go-ahead and I immediately started using the program in all three of my computers classes. The results have been awesome. My students absolutely love using this program, and I am very happy because they got experience with a photo editing software other than Microsoft Paint.

Keeping in mind that these students range from 11 to 13 years old, the skills they have been able to display are phenomenal. You made it possible for about 100 students to get invaluable experience with this software, not to mention fostering their creativity and critical thinking skills. I can’t thank you and your team enough for giving myself and my classes this opportunity.

I’ve attached a .jpg “thank you” card from my students (sorry about the large file size).

Matthew Centofranchi
San Gorgonio Middle School
Math & Computers Teacher

Here’s a small preview of the card they attached. You can click it for a larger version. I’m not going to share the full version because it’s 6MB and I don’t want to shred my bandwidth quota for the month J

So, you’re welcome Matthew! I’m glad you and your students had fun and learned a lot with Paint.NET. It’s very rewarding to get an e-mail like this! Now if only the cute girl down at the coffee shop knew what “Paint.NET” was, then I’d be set …

If you have any other “success stories,” feel free to e-mail me (the address is at on the Contact page), or just post a comment to this blog!

* Yes, most people know that Paint.NET is free so it may seem puzzling why Matthew asked permission for his use. But it’s not always clear that this license extends to things like widespread network deployment, business use, or to use at a school with many users (in other words, that Paint.NET is free and not just for personal use). Many employers are skeptical when told that software is “free” and reasonably require some kind of proof, such as an e-mail confirmation from the software publisher (me!). I blame this “not always clear” aspect on the fact that we have to use scary looking software licenses that are written “by lawyers, for lawyers.” Oh and the license is often IN ALL SCARY CAPITALS WITH NO WARRANTIES J