cloud goes social
computer, travel, movies, music, cuisine and more
computer, travel, movies, music, cuisine and more
Aug 28th
As you have noticed I’ve added a donation button on the top right part of the site.
The other day Mr. William Edmondson, from Comcast has donated me some money. Being the first time such a thing happens I would like to thank him in particular. I hope you have found interest in what I write.
I will add a section of all the donors to my site, so your names won’t be forgotten. And from my side I will keep on writing and coding and keeping you updated.
Following up this weekend a new version of the ImageMagick for iPhone test project (which I know you love to read about) from the comment of another reader of this site. And also following a new post with some nice specifications of the iPhone that you may find useful (and it took me a while to dig out).
So, again, thank you all, and stay tuned!
ciop ciop
Jul 28th
Here I go again with an update to the ImageMagick on iPhone saga.
As requested by a few people here on the site, I’ve added TIFF functionality to the compiled library. If you’re interested in reviewing the all process to compile ImageMagick for the iPhone please refer to my two previous posts where that’s described in detail: first and second.
TIFF is compiled with ZIP functionality, so you can compress your TIFF files.
As usual I’ve provided you with an updated script which now enables the compilation of tiff-3.8.2 alongside jpeg and png to have it supported in ImageMagick.
For the lazy there’s always the compiled static libraries and includes. But remember to take as well the *.xml configuration files for some ImageMagick functionality!
And the IM_Test Xcode project has been updated as well where the TIFF functionality is tested.
I guess I’ve updated everything accordingly. Please let me know if anything isn’t working for you. As usual contacting me here on the site.
ciop ciop
Jul 14th
Thanks to Karl (see previous post comments and update) the XCode project has now the possibility to work on the images uncompressed. We (me and Karl) wanted to see the difference for ImageMagick to work with a compressed format (JPEG, for instance) and with an uncompressed format (raw data).
I’ve added to the project a simple benchmark, consisting in running the MagickWand creation, filtering and destruction a given number of times (customizable in the beginning of the source file, for instance 10), calculating how long it takes each time and in total.
The results are impressive, and can be better exaplined by looking at this simple graph:
As you can see working with uncompressed data achieves 3x faster results on the iPhone device, with a mean running time of 0.85 seconds to run an ordered posterize filter on an image of size 320×460 (the size of the iPhone screen). Similar results are also on the Simulator achieving 3.7x faster filtering for the same image.
The end line is trivial, working with uncompressed data, while being less easy (but as you can see from the project code not extreme) or intuitive yields much faster results!
You can download a better looking graph and the IM_test project as usual.
For any comment don’t hesitate to write, as you’ve seen I try to pick up my comments as much as I can (even on holiday!)
Thanks goes again to Karl who’s has the idea of working with raw images, and provided with the code to achieve so.
ciop ciop
Jul 9th
UPDATE! (30.08.09)
Thanks to Jon Kean (see comments) the downloadable project now shows how to use images with unusual number of bits per component. As usual look at the defines at the top to check the functionality you want.
UPDATE! (14.07.09)
Thanks to Karl (see comments) the downloadable project now shows different ways of integrating ImageMagick with Objective-C UIImages offering both compressed methods, using JPEG compression as an example, and raw-data methods. Look at the define at the top to change which method the program will be using.
Many of you have asked me if I could post an Xcode project example to use the libraries and ImageMagick, and so, here it is.
The code is self-describing so I didn’t comment it much, it’s just a few functions call. All it does in this case is loading an image from an UIImage (Objective-C) into a format that ImageMagick (C) understands and can manipulate. Then it applies an ImageMagick filter (OrderedPosterize), which uses a configuration file (thresholds.xml).
Everything is working fine, and you have the complete set of libraries, headers and configuration files, and a configured XCode project right at hand.
If you still have any problem, don’t hesitate to contact me!
ciop ciop
Jun 26th
I’ve been busy working on an iPhone project using ImageMagick the last month, and one thing has kept on bugging me: Some functionality just wasn’t working!!!
In particular I discovered that ImageMagick uses some XML configuration files for some of its internal operations. You can find the whole reading about them on ImageMagick site.
After fiddling, deciding to not care, re-deciding that I WANTED THE FUNCTIONALITY here’s the solution (as usual in steps):
~/Desktop/tmp_target/imagemagick/lib/ImageMagick-6.5.3/config~/Desktop/tmp_target/imagemagick/share/ImageMagick-6.5.3/config
.xml files in the two folders above.
viewDidLoad, for instance), this may vary depending on your program, add the two following lines:
NSString * path = [[NSBundle mainBundle] resourcePath];
setenv("MAGICK_CONFIGURE_PATH", [path UTF8String], 1);
Done, now ImageMagick knows where to look for the needed configuration files and will work like a breeze for you.
YES! It was this easy. But not to discover, trust me! :P
Jun 9th
I’m working on some iPhone applications, which need some image filtering. For now, I won’t say more! Stay tuned for the news when it comes out!
Long story short, I soon found the need (ant the challenge was a good one) to get ImageMagick static libraries so that I can use it on the iPhone. Not only that, but with jpeg and png support. That’s what I need.
After a fast search through the net, I couldn’t find a single _GOOD_ post on how to do that. Just some bits and bytes – Nothing complete.
I soon set on a mission to get ImageMagick to work on the iPhone, as a library. And here’s the result of my quest (around 1 day of search, trials and errors, and at last some light!)
I’m running MacOSX 10.5.7, with the latest MacPorts installed. If you don’t, get it! I have many ports installed, the ones I “think” are important are:
Also, I’m testing everything with the latest beta of the iPhoneOS 3.0 – It should be working also for 2.2.1 and the final 3.0 when it comes out.
I now provide you with a shell script that should do the whole trick of creating the static libraries needed in Xcode for iPhone development.
Just download it, give it run permission (chmod +x ./compile_im.sh), and launch it. It will ask for your password because it needs to copy a file that is not owned by you, the user.
Before complaining that it’s not working, open it, and look at the required directory structure for it to work.
In particular you will need:
– to which I’ve added the MacPorts patches
Now you can run the script :)
The result will be stored under: ~/Desktop/tmp_target. In particular you can find all the header files needed while developing your application under: ~/Desktop/tmp_target/im_libs/includes (divided by library). While all the static libraries are inside ~/Desktop/tmp_target/im_libs/:
Please note that the script joins both the i386 and the arm build inside one single .a static library to ease up developing (for testing both on the Simulator and on the device itself. When finishing up the application you may want to put only the arm library to make the overall application lighter.
To work with your libraries you need to put some easy adjustments to your Project in XCode. I’ve found that the best thing to do, especially in a shared environment with multiple developers, to just put everything inside the XCode project. To do so do:
Click on Project->Edit Project Settings and edit (in the Build:
This should be enough to make you start.
If you’re lazy, don’t manage or for whatever other reason you can just download the whole compiled package
In case the script doesn’t work, you have questions/suggestions/support please don’t hesitate to contact me, and in case you need help with the script please send me the FULL output in a file.
./compile_im.sh > file_to_send.txt
May 19th
I’m an Apple fan, and user, and developer. As such I have an iPhone and I use it, and I develop for it. Well, I try.
When I say: “I try” I don’t mean that I don’t have the skills necessary to develop an iPhone application, I mean that despite the application I’ve developed (with a friend) works, has been checked against memory leaks, is snappy and, I believe, useful, well, despite all that, Apple rejects it.
Now, since I don’t doubt my developer skills, and since Apple of course couldn’t find anything done badly in the application, the question is: why does the application gets rejected?
First of all, µMonitor is a simple application with some views, populated with some tables that shows (N.B. SHOWS, you cannot [up to now] add torrents to download, just monitor [as the name implies] the status of your µTorrent instance), by connecting through the µTorrent web API, the torrents that you’re downloading/seeding/whatnot on your µTorrent instance running somewhere over the net. It’s very simple, the webui of µTorrent hasn’t been developed to be shown on a small-screen device therefore the native application shows the same results just in a more iPhone-like ui/experience. There are optimized version of the web-ui for smaller-screened devices (link, link), but why not having a native application? Exactly! That’s why I’ve developed one!
The application has been submitted to Apple for revision the 13th of January 2009:
A few days later the dreaded e-mail arrives:
from : devprograms@apple.com
to: …
date Fri, Jan 16, 2009 at 4:17 AM
subject: µMonitor: Application Submission FeedbackPlease include the line below in follow-up emails for this request.
Follow-up: <0ed out>
Dear Claudio,
Your application, µMonitor, is requiring unexpected additional time for review. We apologize for the delay, and will update you with further status as soon as we are able.Thank you for your patience.
Regards,
iPhone Developer Program
After a while, a long while, the rejection email:
from: iPhone Developer Program
to: …
date: Mon, May 18, 2009 at 3:56 AM
subject: µMonitor 1.0: Application Submission FeedbackPlease include the line below in follow-up emails for this request.
Follow-up: …
Dear Claudio,
Thank you for submitting µMonitor to the App Store. We’ve reviewed µMonitor and determined that we cannot post this version of your application to the App Store at this time because this category of applications is often used for the purpose of infringing third party rights. We have chosen to not publish this type of application to the App Store.If you believe you can make the necessary modifications to bring your application in compliance with iPhone Software License Agreement, we encourage you to do so and resubmit it for review.
Regards,
iPhone Developer Program
I’m really dazzled by the decision, and even more by the motivation, given by Apple about µMonitor, and here’s my rant-post.
What can I do? What can we do, torrent users? I will review any suggestion. For now, I’m astonished.
May 17th
I just started a new project. It’s a Cscope Bundle for the super-mega-fantastic-awesome MacOSX editor TextMate.
The code is hosted over at github where the bundle can be downloaded.
The main webpage for the project is right here: Cscope for TextMate.
Of course comments are greatly welcomed with suggestions, bug fixes and requests. I will try to keep up with the project and coding to make it always more useful!
May 17th
For those who don’t understand the title don’t worry, this is a “technical” post: installing Ruby on Rails (ROR) over an existing XAMPP (Apache, PHP, MySQL, …) installation in Windows. For all of those who have somehow a Windows “server” used to test websites and want to install Ruby and the fantastic Ruby on Rails framework.
Prerequisites: a working installation of XAMPP, in my example installed under: C:\xampp.
cd C:\xampp\ruby\bingem update --systemgem install rails --include-dependenciesrails C:/xampp/htdocs/testapp## ROR Listen 3000 <VirtualHost *:3000> ServerName ROR DocumentRoot "C:\xampp\htdocs" <Directory "C:\xampp\htdocs"> Options ExecCGI FollowSymLinks AllowOverride all Allow from all Order allow,deny AddHandler cgi-script .cgi AddHandler fastcgi-script .fcgi </Directory> </VirtualHost> ## END-ROR
http://localhost:3000/testapp/publicAt the moment of this writing this is the list of version numbers for the installed applications running and working as configured in this post:
I would like to thank the author of this post which is the starting point of my post. I just did some minor changes to remove some errors, especially when updating gems. Also I changed the file to edit to add the Virtual Host to keep things more clean in the http.conf file.
For any trouble don’t hesitate to contact me!
May 6th
What doesn’t kill us makes us stronger – Friedrich Nietzsche
Cazzo, Vittu, Foda-se, Scheiße, 狗屁 – Claudio
For those of you not knowing what such quotes may refer to, and for those who do, here is an explanation of the facts, as they’ve happened in chronological order. Or thought so
I do understand that my narrative skills aren’t the best, so for anyone that might be really bored you can jump to the last part!
After a tiring week of lessons and exercises at ETH João and Claudio set off to the center of Zürich to buy chocolate. More chocolate. Claudio has tickets to reach his girlfriend, Eppi, in Finland, the day afterwards, the 1st of May.
The weather is fine, a bit cloudy, once home, where Mike was waiting for them, the trio sets off to kick a few times the ball in the nearby park, and then to program a mysterious iPhone application which will see the light in the future.
At around 19.00 João and Claudio decide that it’s about time to bring the luggage to the Airport for a night-before-check-in (which is definitely a very good option for all the people who have their flight early in the morning). After the operation yielded successful results the duo went on to the Chinese restaurant where they decided to grab some food for the soirée.
NOTE: João paid the dinner since Claudio has been helping him the whole previous afternoon being the best money-investor for his reach family (all fake, ETH Human Resources Management course project)
Home again, the trio reformed, dinner is served and eaten, followed by the delicious apple-lime-sugar (re)mix © by João.
Cards are now entering the scene, with a few fast matches of Briscola, and some tricks done (and later explained) by João.
The second part of the evening, beside occupying the same time as the previous spots fewer activities, first the last Lost episode has been watched by the full trio (yes, they are fan of the series) and then João brought up a cool opensource FPS, Warsow, which kept the three guys busy until around 3 in the night.
With very few hours of sleep ahead, Claudio decides to take home João and get some rest before the trip. Or so he thought….
To take João home, Claudio, the driver, needed a car, which he has, parked outside home. Apart from a working car, he needed a license, which he has, safely stored in his wallet. Which he has … Or no, he had. You guessed right, the wallet was nowhere to be found. Not in the house (which Mike has been scanning inch-by-inch), not in the car (which João scanned centimeter-by-centimeter), not in the streets, neither from car to home, nor from Chinese (closed at 24.00) to car park (scanned by Claudio & João meter-by-meter).
With his plane leaving in just hours (2, roughly) Claudio lost his hope to find the wallet. But he didn’t lost hope to reach Eppi, in Finland. Here comes the telephone aid:
The two iron-forged guys, João
Back home, Mike is in bed, sleeping and dreaming about jumping sheeps overflowing the maximum integer size, Claudio takes a quick shower while João chats with some Portugues friends still awake.
The time has come. The two heroes reach the airfield, and João gifts lends Claudio some money for the trip, Claudio advances to the gates of heaven the passport check and passes through, without any inconvenience.
João brings back the car to my place and gets some rest. He deserved it!
All goes fine, from Zürich to Düsseldorf and then to Helsinki, final destination Loviisa and all the way back. The small holiday has been a charm, a needed refreshening time with lovely people. No troubles encountered at any passport check, nor at at the check-in on the way home (apart from weird looks from the woman at the counter). The wallet was found by João at the Chinese restaurant on the 1st of May, at 11.00, the opening hour. Life is happy, once more.
All is good what ends up being good. And this adventure definitely ended up being good. The sleeping time wasted was gained back with some extra sleeping the following days, and for sure the duo João – Claudio proved to be strong and compact, a good friendship, bound to last for a long time being. I would like to thank João for showing me how good friends can be, Mike for helping out whenever he could, Eveliina for always having encouraging words whenever they’re needed and overall life for giving me adventures and opportunities which should be lived through to learn how to live better and always managing through whatever hard or complicated issues come up.
As for the two quotations, the first looks obvious, the second is a collection of swear words in all the languages related to the posting: Italian, Finnish, Portuguese, German and Chinese, in no relevant order.