Download Fuzel, and make awesome-looking photo collages

Taking photos is a great way to capture different perspectives and moments that we would otherwise miss. We use great apps like Camera+ or Hipstamatic to take photos, Instagram to share photos, or FatBooth just to have a good laugh.

While a good photographer (or iphoneographer) can perfectly capture a moment with only a few shots, another great way to do so is combining many photos together.

Make a collage.

Fuzel isn’t the first collage app. There are apps (and good ones too) like PicFrame, Diptic, or Grid Lens. Nice apps, but they share one common limitation: you can only create collages based on pre-set layouts. Sure, you can adjust the frame nodes to modify the layout, but there’s a restriction to how much you can adjust those nodes. This limits what you can create.

How is Fuzel different then?

We develop an all-new cutting tool so that you can “cut” almost any layout that you want. Just slice to cut your own layouts. With other features like apply photo effects to individual photos, customize base colors, adjust collage or photo outlines separately, add frames and captions, we believe that you will have a fun time making creative collages on your iPhone.

Read more about Fuzel or get it now at $0.99 limited-time introductory price.

Happy Leap Day!
The NAB Team

 

How to upgrade Manga Rock using in-app purchase for jail-broken iPhone/iPod touch, and some other ethical issues…

First of all, for those of you who find in-app purchase troublesome, we want to say that we share the same concern. After many nights conceptualizing Manga Rock, we decided to implement In-app Purchase as the better way to improve user experience, due to two main reasons:

  • Our manga source, OneManga.com, is free for everybody. Therefore, we feel that we need to allow our users to read manga online for free, because we simply do not own the contents! We even throw in there our advanced viewer to deliver a good manga experience with features such as swipes, double tap, orientation etc. and better yet, it’s ad-free, unlike many other free manga readers right now. Other than that, in-app purchase provides an unannoying way to introduce our other wonderful features to you.
  • With the traditional way of purchase where there are free and paid versions of an application, users who find our free app good enough will have to exit our application, go to App Store to purchase and download the paid version. In-app purchase helps reduce all those steps.

However, there are some minor disadvantages on both Not A Basement Studio’s side and on our beloved customers’ side:

  • We face difficulties with our competitors where they can download our app for free as many times as they want, then under-rate us, give customers a distorted view of how good our application actually is. We, on the other hand, cannot defend ourselves or do the same thing as we have to pay in order to rate their apps (however, we are not unethical enough to do so, thanks to Ethics course). In the end, we hope what is right will be right, and users will understand and find how truly awesome our app is.
  • On the technical side, In-app purchase is the “killer” of jail-broken devices. Apple uses some kind of device ID that jail-broken devices are unable to provide. Don’t cry folks! Fortunately, we have found some kind of work-around so you can purchase and enjoy Manga Rock (we do not encourage jail-breaking though)

There are 2 methods out there, depend on whether your device has AppSync in or not.

Verify whether you have AppSync

  1. Launch Cydia, go to tab Manage, click on Packages

If you HAVE AppSync:

  1. Find AppSync in the list and click on (enter) it
    (Unfortunately, I don’t have AppSync on my device for a screen shot here!)
  2. Modify –> Remove
  3. Uninstall and re-download Manga Rock
  4. Perform In-App Purchase

If you DO NOT HAVE AppSync:

  1. Uninstall Manga Rock
  2. Use a SSH software to connect to your device, or use any iPhone apps to browse through system files (iFile, DiskAid, iPhoneBrowser…).
    I am using iFile for this demonstration.
  3. Navigate to /private/var/stash/libexec.xxxxxx/ (xxxxxx should be any random 6 characters depends on your device)
  4. Rename installd to installd.new
  5. Rename installd.backup to installd
  6. Reboot or respring your iPhone
  7. Re-download Manga Rock and perform In-app purchase
  8. Voila! Enjoy Manga Rock!

    From here, you still need to do one more thing: go to your file browser and rename all the files back:

  9. Rename installd to installd.backup
  10. Rename installd.new to installd
  11. Reboot or respring your iPhone.
    You will have to redo all the steps every time you reinstall Manga Rock or any other apps with In-app Purchase.

Good luck and enjoy Manga Rock! ;)

(This demonstration was tested with iPhone firmware 3.1.2, jail-broken with geohot’s blackra1n method)

P/S if you like Manga Rock, or this post, or just want to know us better, become a fan on our Facebook Fan Page

Updated!
We have now confirmed that these methods DO NOT work on iPod touch devices running firmware 3.1.2 and jail-broken with geohot’s blackra1n, as installd.backup cannot be found.

However, not all hopes are lost :P Thanks to Cole™ we have got the solution for JB iPod touchs’ users. If you are one and would like to support Manga Rock, please (1) go to iTunes and update your firmware to 3.1.3, (2) jail-break your devices with Spirit, and (3) redo the steps stated in the upper part of this blog.

Some tips about Memory managament in Objective C

Despite the fact that I started programming in Pascal  at the age of 12, I have to admit Objective C is not something simple that I can learn and produce something useful in a few weeks. Why is it not simple? I think the main reason for me is dealing with memory.
Memory handling is, maybe, easy at first, but when you start writing something a little more complicated, you will start to have a good amount of sleepless nights debugging errors. Because when memory is not being handled properly, your program will be very unstable, meaning it will crash at very random point and it is very hard to debug.
Honestly, I still don’t find myself very confident about this topic yet. However, after 1 year learning Objective C and the 4 months developing Manga Rock, I did learn a thing or two that I think it’s worth sharing. Hopefully, these below tips will help you a bit when dealing with memory management in Objective C.


1. Memory debugging with NSZombie and Instruments

Using NSZombie and Instruments to debug is helpful when you are access an object with an reference count equals to 0. So check out this link and learn how to use it so when your program gives an error like “Bad Access”, you will know how to debug.

However, when you are still inexperienced with Objective C, and you are so afraid of memory leaks like me when I first started, you will tend to over release an object. If your program ever crashes without giving any kind of error, trust me, the first thing you should do is to find out if you are over releasing any object.

2. Collection classes and memory management

When you access object in a collection  like NSArray or NSMutableArray, it’s better to retain it and release it once you are done with it. Like the example below:

1
2
3
4
5
6
NSArray *pages = [data sortedArrayUsingDescriptors:sortDescriptors];
for (int i = 0; i < [pages count]; i++) {
     Page *p = [[pages objectAtIndex:i] retain];
     [self addToOperationQueueWithPage:[pages objectAtIndex:i] atPosition:i];
     [p release];
}

Why you need to do this? If your program is not using multi-threading, it’s fine to not follow this. But if your program does use any kind of multi-threading like NSThread or NSOperation, I strongly recommend you to follow the above pattern. Because if you don’t retain the object you are accessing, your program may crash when you are trying to access any object of the array and at the same time, other thread has just release that array object.

3. Nil object

This link from the iPhone OS Development Blog is a good link to explain the relationship between Nil object and memory handling. I do find that assigning the object to nil after releasing it does help my application, Manga Rock much more stable. And I think the reason is that in Manga Rock, I use threading a lot to make the application more responsive, so by assigning the object to nil, I will be sure that the object get deallocated.

4. Object Copying

If you are dealing with any mutable object like NSMutableString, it’s better to make a copy of the object before using it for anything else. This will help you to prevent the value of object unexpectedly (like by other thread).

Anyway, for now I can remember only these above tips about memory management that really helped me to make Manga Rock a solid application. So if I get to learn more about memory management in Objective C, I will definitely create another post and share with you all. And if you know anything useful about dealing with memory management in Objective C, please share with me by commenting on this post .

One last note for people who just started learning Objective C,  picking up a good book like Programming in Objective-C and reading through the memory management chapter of the book is a good start. After that you should read through Apple document about memory management. Doing those readings will definitely help to save you from a lot of sleepless nights. Don’t be like me just jump straight to coding without any proper learning :).