Relearning Your Code

One of the worst feelings I get when programing is the feeling when coming back to an unfinished project after several days (maybe a week or perhaps a month) of not working on it. Reloading the code back into the brain is time consuming and annoying. If I know that I don’t really have the time to jump back into, it’s even harder, because I really have to force myself to learn it again, because my mind will tell me constantly that it is not worth the effort.

That’s where I am right now. But I’m hoping to find time this weekend, so I need to start sooner rather than later.

Killer iPod Touch Apps

I have decided that an iPod touch could replace my iPod Nano and my Palm Zire 31. It would also allow for me to check my college email account via the web. With the addition of Mail.app I could also check my Yahoo and Gmail accounts as well.

I decided, however, that I must wait until the SDK comes out. I am doing this for a few reasons:

  • Practice waiting. I feel that as a person I am far too impatient with my expensive purchases.
  • Pay off current debt. I need to save up a bit of money first.
  • When the SDK comes out there are going to be some killer apps that I’ll be able to use.

When I have my iPod, I need to be able to do a few things with it, mainly check my calendar, change and add events, as well as add and check off To-Do list items. Until I have this functionality it can’t replace my Zire and it useless to me. I am not sure if the recent software update has fixed these requests, but I’m sure it won’t be long before it works.

What I’m really excited for, however, are the new apps that 3rd party developers start creating. Here’s what I think would be cool. I know some of these already exist, but I’m mentioning them because I’d like to use them when I get my iPod.

  • Skype  App. Turn your iPod Touch into a VOIP phone. I already have $10 toward my Skype account, on the days I forget my cell phone I can still call people. Also the voice over internet chatting is free, so yippee for that!
  • Adium App. If someone could get Adium running on an iPhone that would be sweet.
  • IRC client. I know this one exists.
  • Twitter Client. This one must exist.
  • VNC App. Don’t think this one will happen any time soon, but wouldn’t it be cool to VNC to your computer if you needed access to a file?
  •  Alternative web browsers? How long will it take before FireFox is running on the iPod Touch?

I’m really hoping that the iPod touch will be able to be my computer away from my computer. Right now my Zire is doing a great job syncing up, (it wasn’t a few months back.) But the lack of internet and mail is really the killer. We’ll see in a month when I have my new toy.

Barrage of New T-Shirts!

I am so excited to finally announce this. Starting today, we are offering a new line of t-shirts with literally dozens of variations. We are still working on setting up all the new variations, but we have started to put some of the final ones online.

The basic concept is “School will be my Death” where in we feature stick figures getting clobbered pummeled or otherwise injured via a dangerous object that has been labeled with the name of a class.  See right for an example.

We have  a number of different variations and are working hard to add more. We are opening up for suggestions for the next classes we’ll be adding, so if you want a certain class to be added, drop in a comment here and we’ll look into adding it.

Be sure to keep checking back in, because we’ll be adding more styles on a weekly basis.

Well, what are you waiting for? Click the link: http://www.printfection.com/landofchaos/School-will-be-my-Death/_s_142607

DeChaos version 3

DeChaos was currently at version 1.9 and with a few more tweaks I was ready to call it version 2 and be done with the program.

Tonight, I decided that I wanted to redo the entire interface and recode the thing from the ground up in order to add a few more features and better functionality. Thus DeChaos version 3 was born.

Right now the interface is done, minus a few tweaks (slight issue with something being a few pixels too wide). The coding is going to be the long drawn out part. I am working right now on getting a few basic pieces in place, but I’m really starting to look at this as a long term project to perfect this program.  I’ve decided that the creation of the program is far more fun than it is to use the program.

Until that changes, it’s hard for me to use the program, without deciding to spend some time fixing it.

Information Parasite

I am an information parasite. I thrive on information. I sit and absorb as much info as my curious little ears can take in. It’s not all relevant. It’s not all useful. This doesn’t matter though, it’s information and thats what I need.  I don’t always even remember the info I take in, but the important part was that for an instant, if only an instant, I had that knowledge.

I came to this conclusion today while walking back to my dorm room. Last semester I finished up my math minor, but I had not taken Linear Algebra yet. If I took Linear Algebra this semester I would have to pay extra because I would be in “credit overload” with 20 or 21 credits. It would also give me a lot of homework to work on. Going into this semester I saw that I was going to have a bit more free time on Mondays, Wednesdays and Fridays and have already told myself I want to use this time to improve my photography, writing skills, website design and other projects I wanted to get done.

So I decided to audit the class. So basically I’m taking Linear Algebra without paying for the credits, doing any homework or taking any tests/quizzes. (Although I do foresee myself participating in this class since it’s a small class of eight people and the information is interesting.)

The big thing that struck me though, is my motivation for taking this class is almost purely curiosity. I’m not getting any credits for it and I can’t get credits for it if I would change my mind. I’m not entirely sure if I know what this means, if it means anything at all, or if this is worth thinking over in more depth.

I’m thinking that it comes down to a love of learning. I love to learn new things, I like hearing about new technologies, I find it interesting to look into things I know nothing about. The downfall to this is that I find myself knowing a very little about a very lot of stuff, which then becomes muddled in my mind and I end up knowing nothing about a lot, but I do remember that I knew something at one time.

This may require some rethinking.

Lazy Day

Today is the day I have to head back to school for another semester. There really isn’t much point in going to early, although part of me would just like to leave right after lunch. But I don’t have to be back until 8:00 at night. So if I give myself an hour or two to unpack I should really try to leave around 5:00 or 5:30. Maybe I’ll leave around 4:00 or so.

It is really hard for me to get anything done when I know I have to leave later. I don’t want to pack up my stuff to early or else I might need it before I leave. I also don’t want to start any big projects that I don’t think I can finish. In the end, I waste more time loafing about waiting and I feel like I’ve wasted a bunch of time.

As of right now I am mostly packed and ready to go, but I won’t be leaving for several hours. I guess the only thing left to do is play some Nintendo and maybe do some reading.

On Panoramic Photography

A few years back I stumbled unknowingly into Panoramic Photography. When I first started stitching images together on my computer I was using Photoshop CS1, and blending the images by hand. (Photoshop CS1 did not to a very good job of merging photos and I didn’t even know that it did that back then.) As I continued to take panoramic photos I started looking into other options. There were several comercially available tools on the market, but I was looking for something free. I found a program called Hugin which ran cross platform and did a pretty good job of stitching photos together.

Hugin allowed for the creation of control points and after setting control points up it would merge and blend the photos nicely for me. The problem was that I had to go through and create the control points by hand. Eventually I was able to get my computer to auto choose control points and merge the photo for me, but because of the buggy nature of Hugin it required me to start in Hugin .7, save the control points and then open the file in Hugin .6 and merge them with that program. This was quite a pain.

When I got my Digital Rebel, it came with software to create panoramic photos. I tested it out, but it had a clunky interface and worked rather slowly so I never really got into using it much.

Then Photoshop CS3 came out. Out of curiosity one day I tested out the Photo Merge tool and was amazed at how well it merged the photos together. It was doing a great job. Whereas CS1 lined the photos up and did a gradient fade between the photos, CS3 actually cut lines along the photos and merged them together. The beauty of this is that the break between photos would usually be at a point where two colors meet and your eye would naturally expect there to be a change in color. This made panoramic making much easier.

It did not make things perfect, though. Photoshop still left me with some color issues and with lines that didn’t quite meet up how I expected them too. So I had to go through some touch-up work when I was done. Which was perfectly fine by me, as long as I didn’t have to spend hours clicking on areas that I wanted to make into control points.

Over the past two years or so I have taken two to three hundred panoramic photos and am slowly working on stitching them together and making them perfect, but even with Photoshop doing most of the work, it’s a long drawn out process.

But then I just ran across a post about DoubleTake. I had never heard about DoubleTake, but it turns out it’s a tool for merging photos to make panoramics. DoubleTake runs for $25 and claims to be a drag and drop perfect panorama tool.

Prompted by curiosity I decided to give DoubleTake and Photoshop a head to head test match.

Before I begin, I have to make a few things clear. Comparing DoubleTake to Photoshop is not a fair comparison. It’s kinda like comparing a cruise ship to a canoe. Sure, they both float and you can ride in either of them but one is bigger and going to do a better job when the seas get rough. The main reason I did this experiment was for fun. There was nothing scientific about this experiment.

For my tests I used my G4 PowerBook computer, with two gig of ram. I used a small little program called “FreezeFrame” to stop all processes on my computer that were not essential so the programs could use as much of my processor as they deemed fit. For each photo I took time measurements with a stop watch and have the image results from both programs. (Although I shrunk them all down for the web.) (As an important side note, when I merged the photos in Photoshop I forgot to merge the layers before I shrunk the photo down to size. As a result there are thin cracks seen along the photos where the images met together. I thought that it might go away when I saved it, but because I didn’t flatten the image first the lines stayed. So the lines are my own fault and not that of Photoshop.) Also, both programs I took “as is” I did not use any advanced techniques to tweak the images, I let the programs to all the work.

I wanted to push both of these programs to their limits, without wasting too much of my time. So the first task I threw at them was a 17 image panoramic photo of Quebec city. I quickly found out that DoubleTake only merges photos horizontally or vertically, not both. DoubleTake finished the task in 46 seconds but produced in image that looked like this:

Quebec DoubleTake

Photoshop on the other hand, took a whopping 34 minutes and 45 seconds to churn away at the image but produced a more accurate result like so:

Quebec Photoshop

I figured I best stick to only horizontal images for my next tests and decided that I would take a smaller 5 photo image. DoubleTake zipped through this image in 19 seconds. However, it didn’t like the overlap of the photo and gave me a duplicate mountain:

SD DT

Photoshop took 3 minutes and 48 seconds to produce a more accurate photo as such:

SD PH

My next task for them included a photo of 8 images where the exposure changed from image to image. I wanted to see if DoubleTake recognized this on it’s own and tried to fix it. Sadly, it did not. In 35 seconds it cranked out this image:

Niagra DT

Photoshop noticed the issue and 5 minutes and 32 seconds later it came up with this for a solution:

Niagra PS

At this point I felt that I needed to give DoubleTake a fair chance. DoubleTake’s target market is not for professional or semi-professional photographers who take panoramics for a living. It’s a consumer grade product, wonderfully priced and very easy to use. It’s for the casual person who every now and then has a photograph or two that they need to merge to make a bigger picture. So I grabbed what I called a “neat” panoramic photo.

Two images, side by side of a sunset. Good overlap, not much movement in camera, color and exposure good throughout. Overjoyed with the opportunity, DoubleTake jumped right in and 5 seconds later it had created a nice little photo like this:

Sunset DT

Photoshop took 39 seconds to create this image:

Sunset PS

If I were to crop these last two and put them side by side, I probably wouldn’t be able to tell the difference.

Now, only after all of this, I went and looked at the interface and options that DoubleTake has to offer. Unfortunately, DoubleTake’s method of merging the photos is a gradient blend, which isn’t bad if things are lined up nicely, but what will sometimes happen is that things won’t be lined up nicely and there will be half faded ghost-like items in the image. You can control where the gradient is though, and the extra control can be very helpful. Also, there are options to adjust the exposure and color on each individual image, so if one photo is over exposed, it can easily be fixed and the panoramic can be saved.

The interface allows for a few other options on setting the geometry, lens focal length and all that fun stuff, which makes this a very useful tool if you just want to make some simple panoramics from time to time.

For people who don’t have access to Photoshop, this is probably a pretty good deal. It’s cheaper then other blending programs (that I know of) and it’s very easy to use. For those who have Photoshop or at least have access to it, it does a better job at blending in tough situations but there is a performance penalty when it comes to time.

Neither program is absolutely perfect, Photoshop has trouble when it tries to line up the water going over the falls at Niagra, if you didn’t notice the big jump on the horizon scroll up and give it a look. It would definitely need some touch up.

I can’t say that one program is “better” then the other simply because these are two completely different programs targeted towards two completely different groups of people. However, if you are planning on doing panoramics on a large scale, Photoshop is probably the way to go. Otherwise, DoubleTake does a pretty good job.

DeChaos

DeChaosI have been sorting photos on and off in my spare time for the last week or so now, tweaking my script and playing around with options. My biggest pet peeve about the script was that the dialog box that came up asking for text always appeared smack dab in the middle of the screen. This inevitably covered up the photo I was looking at.

Yesterday night I had had enough of it. So I opened up Xcode and started learning how to write an applescript application. I woke up this morning and polished off the rest of the code and I am now proud to say that I now have a working application for sorting photos. I call it: DeChaos. (Apparently there is a gamma ray analysis program by the same name, but it’s public domain software and since I am the only one currently using my program I don’t think that there will be much of an issue with using the name.)

I would like to post up the app onto my site in case anyone else would be interested in using it, but I have to put some better error checking in place first. The program currently takes a few things for granted, which may not be true in the case of everyone who uses this program. Also I don’t know how well it handles when trying to sort photos into the same folder that is being sorted from. I’ll look into these issues as I have time.

18000 Photos and Counting

Morning GloryI like taking pictures. Too much so. I got my first digital camera in early 2004 and quickly took 1000+ or so photos over the next two years. (I think the actual number is a lot higher, but I can’t be sure anymore.) In 2006 I took 4000 photos and got my first DSLR camera. And in the following 12 months I took roughly 10000 photos.

This left me with about 18000 that were sitting on my computer, largely unsorted and sitting in iPhoto. I did do some work with my photos, but I never deleted any. I have hundreds of bad photos, some a blurry, many have poor composition and I find that there are far too many duplicates.

I needed to organize these photos. I needed to throw out the bad ones. I wanted to go through these photos, one by one, and save the good ones, getting rid of the bad ones, touching up the ones that needed to be touched up.

I had some options. All my photos were in iPhoto, I could take them all, tag them, rate them and set up smart albums and regular albums for them all. I had tried that a bit in the past from time to time and it never seemed worth my time. It was too clunky. It didn’t flow well and I had no starting place. Also, I was never quite sure if iPhoto really deleted my photo or not. Often I would delete a photo from an album only to remember that it was still present in my library. This was not a good solution.

I looked around for other programs that might do the job, but I never found anything that was quite to my satisfaction. So I had one option left: make my own.

So I began to think about the best way to go through and organize pictures. I didn’t want some proprietary format that I would have to keep buying upgrades for as my collection of photos increased or as time went on and it was upgraded. I also wanted to sort my photos by a single keyword, a simple dialog box which asked me for a name and then I could move on to the next photo.

SunriseI’m a fan of Applescript, which for those who don’t know is a easy to write programing language made by Apple which works with “many” of their programs. I know some other languages, but I don’t know enough about attaching them to interfaces and I didn’t want to take the time to learn, I just wanted to sort my photos.

My final solution turned out pretty well. I take all the photos I want sorted and dump them in an arbitrary folder. (The folder can’t contain other folders, but I’m still tweaking the code to fix these things.) Then I run my Applescript. It asks me to locate the folder of photos to be sorted and to locate a folder to sort the photos into. (I set up a folder called “Philip’s Photo Library” and sort them in there.) The program then runs through all the photos in the folder of unsorted photos, (opening them in Safari since Preview is not Applescript friendly) and then asks me to type in a name or category for the photo.

This is where things get a little tricky. If the photo I am looking at is a flower, not only do I want the program to move the photo to a folder called “Flower” but I probably also want to change the name of the photo to “Orchid” or whatever flower it happens to be. Whereas if the photo is some random photo from the family reunion I want the program to move the photo into a folder called “Family Reunion” and I don’t really care to name the image file.

To solve this I decided to have two options on my dialog box, one called “Name Image” and the other “Next Please”. If I choose “Name Image” I am presented with a second dialog box to change the image name and if I choose “Next Please” I just move onto the next photo and the picture file is automatically named from the first dialog box.

One of the first things I knew I needed to protect against was duplicate names. (I was fixing this before I had the two dialog box system as described above.) So I had the script count the number of photos already in the folder it was going to put the next picture, add one to the count and then put that number at the end of the name. When I added the second dialog box, I wondered if I should tweak this, since it wasn’t entirely necessary, (maybe use a different command, such as “move without replacing” or something) but I decided that my solution already worked and an arbitrary number at the end of the image name was no big problem to deal with. It would be fairly easy to get rid of later if I wanted too.

Stella de oro daylillyRight now I have used my script to sort through almost 1000 photos, I have deleted about 400 of the bad ones, and I now have roughly 10000 left to go through. I feel like this is finally under control. (Or at least able to get under control.)

My next issue is tackling my work flow for working with RAW format photos. I have started taking photos with RAW format which means they need to be processed before most applications can use them. They are also a lot larger in size. So I can’t let them accumulate because I will run out of hard drive space.

Also I need to start up my panoramic work again. A good 3000 of my photos are all for panoramic work. I have 100+ panoramic that I need to splice together. I’m just glad I have tools to help me do that.

Finally, though, I am working on cleaning up and debugging my applescript code so that it is more robust, then I plan to post it up to my website in case anyone else would be interested in this type of photo sorting solution. In the long run I think it would be nice to add an interface to the app, simply because the dialog box always pops up in front of the photo I am trying to look at, but also because I don’t want it to have to rely on Safari. If anyone would be interested in the code, let me know an I can post it up. It’s not as robust as I would like yet, but I’m willing to let it be open sourced. (I should really clean up my Applescript first though.)

Have a happy new year and may your photos all be sorted this year.