Product Review: PaintCode by PixelCut


I purchased a copy of PaintCode from the Mac Store in March, and have used it in a real production environment. Namely, make resolution-independent images quickly, vector-based, so they look crisp on both Retina and non-retina displays. PaintCode appeared to be a great time-saver. I am happy to say that PaintCode was wildly successful in this regard. Here’s what I experienced.

I started with version 1.0. At the time, there was no support for ARC, which meant that I had to make some adjustments, using __bridge. I sent an email to PixelCut, and got an immediate response, with direct answers to my questions, a promise for ARC, and even a sample. During that time I had already started slapping the code into a storyboard, and liked an addition class in a PaintCode sample I found from David Keegan, which created UIImages with drawing blocks. His solution was small and elegant.

I was able to use the code to create images that I assigned to button states, and various animations. This was easy, and I was very aware of the hours PaintCode had saved me. It’s not going to automatically expand it’s size for you, so you may have to go back in and click Expand/Contract to get the right sizing. If your image is inside something like a CALayer, where sizing is dynamic, you manipulate the layer, and it will expand as you expect.

The feature page from the web site spends a lot of time explaining how to use the drawing tools. This is fairly easy to understand, even if you’re not a designer. As someone who already knows how to use Adobe Illustrator, any designer would find this very simple. Many developers will find it new and moderately challenging. So, they have struck the correct balance, because their audience is likely to be developers. The app is priced for what it is: it’s not a cheap tool, and it’s not a major suite tool, it’s a serious utility.

As for the phrase “The missing bridge between programmers and graphic designers,” every time I think something can bridge the gap, I’m proved wrong. It might be more appropriate to say “For those times when your designer is AWOL and is ignoring you and your deadlines.” Just a reality check. Or perhaps, “When you aren’t going to have a designer, and you have to do you own graphics.” The tutorials seem to have this scenario covered.

The Bezier tool is quite handy, although you have to know to right-click to get handles for curvatures. There are boolean operations on selected objects, which is very handy. Gradients have a finite number of steps to them when you look at the generated code. Fortunately, you have a good enough clue on how to increase this to more steps. However, if you need a ridiculous number of steps, you’re better off looking at Illustrator and SVG exporting. I’d recommend SVGKit for that.

Conclusion

I have to say I’m impressed with PixelCut. PaintCode is a fantastic product, and hits a nice niche. The app is now at version 1.01, and it has ARC support built in, just as their email had promised. I’ve used it in a production app, and I’m sure I will use it again. That’s the sign of a useful tool. PaintCode is certainly that. I highly recommend it!

 

Posted in Uncategorized

CocoaHeads Presentation: PaintCode Resources

Here are the assets for tonight’s presentation.

 

Posted in Uncategorized

Particle Systems in Adobe After Effects

Thanks to everyone who came to last night’s presentation. I’m posting a PDF of my Keynote slides. The screenshots are of CS 5.5, and show how to create a floor of particles, and a twisting energy vortex. Enjoy!

Posted in Uncategorized

AV Foundation in iOS 5 – Video Capture, Save, Display

In preparation for a project at work, and a presentation for the local CocoaHeads, I decided to dive in on the new AV Foundation implementation in iOS 5. Most of what I concentrated on was understanding the Rosywriter demo from WWDC. There were a few things I wanted to do very differently from the sample:

  1. Apply this to a storyboard, and get rid of that repulsive toolbar
  2. Use ARC
  3. Remove the pixel color processing, while keeping the CALayer for the display in the view
  4. Make the video orientation for landscape, like a normal person would. (Portrait video? Seriously?)

I’m posting the Keynote slides and the Xcode project. Here’s a PDF version for the Keynote-challenged.

Some things to remember about using some of the Apple code in your project:

  • Make sure your frameworks have been added to your project
  • Remember to add files like fragment and vertex shader files in your Build Phase under Copy Bundle Resources

Posted in Uncategorized

Adobe Construction in Utah

Adobe construction

Every day, I drive past the new Adobe building by Lehi and the “Point of the Mountain.” With such a mild winter, the timing could not be better. Some of the worst weather I’ve ever seen in Utah is right there. I just had to take some pictures, even though I’m no photographer. It’s nice to see something positive, and a place for jobs here in the US, and I for one appreciate what Adobe is doing here. I’ll take more when it’s done.

Adobe building with mountains

Posted in Uncategorized

Copying PNG image files copied from NSBundle to Documents seems wrong

My task was to have some image resources in my iOS application bundle, and copy them into my Documents folder for use later, namely HTML5 code generation. I had a big problem, in that the image sizes were all wrong. When I’d download the package contents from Organizer, and look at then in Finder, the images looked simply transparent. They looked fine in the Xcode project, so what happened?

Normally, images, particularly PNG images, are used for GUI elements, not as assets for use later, like uploading to a server. Xcode build settings use a utility called pngcrush to squeeze a touch more file size out of them. This is the default. To fix this, you go into your Build Settings, the Packaging section and change Compress PNG Files to NO. Now the files do not get crushed, and they keep their original form.

XCode 4.2 screenshot

Posted in iOS

Finder wants to make changes – Trash permissions reset

I have Lion, and for some strange reason, my Trash was now annoying me to enter my admin password to do it. Crazy. So I tried some things I searched on, no luck. Finally found a post that worked, and was fairly simple. Somehow, my Trash ownership got switched to root, instead of my user. Here’s how to fix it.

  1. Open Terminal
  2. Type sudo chown $USER ~/.Trash

That’s it!

Posted in Uncategorized

WordPress Spamming -or- How To Not Waste Your Life

I have to start by apologizing for turning off comments for a while. In the last two days, I’ve been slammed with over 800 spamming comments to my articles. Yes, it’s annoying, and at first I was attempting to build up a clever list of spammy words to trim the spam out. Then I realized I was wasting my life putting that much effort into it. I’m was not willing to play the game, even a little bit. I felt better right away.

Think about it. What is the point in expending a bunch of effort, because of something someone else has set up, for their own purposes, where your benefit is nothing? There has to be a reward somewhere, for yourself, or for someone else. Just following the other sheep or performing to the status quo does not come free. You expended energy.

It’s even worse if you expend money and time. Window PC repair comes to mind as a perfect example. The entire anti-virus industry is built on this most base and despicable display of wasting people’s lives. One solution: buy a Mac instead. Since “the switch” almost four years ago, the number of viruses we’ve had to deal with? Zero. That’s not hype, or slick marketing talking, it is quite simply a fact, and it is not up for dispute. And if you are stupid enough to manually launch a virus from a Mac, you are a sheep with the exact problem I’m describing.

If you are in a job where your purpose is to create these games, you are a complete waste of space. If you are clever enough to spam people, you should be clever enough to do something useful with your life. In an odd way, if someone is simply an identity thief, while destructive, it’s not surprising, because there is a point. But a spammer is a bandit that forces you to sit through commercials. They’ve stolen your time. Why is that?

Simple. A business started this chain of nonsense. Instead of casually showing their goods at the side of the road, they create a roadblock bandit, pointing to the gods at the side of the road. And there is a line of 800+ bandits to go through. So much for the myth of the efficiency of unbridled capitalism. Still not convinced, think about health insurance for a minute, and if that’s getting better and more efficient. Greed is not always good, and is often very destructive. The root of spamming is greed. Whatever it takes, the ends justify the means.

I submit that it’s up to all of us as individuals to determine if we allow someone else’s greed to waste our lives. So take a moment to pause throughout your day, and decide, am I doing something important right now, or am I walking with the sheep. If your gut is saying you’re not happy, it’s likely you’re wasting your time. Simply stop and walk away. It’s really okay.

Posted in Uncategorized

SLCAdobeUG October Meeting – AJAX Simplified

Here are the items for tonight’s presentation.

Go to Start Form

Download Source Files

Posted in Uncategorized

Deleting large “Other” in iOS 5 and iTunes

I had a strange problem. In iTunes, the Other was using up 7GB of my iPad capacity. Not good. Seems like it’s a corruption issue. To get this space back, on your iPad, go to the Settings app->General->Reset->Reset Network Settings.

Do NOT do Reset ALL Settings. I saw some posts on this. It’s overkill and forces you to restore, and waste a lot of time.

So, the iPad will show the big progress bar on the screen, and will reboot. Then sync with iTunes again. That should fix it.

Posted in Uncategorized