Paint.NET v3.10 Beta 2 is now available!

There were enough code changes and additional fixes to warrant a second beta, so here it is! Anyway, get it in the usual places: (1) from the website, http://www.getpaint.net, or (2) via the built-in updater. Make sure that “Also check for pre-release (Beta) versions” is enabled.

Changes:

  • Changed: Increased max brush size to 500, as per forum members request
  • Fixed: Some layout issues with the Save Configuration dialog and the DDS configuration control
  • Fixed: In some cases, undoing an action that removed a layer would result in the un-removed layer not showing up until you resized the Layers window (“ghost layers”)
  • Fixed: Pressing F1 from the main window would launch the online help in two browser tabs
  • Fixed: Adding a new layer now adds it above the currently active layer instead of at the very top of the layer list
  • Fixed: Merge Down now activates the merged layer instead of the one above it
  • Fixed: Put the ‘x’ close button back in the Layer Properties window (managed to fix the bug w/o necessitating removal of the ‘x’)
  • Fixed: In Vista, clicking on a URL link from the installer will no longer launch the web browser with inherited, elevated privileges

Enjoy!

So many Freeware Tips to write about …

After writing the first two articles in my “Making Money With Freeware” series, I’ve come to the conclusion that there are several cross-cutting topics that deserve separate treatment. Because, as you might expect and as an example, the first tip one should heed towards making money with freeware is to strive to have popular freeware application. Having a popular freeware project quite often also depends on it being a high-quality freeware project. And having a popular or high-quality freeware program does not by itself make you money, and I don’t want to talk about popularity or quality only while under the justification of monetization.

To that end, I think I’ll rename the series to “Successful Freeware Project Tips”, and then at the beginning of each article I’ll notarize which bucket(s) the tips go into.

In conclusion, you should be looking forward to the new Tohuvabohu album by KMFDM, set to be released later this month. They’ve got a few preview tracks on their MySpace page.

(Actually, that’s completely unrelated. I’m just a big fan of KMFDM. QED.)

Paint.NET begets dotPDN LLC

I recently created an LLC for Paint.NET. I named it “dotPDN”, which is what you get if you say out loud the file extension for Paint.NET’s native file format, “.PDN”. After some quick iterating with a friend and some people on the forum, I even have a nice logo made completely in Paint.NET:

The “corporate website” (if you can call it that J) is at http://www.dotpdn.com. The text on the site, “our current projects include…” may seem to imply that I have other projects in the works. This isn’t the case, although I may resuscitate ListXP in order to have more than 1 project in that list J Which might be painful seeing as how the code sort of fell apart the last time I tried to compile it in Visual Studio 2005 … dang, I could really use that utility again in x64 land. Right click, List!

Some people might see this “dotPDN LLC” addition and think, “Oh my gosh! Did Paint.NET get bought out!? What’s going to happen?! Is it going to cost money now! Onoz!” Well, Paint.NET was not “bought out”, and I did not “sell out” to anyone. dotPDN LLC is my own Limited Liability Company and there will be no changes to how Paint.NET is distributed or developed. I’m still the one doing the coding, and I’m still the one calling the shots. The purpose of the LLC is mostly to serve as a legal shield for me: if someone wants to “sue Paint.NET” then they have to target the LLC and they can’t go after my personal assets (like my liquor!). I think it also has some tax benefits, but I’m going to let QuickBooks help me figure that part out.

Next up I need to set up various e-mail accounts, get a PO Box, and a new code signing certificate. Hopefully the next Paint.NET update you install will say that it’s digitally signed by “dotPDN LLC” instead of “Eric Brewster” J Total cost to set up the LLC was less than $1,000 USD, which includes going to http://www.mycorporation.com and checking the boxes to have them basically do all of the grunt work for filing and paperwork. I also had to buy a bunch of domain names for “dotpdn” and “dotpdnllc”.

Making Money With Freeware, Tip #2: Put Help Content Online

With Paint.NET v3.07, there was a subtle change in the release notes:

  • Changed: The help file / documentation is now hosted online. This has reduced the download size by more than 3 MB, and will also allow us to provide translations without ballooning the size of the download (each language would have added between 2 and 4MB).

This was firstly possible because the Paint.NET help content is just a collection of HTML pages that load in your browser. So I guess my first recommendation is to do the same: write your help content with a copy of your favorite web page editor. I use FrontPage 2003. Yeah, I know, I’m lame J But heck, I also use CVS, which means I’m “stupid and ugly” according to Linus Torvalds! (I’m not defending CVS. I just happen to use it.)

This change was made for many reasons, not all of which were necessarily listed in the change log, but all of which I see as advantageous:

  • Smaller Download Size. It dropped from 4.5 MB down to 1.5 MB. That’s an enormous savings.
  • Easy to Correct. If there is a typo or error, I can fix it and just upload the new version of the page.
  • Easy to Amend. If I want to add a new topic, I can now just write it up and click “upload”.
  • Localization. This ties in to the three previous ones, and I’ll discuss it below.
  • Statistics. I can now get usage data on the help content itself.
  • Search. Since it’s just a web site, it’s now easy to add a little search box on there.
  • Advertising. Now I can place Google AdSense or other things on the pages.

There is only one negative that I could think of:

  • Offline Access. It isn’t easy to access the help content anymore if you aren’t connected to the Internet. But you can mitigate this by offering an optional download for the small number of people who care about this. And also for anyone volunteering to do localization.

Almost all of these can affect your ability to make money from your freeware project.

Smaller Download Size

I’m going to publish a completely separate article on this because what I was typing got really long and I want to keep this post focused. Stay tuned!

Easy to Correct, Easy to Amend

Sometimes I get an e-mail from someone telling me about a typo on the website or in the help content. It used to be I’d have to file a bug in my Bugzilla database to make sure it got fixed before release. Now I just fix it, upload it, and I’m done. Sometimes I also get the itch to update or freshen pages (like I did with the Features page on the main website recently). This has less to do with making money and is more about simply being agile with your product.

Localization

Before, if I had wanted to publish the help file in all of the other 7 languages that Paint.NET is released in, it would have ballooned the download size to about 22 MB (at an estimated 2.5 MB per additional language). Most of this increase comes from screenshots which have text and must be done separately for each language. Most users only care about 1 of those languages so this ends up being an incredible waste of bandwidth. And on that note, most users don’t use the help content at all and so even downloading 1 language’s worth of it is a waste for them.

I can now also publish extra languages on a schedule independent of the main Paint.NET release, which relieves a lot of potential scheduling hassle. This is also directly related to having a smaller download size which, again, I will talk about later. And if you put advertising on your help pages then a user is more likely to see an ad in their preferred languages and thus much more likely to click on it.

Statistics

I now know how many people are reading the help file. I know which pages are popular. I know how many pages are read during each visit. Having good statistics is never a bad thing. Just sign up for Google Analytics and put the code at the bottom of your pages, although make sure it is tracked separately from your main website. Right now the Paint.NET help content is getting about 1,700 visitors per day, which is something I didn’t know before!

Search

There are a few ways to add search to your help content if it’s offline. One way is to use the CHM format, but the tools and utilities I had for managing this were excruciatingly difficult and painful to use. I absolutely hated it, so for version 2.5 I switched to normal HTML. Also, for cross-platform enthusiasts/purists, CHM either restricts you to Windows or forces you to find a different solution for your other target platforms. It just adds to the amount of time you have to spend managing your help content, and reduces time available for other things like drinking beer. Bleh to that.

Another way to get search is to write your own help system complete with original UI, indexing, and searching code (and that’s in addition to writing the content itself!). It’s definitely a challenging and fun direction to go in and you’ll learn a lot, but it’s also a liability in traditional software development terms. More code means more churn means more bugs, and which means less time to focus on the core of your project. Are you in the business of developing indexing and search algorithms? I doubt it. I prefer to let the
big
guns handle that stuff, and focus on what I do and enjoy best.

It’s easy to use something like Google Custom Search to add a search box if your help content is just a collection of HTML files that are hosted online. I only recently added this to the Paint.NET help file and now I really wish I had done it sooner. It isn’t a big earner in absolute numbers, but it’s always good to have another passive income stream – and those nickels and dimes really add up. (Small tip: Don’t look at your daily revenue numbers for inspiration. Multiply them by 365 and consider how they have affected your yearly income! J)

Advertising

Since putting the help content online, I have placed Google AdSense on the pages. I’m also considering using something like Kontera for in-text advertising links. You might think that the added advertising makes the help file ugly or less attractive, and you’d be right. But you need to ask yourself what the best release model is for yourself and your users:

  • Freeware. In this choice you give the software away for free. No ifs, ands, or buts. This is how Paint.NET was for its first 2 years. You won’t make any money at all doing it this way. I sure didn’t. All hosting costs come out of your pocket.
  • Bundling / Spyware / Adware. There’s also a lot of money in bundling stuff that isn’t related to your program. Irfanview, an otherwise highly rated program, optionally installs the Google Toolbar. Lots of other free programs try to install toolbars or set your browser’s homepage. I personally feel that is a dishonest way for the “bundlers” to get their software on people’s machines. This is actually a lot I could talk about on this subject in the areas of business, morals, ethics, etc. and I am planning on dedicating a blog post to it.
  • Shareware. Publishing your software this way is good and legitimate business, and might even be the right thing for your software project (it works for Patrick’s
    Bingo Card Software). You can make a lot of money with this strategy if your download and conversion numbers are high enough. But, of course people have to pay for the software which means you’ll have fewer users. Going in this direction also means you have to manage a business. You’ll have to worry about things like customer service (“I want a refund!”), buying advertising with AdWords or AdCenter, maybe hiring employees, etc. You also lose some potential for ubuiqity, which is important for some types of software (web browsers and image editors, for sure). I currently estimate that Paint.NET has 1 million active users. I regularly have people that work down the hall from me say things like, “Oh, you wrote Paint.NET? I had no idea, cool!” Do you think it would have such ubiquity if it were paid software? Not with my budget (time or money), that’s for sure.
  • Freeware, but with advertising outside of the program (website, online help file). NOW we’re talking! I personally believe that this is the absolute best user experience possible. Users get software for free and you get money so you can afford to manage its continued development. You don’t have to manage a business. If you want, you can take a vacation from the project but still be making money on it. People are used to seeing ads on the Internet. You won’t get any hate mail — I sure haven’t. You should also include a few smartly placed “Please Donate” buttons in the software itself.

I’ll even tell you how successful AdSense has been on the help file, even though I earlier said I wouldn’t publish any comprehensive data. Since Paint.NET v3.07 was released, I’ve made over $1,000 just from the help file. It’s been almost three months since I made this move, and I trust that you can do the math on that.

Conclusion

Putting the help content for your freeware project has almost no negatives. It’s a no brainer. Your download size will decrease, your download counts will go up, and you’ll have extra money in your pocket. Almost every software project is going to be different, so please don’t take this information as canon. This is what works for me, taking into account the direction I want to take Paint.NET and the way I want to spend both my personal and professional time.

Oh, and to keep the bandwidth use in check for your online help content, I recommend using PNGOUT. I’ve seen PNG’s drop anywhere from 5% to 50% in size using this thing! You can purchase a good front-end for it, PNGOUTWin, from Ardfry Imaging (they own PNGOUT). I personally use PNGGauntlet because it’s free, but it doesn’t run jobs in parallel so it runs a lot slower on my Core 2 Quad. Alternately you can use JPEG, but then all your screenshots look like crap.

Paint.NET is now reachable from www.paint.net

Ever since before the Paint.NET software project began in early 2004, the paint.net domain was redirecting to http://www.warrenpaint.com. This is the website for Warren Paint & Color Co., a paint manufacturer in Tennessee. That’s a pretty good domain to own for that type of business, eh? It’d be like owning “bikes.com” for a bicycle shop or something.

Fast forward to yesterday, and a lot of people are still typing in “paint.net” into their address bar in hopes of finding the Paint.NET software. Unfortunately for them, they have always been getting redirected to the Warren Paint & Color Co. website. This has brought some extra traffic to the Warrant Paint & Color Co. website, but the problem is that they’re also getting daily e-mails from people either asking where the Paint.NET software is, or saying mean things and accusing them of cybersquatting or search hijacking. It’s been a bit frustrating for them.

Next, fast forward to today. In order to reduce confusion around the domain and to cut the guys at Warren Paint & Color Co. a break from answering e-mails that should be sent to me, we’ve worked together to set up a simple redirect page. If you go to http://www.paint.net/ right now, you’ll see this in place now. It basically just presents the logos for both websites and says, “Why don’t you just tell me where you want me to go!” *

So from now on, when people ask you where to get Paint.NET, just tell them to type it into their browsers! No matter which box they type into (URL, search), they’ll find it.

Thanks to Jeff for setting up the redirect over to the disambiguation page. Also, thanks to Graham Laing for facilitating the matter.

* Seinfield reference.

Paint.NET Help / Documentation – Now Searchable!

I finally found/made some time and added a search box to the Paint.NET Help. It was pretty simple to do in all honesty, it’s just something that I’d been procrastinating for a very long time.

Plus, it took a bit to find the right program on Google’s page because the default “search stuff” in AdSense only lets you specify a domain and not a directory (I could not specify http://www.getpaint.net/doc/en and would have had to set up an alias such as http://help.getpaint.net). I had to find the “custom search engine” stuff that would let me also add in a block of Javascript to the website. I got there from google.com, clicking on “Business Solutions”, then “Web Search and Site Search”, then finally “Custom Search.” Then I had to go through some workflow to configure everything and link it to my AdSense account. Why wasn’t it just built in to the AdSense control panel to begin with!?

So, note to Google: please consolidate the search engine stuff in to one place in a way that makes sense to publishers!

Please excuse the awesome layout of the help file, I am definitely not a web developer …

Paint.NET Tutorial Spotlight: Make Realistic Eyes, by Ash

“Ash,” a member of the Paint.NET forums since December, has been impressing everyone with what he’s been capable of doing with Paint.NET. For starters, his avatar picture is this image:

And yes, it was made completely in Paint.NET! You can find the full size version, along with several other of his “100% Paint.NET” creations, at his website here: http://ashpdn.googlepages.com/

In any event, Ash has posted a tutorial on the forums titled: “Easiest way to make realistic eyes“. He makes use of the Shape3D plugin I mentioned before in order to produce the following:

Yes, this was created with Paint.NET! There aren’t very many steps required in order to make the eye, and you don’t even have to be very artistically inclined. The Shape3D plug helped a lot with the difficulty level, of course, but it’s very interesting to see plugins having such an enormous contribution to the utility of the program.

Here are some of the other noteworthy tutorials that Ash has published:

Paint.NET v3.10 BETA is now available!

You can get it at the website, http://www.getpaint.net/ , or from within Paint.NET by going to Help -> Check for Updates. Make sure that the checkbox, “Also check for pre-release (beta) versions” is enabled (Help -> Check for Updates, then click the Options button).

This release adds two new effects originally written by David Issel (“BoltBait”), support for the DDS filetype originally written by Dean Ashton, as well as many small bug fixes and some visual fit and finish.

  • Note: For the beta, the new features are only presented in English. The final release will have complete translations for the other supported languages.
  • New: Soften Portrait effect, by David Issel
  • New: Ink Sketch effect, by David Issel
  • New: DirectDraw Surface (DDS) file format support, by Dean Ashton. Improved from the original source code by optimizing the DXT compression library (“Squish”) to take advantage of multiple cores or processors.
  • Improved: Visual fit-and-finish for the Layers window.
  • Improved: Visual fit-and-finish for the close / ‘X’ button on image thumbnails.
  • Changed: The keyboard shortcut key for the Color Picker is now ‘k’. This makes it so that the toolbar option, “After click: Switch to previous tool”, is not useless for those using the keyboard shortcuts.
  • Fixed: Pressing Ctrl+[ no longer cancels out of drawing a line/curve, but instead decreases the brush size by 5 as expected.
  • Fixed: Ctrl+clicking on the brush size +/- buttons now changes the brush size in increments of 5
  • Fixed: Save Configuration dialog would “creep downward” from its last position every time it was opened again
  • Fixed: TGA codec now saves the # of alpha bits to the image descriptor byte. This was causing some other applications to load TGA files saved with Paint.NET as solid black images.
  • Fixed: Clicking the ‘X’ to close the Layer Properties dialog was not reverting changes made to the layer while the dialog was open.
  • Fixed: Installation will not proceed unless Paint.NET is closed, and will also not allow Paint.NET to be opened until installation is completed. This helps to ensure a fully coherent and complete installation or update.
  • Fixed: In Vista, it was possible to crash the Save As dialog by typing a filename that was too long.
  • Fixed: In Vista, it was possible to crash the updater if you let the UAC prompt time-out.
  • Fixed: It was possible to crash Paint.NET on some systems by clicking on a tool in the Tools window while the “Save As” dialog was open.

Enjoy!

Paint.NET v3.10 Visual Tweaks

I’ve always been a stickler for good looking UI. To that end, I actually have very positive things to say about a lot of the work Apple has done in this space – a few people at work have even jokingly called me a traitor because of my iPhone J

With the original release of Paint.NET v1.0, one mantra I applied to any UI was, “If it isn’t good enough to look like it could be in Windows or Office, then it isn’t finished.”

Oh man, you should have seen our horrible and ugly File->New dialog before I laid down the law on that! J Chris Trevino was a bit fed up with me the day I forced him to do fit-and-finish on that dialog. In the end he agreed it was very much worth it though. (This was over 3 years ago.)

The point is, I made darn sure that the dialogs in v1.0 had good looking and consistent spacing, alignment, ordering, etc. Over the years I’ve continually made changes to Paint.NET to improve its aesthetics in ways that either didn’t hamper, or that even improved, functionality. For 3.0 I spent a lot of time just playing with the color scheme in the toolbar in order to find something that looked great in Windows Vista. I settled on solid white – go figure! A UI that is pleasing to the eye is much more satisfying to use than another UI that is otherwise functionally identical but that is an eyesore. Every once in awhile I’ll see some other application where it’s obvious nobody spent anytime worrying about this stuff, and it’s painful. I’d write more but it’s Friday and I really need to go drink a beer.

Anyway, I could go on and on about this, and hey maybe I will another time (who wants to hear my thoughts on UI and UX* design? Anyone?). The real meat of this post is that I just wanted to show two quick changes to the UI in Paint.NET v3.10 that don’t change its functionality at all, but that do enhance the user experience by way of just being better looking. In UX, I consider these changes to be two “inches” worth of progress. They aren’t changes that would necessitate a release by themselves, but it was fun to throw them in for this upcoming v3.10 release.

The Layers Window – Finally, Some Fit ‘n Finish

The Old:


The New:

    

The differences are subtle, but it fixes something that’s nagged me for awhile (namely that the Layers window looked like it was from 1995). First, you’ll notice there is no static-sized border around each layer’s preview area. The black 1-pixel border is now fit to the size of the layer, and the standard drop shadow is also added. This is something I have really disliked for awhile because the old borders “clumped up” on the vertical edges so we ended up with a 2 pixel vertical border, but a 1 pixel border on the horizontal edges.

Second, the blue selection highlight extends the full width of the layer row. The checkbox area in particular now looks more correct.

The Image List – Okay, I made the ‘X’ look better

The Old:

The New:

So I’ve had a few (two or three) complaints about the rendering or aesthetics of the close/’X’ in the image list. I didn’t really notice or care much myself, but I was in a good mood about a week ago and figured, “Why not?” So I adapted the ‘X’ image that’s used for Edit->Cut and that I also saw used in some of the stock Vista Sidebar Gadgets for their “close” buttons. I think it looks a little more stylish, although it might not be noticed by most people. That’s ok. For future releases I’ve also got my eye on the image list dropdown icon (the white-with-black-outline down arrow in the “new” screenshot right above), and the “this image has unsaved changes” orange asterisk.

Like I said, these are minor changes that do nothing to affect Paint.NET’s functionality or ease of use. Hopefully they will add one or two points worth of “warm fuzzies”. And hey, those warm fuzzies add up!

Stay tuned. I’m hoping for a beta release of 3.10 this weekend!

* “UX” stands for User eXperience. It’s a term that includes the user interface and the experience of using it as a complete unit. For example, you might refer to the workflow of pasting an image as “a UX”. You could say that you “improved the UX” while in fact you may have removed some UI.