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.

Quad Core is finally affordable

I just noticed that the price has fallen to $299 for the Intel Core 2 Quad Q6600 (2.4 GHz) processor at newegg. If you’re looking for the best system to run Paint.NET on right now, this is a great place to start! I’ve personally been using the Intel Core 2 Extreme QX6700 for my development system since December, and it’s awesome for those of us who are writing and optimizing multithreaded code. If you’re a developer then I highly recommend getting one.

P.S. I just finished up the integration of the DDS plugin for Paint.NET v3.10. And then I used OpenMP to optimize it for multiple threads: it is much faster on a dual- or quad-core system now! I’m still shooting to have a beta out by the end of the month.

Disclaimer: This is not a paid endorsement or advertisement or anything. I’m not receiving any money from newegg, Intel, or anyone for that matter, for this post.

Paint.NET v3.10 Preview

I’ve been working slowly* on what I’m currently calling version 3.20, but in the meantime I decided to put out a small feature-based release. It will be called Paint.NET v3.10, and will include a few new effects, support for a new file type, and of course a few bug fixes. This is the first time that a Paint.NET update will be incorporating code from the community, and I’ve got high hopes for this release. Here’s what’s planned so far:

Megan Fox and Mandy Moore guest star in this blog post. Here are the original images for the modified ones that are shown below:


Soften Portrait – This is based on the “Portrait” effect originally written by BoltBait (aka David Issel). Its implementation is inspired by the Orton Effect that has been popular in photography for quite some time.


Ink Sketch – Again, another effect by BoltBait. I haven’t finalized the icon for this one yet. I’d really like a good quality “ink pen” graphic but haven’t really been able to find one yet!


DDS file type support – This is basically a straight bundling of the DDS File Type Plugin by Dean Ashton. DDS is short for “Direct Draw Surface” and is a file format used by many games and also by the XNA SDK for the XBOX 360. It will install as a few separate DLL’s in the FileTypes directory. This way Dean still has the ability to issue his own updates independent of Paint.NET’s updating schedule.

I have also made some performance tweaks to some of the other effects, with about a 5-15% increase for Oil Painting, Frosted Glass, and Gaussian Blur.

Paint.NET v3.10 should be in beta soon, with the final release by mid-August.

* Hey even I have to take things easy once in awhile J

Making Money With Freeware, Tip #1: Have a Donate Button

I don’t really have an outline for this series so I’m really hoping that the “#1” up there in the topic doesn’t stand by itself for too long. Anyway, like I said earlier when I decided against disclosing revenue figures for now (either because I’m humble or because I’m a chicken, take your pick!), I will instead offer up bits of information that I believe have helped Paint.NET to become strongly profitable.

The first tip is simple, and is a play on statistics that is very easy to understand:

Have a Donate Button.

Studies have confirmed* that a website with a PayPal button on it makes as much or more as the same site that does not have the PayPal button.

But really, think about it. If you don’t have a way for your audience to send you money then they probably won’t send you any. You will make $0. However, if you give them an easy way to send you money then you will make $0 … or you will make more than $0. I know, I know, it’s a silly logic pun from a nerdy Computer Science graduate, but it’s also strongly motivational. Hidden in that little phrase is a corollary: “the worst that could happen is that you make money.”

John Chow made $219 last month just by having a silly link at the end of every blog post that says, “buy me a beer!” If he didn’t have that link there then I promise you he would have $219 less in his pocket right now. It would not be made up for from any of his other income streams.

While I was in college I wrote a little freeware app called ListXP and it had a donate link in it too. I maybe made a grand total of $200 or $300 over the course of 2 years. But guess what? Without that PayPal button I would have made a grand total of zero dollars. Yup, that’s right: $0.

I look at these things from a purely statistical standpoint, which is really how (many?) businesses operate. Just like free-trial-to-paid conversion rates, freeware with a PayPal button can have a quantifiable download-to-donation conversion rate. I will say that the conversion rate for Paint.NET is at least an order of magnitude lower than what Patrick has for his Bingo card software (his is about 2.5%) (Edit 2:11pm PST: Sorry, had the wrong URL for that link!). But guess what? My audience is many, many orders of magnitude larger. I don’t any advertising, and I don’t have to ship CD’s or worry about refunds, so my profit margin is also higher.

Patrick’s software was downloaded about 1,000 times last month, which is pretty phenomenal for niche software. By my best estimates, Paint.NET was downloaded about 400,000 times last month. And every time I push out an update, the user is reminded about their ability to donate: in the installer, for about 30 seconds while it does the little “Optimizing for your system” dance, it shows a little banner that invites them to donate. I get a big spike in donations for the 2 weeks following an update … coincidence? So here’s the second part of my tip:

Remind your audience about donating.

Just don’t be in their face about it or be annoying. Because, well, that’s just annoying. Paint.NET has Donate buttons on the website, in the Help menu, in the installer, and in the Save Configuration dialog down in the bottom left corner. These are the areas that I believe bring the least amount of annoyance balanced by the highest amount of conversion. I’m not sure if I’m right yet though because I have yet to do a thorough analysis and comparison of how many clicks they are all getting (each one goes to a different redirect page, which I can then track with standard web stats).

Anyway, it’s important to remind people about donating to your freeware because donations are something that don’t come immediately, unlike a purchase of shareware. A person probably won’t donate unless they’ve already exercised good value from what you’ve given them (as opposed to buying a candy bar where I pay for something I’m about to get value from). In the case of Paint.NET, the donation reminder during upgrade serves as a good place to politely prod the user towards thinking, “Hmm yes, I have received good value from this free software. I like it. I think I’ll go ahead and donate!”

And back to the statistics angle, with regard to conversion rates. Patrick and I both intuitively know that if our download numbers go up that our conversion rate will stay about the same. This means that all we have to do to earn more money from this is to find ways to ramp up the download count, and our revenue will increase linearly. Patrick has experimented with various advertising and fulfillment channels, and is getting a grasp on what works for his product and audience. For Paint.NET, I need to make sure that I quickly say “yes” whenever someone e-mails me asking permission to include Paint.NET on a magazine CD. I also experiment with the website content to see what brings in the most search engine traffic. Et cetera. Lather, rinse, repeat.

I’ve used this basic strategy in a few other places, and it works great. It’s also fun. One time when I was still in college I was getting coffee and I asked the barista girl if I could have it for free. She said “Sure.” So I saved $4 or something. Yesterday the guy who is 4 ranks above me in management (he’s my manager’s manager’s manager’s manager?) gave me a $4 “coffee-or-snack” cafeteria coupon because I said, “You know what you could do with that? You could give it to me.” I was half joking and mostly just in a good/confident mood, but he shrugged his shoulders and said, “Ok.” And then I thanked him, because that’s what you do when people give you things for free.

You won’t get something for free if you don’t ask for it, and the worst that can happen is that you won’t get it. When you buy a car, make sure that you don’t pay the sticker price without a fight. And when you put up a website, the absolute worst thing you can do is to not monetize it.

* Not really. I just made that up.

Elusive Bugs: “ScratchSurface was already borrowed…”

As the author of something like Paint.NET, I often get bugs reported that I simply don’t understand. Ever since before Paint.NET 3.0 went into beta, I’ve been getting crash reports like the following:

System.InvalidOperationException: ScratchSurface already borrowed: ‘PaintDotNet.DocumentWorkspace.DoSaveAs() handing off scratch surface to DoSaveAsDialog()’ (trying to borrow for: ‘PaintBucketTool: Tool.Activate()’)

This tells me that the Paint Bucket tool was trying to activate, but it couldn’t get the scratch surface (this is an internal Paint.NET object) because the Save As dialog already had it. Unfortunately, the stack trace didn’t help. All my powers of analysis were for naught, as I could not discern a way that the scratch surface was in use twice. One part of the crash log was pointing a finger at the Save As dialog, but that code was nowhere to be seen in the stack trace!

The number of reports of this particular crash were not alarming, nor were they causing any bad press or user sentiment. So, for months I just accepted the bug and hoped that a future version would work around it accidentally. As a software developer, you quickly learn that software has bugs. And you will ship with some. It’s just the way the world works outside of ivory towers.

See, the problem was that I was trying to use logic to figure out a repro for the bug (“a repro” is just the term for having a set of instructions to reproduce the issue). I looked at the callstack and did not see any of the Save As dialog’s functions, so I concluded that the Save As dialog was not active at the time of the crash. I thought that, somehow, the Save As dialog had closed but for some reason it had not returned the “Scratch Surface”. I probably have spent several hours over the last few months just trying to repro this one specific crash. I looked everywhere except that Save As dialog itself

Well, I was wrong. Yesterday the light bulb went on over my head and I decided I would try to do the following:

  1. Start Paint.NET
  2. Go to File -> Save As
  3. Click on a tool in the Tools window (this should be impossible! The “Save As” dialog is modal! The other windows should just go “beep” if you try to click on them!)

Guess what? Not only was (3) possible, it crashed the program! I finally had a repro! You can try it for yourself right now in the latest 3.08 release. For some reason, the Save As dialog is modal with respect to the main Paint.NET window, but it isn’t preventing clicks from being processed in the four “floating windows” (Tools, History, Layers, Colors). My knowledge of WinForms and Win32 doesn’t give me a way for this to be possible, but a workaround that produces the effect I need should be straight forward.

So, there you go. This will be fixed in the next release of Paint.NET of course.

The Verdict: Non-Disclosure of Revenue

In my previous blog post about the profitability of Paint.NET, I had a few votes for disclosure, one neutral vote, and one strong non-disclosure vote. The non-disclosure vote was from BoltBait who’s one of two moderators on the Paint.NET Forums. I’d say his vote carries some pretty good weight. And, upon further reflection, I’ve decided this is the way to go anyway. I think I’d feel weird if my coworkers knew how much supplementary income I was making. I would prefer to stay relatively modest about it. Plus, I don’t know, I guess I don’t want to jinx it? I have been treating it as “bonus money” so far; it isn’t something that I want to feel reliant on, because like they say … live by the Google, die by the Google. In fact, a huge part of the reason I don’t quit my day job and go gung-ho on Paint.NET is that I simply don’t trust the AdSense income. I’m sure that in 6 months of full-time work on Paint.NET I could crank out version 4.0 and release it to huge fanfare: a few days or even a week with a huge spike in traffic, followed by an average amount of traffic that was 10-20% higher than it was pre-release.

So for now I will just quietly build up my savings and investments, pay down my debt (and mortgage), and tip better when I eat out or buy coffee. It’s funny to see how much better a tipper I’ve become now that I make money through tips (donations) myself.

There has been interest expressed in having me blog more about the business side of Paint.NET. To that end, I think I will start publishing things I have done that have successfully increased my AdSense or PayPal income. Some standard AdSense optimization in December netted me an immediate 2.5x increase in revenue. Less than 2 months ago I made an insight-based (“lightbulb-over-head”) optimization that increased my revenue by 50%. The only problem with these types of optimizations is looking at your statistics for the months before you had the optimization in place and realizing, “Dang! If only I’d applied this months ago! Argh!” There are also some other tips and tricks I’ve found over the last year.

Oh, and regarding the Coding Horror vote, it turns out that Paint.NET is ineligible because it does not use a publicly accessible source code repository. That’s okay though. Who knows, maybe I will start integrating 3rd-party plugins (with permission of course)? That wouldn’t make Paint.NET eligible, but I think it’s a good direction to go in anyway.

Making Money Online: Profitable Freeware?

One blog I really like is called MicroISV on a Shoestring. It details Patrick’s entrepreneurial adventure with some software he wrote in Java to make Bingo cards. His blog talks less about the software itself and more about the business side of things: advertising, payment processing, and even his profit statistics. It’s articulate and interesting – for June he made a profit of $750. That’s pretty good supplementary income which can then be used to pay down debt, increase retirements savings, or for the monthly payment on a very nice BMW. C’mon Patrick. Go for the BMW.

My original passion is writing software, but recently I’ve become quite interested with making money online. No, I don’t mean sending out phishing e-mails and stealing bank accounts. I’m talking about all the new products, services, and blogs that are run by small groups or individuals that are making enough money to quit their day jobs. I find it extremely fascinating, and a stark contrast to the old way of making money with computers: selling logo-covered boxes with CD’s in them (i.o.w., shrinkwrapped software J).

Another blog that I like to read is John Chow’s where he talks about how me makes money by blogging. Like Patrick, he posts how much money he makes on occasion. Since he’s making $12K a month he is also able to afford a very nice BMW, but unfortunately he bought an Acura TL. I’m going to throw my hat in for his linkback program and do a quick review of his site: I like how he talks in-depth about all the ways he’s making money via the Internet, even if it is mostly through advertising (although that’s no surprise: really the only other way is to host an MMORPG). Since I’m supposed to say something I don’t like about his site, I’ll go ahead and state that I don’t like how he always has the same graphic at the top of the page. Yay, two blue sports cars. Granted, many people read his blog via RSS and thus won’t even see that, but I think a little variety could help spice up the blog a bit. Maybe he could have 10 pictures that are cycled through randomly with JavaScript.

Markus, the guy behind the dating site Plentyoffish.com, has become many people’s hero (including mine!) because he is the sole proprietor and lone engineer of an online dating website that has not only made him a millionaire (even if it is Canadian dollars J), but that is also probably scaring the “big fish” like Match.com and True. That’s something I’d love to do with Paint.NET: even though I don’t plan to or want to overtake Photoshop, I’d love to scare them a little and see them copy some of my features J For instance, maybe they could upgrade their gradient tool so that “Undo” can graduate away from the #1 most used keyboard shortcut. Just a thought.

Anyway, let’s get back to talking about Paint.NET and the title of this blog post. In the last year, my opinion about advertising has turned a full 180 degrees. No longer are commercials just those things that cause me to press the fast forward button (especially since I cancelled my cable TV and now get my TV shows on iTunes). Advertising is now the key ingredient that is fueling a huge wave of innovation on the Internet. Step 1: Build a website and put Google AdSense on it. Step 2: Get lots of traffic. Step 3: Profit!

From the business side, three things are apparent about Paint.NET. First, it’s freeware. It doesn’t cost a dime for anyone to install and use it. Second, I accept PayPal donations. Third, I have Google AdSense on the website. And yes, Paint.NET is profitable. I’m hesitant to publish any numbers, however. I’ve always felt that that telling others your income is like bragging, especially at my age bracket where many of my friends are still finishing school and eating lots of ramen (although, I like ramen too!).

Me: “I make $X a year.”

Girl: “You’re loaded! I hate you! L Buy me a beer! Marry me! J
J

I e-mailed briefly with Patrick about this, and he thinks that I should publish my numbers and that it would be received as an online success story. Also, I noticed that Paint.NET has been nominated numerous times by readers on Coding Horror where Jeff Atwood is going to have a vote on what to do with $10,000 worth of advertising revenue. If Paint.NET were to win, then I would get $2,500 (woot!). However, if I were to publish my revenue statistics afterwards then I might really feel like I was bragging. Or, would that be fueling the “success story” angle? In any event, I would not feel comfortable accepting and pocketing that $2,500. You see, the numbers I make on Paint.NET are in addition to my day job salary as an engineer at Microsoft. I already drive a nice BMW and own a condo in downtown Kirkland. I would have to delegate the money to something else, such as a plugin contest of my own (“write a sweet plugin and get $500!” maybe?).

This stuff is very exciting to talk about, but since it concerns money there is a very fine line to toe. Where does it stop being exciting, and start coming across as bragging? Should I publish my numbers? Should I blog more about the “business” side of Paint.NET? Will it galvanize my PayPal donations if people know how much I’m making? Will I be placed under an uncomfortable spotlight? I can just imagine the horrible Slashdot titles now …

Well, I’ll at least venture forth 3 things I’ve used my Paint.NET revenue for this calendar year. First, I bought a copy of Photoshop CS3 for competitive analysis. For the record, I was quite underwhelmed with the smart filters feature. Second, I’m finally forming an LLC for Paint.NET, something that’s costing me a fair amount of cash because I’m relying on MyCorporation.com for the grunt work. Third, I built my sister a brand new computer after she called me up and said, “What does disk failure boot mean?” (second hard drive failure in 2 years = let’s just replace it). I also pay $38.95 per 3 months of 1 TB/month hosting at HostMySite.com (by the way, they rule and I highly recommend them —and no, I am not receiving any compensation from them for this endorsement).

Don’t get me wrong though — the iPhone is very good

Even though it doesn’t work in 64-bit Windows and I have to use another computer to sync it, I honestly really like the iPhone. Having just upgraded from a staple RAZR, this thing is incredible. The first few days I had it I couldn’t take it out of my pocket without people asking me about it. Whether I was at work, on the beach, or at the bar, everyone wanted to look at it, touch it, and play with it. It’s easy to use, it’s sexy, and everyone wants one. Even the people I hang out at the bars with, most of whom don’t use a computer for anything other than MySpace, know about and desperately want an iPhone.

I was going to compile a top 5 list of the questions that people ask me about the phone, but really there are just two questions people ask when confronted with My Amazing iPhone:

  1. Can I play with it? / Can I touch it? Sure, go ahead J Everyone wants to play with it! And not just my coworkers or other tech aficionados, either. I’m talking about another market that is much harder to appeal to: 20-something, bar-hopping women (I hang out at the bars around here, I tend to run in to them). They all know what it is, they all want one, and none of them can afford it. I predict a huge Christmas market for Apple with this device. (Yes Cassandra, I can load up the beat-boxing flute player video from YouTube on this thing. Yes, it’s awesome. No, you can’t have it! Yes, I agree, it’s time for another round of rum ‘n cokes.)
  2. How long did you stand in line for it? I didn’t. I went in around 3pm last Saturday, walked right up to the counter and said, “Give me an iPhone.” The gentleman at the counter said, “Ok, how would you like to pay for that?” There were a ton of people in the store, most of the playing with iPhones, but only a few up at the counter actually buying stuff. I probably just got in at a lucky time.

After having used this thing for over a week, I do have my top list of feature requests:

  1. Flash. Dang it, I want to play Desktop Tower Defense on this thing. And all those embedded YouTube clips on celebrity gossip websites are completely inaccessible!
  2. Auto-Login / Password Saving for Safari. I wish I could load up my “web apps” without having to type in my login and password every time. It’s extremely tedious to load up sites like Facebook, Google AdSense, MySpace, Hotmail, PayPal, etc. on the iPhone because you have to type in your user name and password every time. The passwords that I use aren’t in the dictionary, with randomized casing, numbers, and special symbols. I usually type them from muscle memory and it’s very difficult to touch-type them on this thing. So please, Apple, let me just add a bookmark with a login so that I can just push Bookmarks, and then push Facebook, and then have it log in for me. Maybe force me to type in a 4-digit PIN first to get access to the password repository, similar to what Firefox allows you to do.
  3. GPS. How cool would it be if the built-in Google Maps was tied to a GPS chip in the device? It would also be nice to have for when you’re walking to a destination (“where the **** is EMP?!”), something that car navigation systems just can’t do. Why pay $5000 for car navigation on a $60,000 BMW when you can just rest your iPhone near the dashboard? Goodbye iDrive, hello iPhone. (2008 E92 M3, I’m also talking to you.)
  4. Make all apps rotate-aware. Sometimes I want to access the Maps app in widescreen. Or I want to lay the phone at the sideways angle while I’m in my car so that it won’t be as likely to fall over. Right now only Safari is rotate-aware, and it’s just inconsistent. Also, the YouTube app forces you to switch between landscape and portrait depending on whether you’re browsing or watching, and it’s clumsy.
  5. 64-bit Windows compatibility. Duh. Although, in Apple’s defense, this has been a major failing of the entire industry. I can’t believe how many people have told me, “Why should I install 64-bit? There’s no advantage, and my printers won’t work!” Argh! Heck, Microsoft doesn’t even ship 64-bit DVD’s with most editions of Windows Vista. The latest Photoshop CS3 isn’t 64-bit native, albeit because of sound engineering and scheduling tradeoffs (I have even written in their defense). But hey, that’s another blog post (question: anyone interested in some 64-bit ranting? J)

This is a version 1 product and it shows. However, unlike other v1 products, the features that are there do truly rock. Instead of 100 features that suck, we have 10 features that are rock solid. It’s like they took the Paint.NET philosophy and applied it to a phone. (Actually, it’s more like I took the Apple philosophy and applied it to Paint.NET. Shh, don’t tell anyone.)

Anyway it’s Sunday. Time for some weekend stuff, like … not doing any work. Where is the beer.