Archive for September, 2009

Download Thingy, it slowly starts to make sense.

Tuesday, September 22nd, 2009

I have been working for the past days in the foundation for a new Download Manager that I’m writing for the Mac platform, and this is just an “status quo” about how things are evolving.

What is done so far.

  • A certainly modern multi-threaded Cocoa Framework implementation around libCurl‘s C API, which allows me to get my hands on the whole power of Curl, but without leaving the beauty of Objective-C and the Cocoa API’s at any moment.
  • A pretty basic prorotype kind of UI which allows simple segmented download of files for the time being.

    Download Thingy, the prototype UI

    Download Thingy, the prototype UI

  • A custom (and open, XML, standards based) file format baptized (you guessed) “.thingy” which takes care of storing partial download segments, some basic (for now) binary and redundancy checking, and of course, the ability to reconstruct itself into the original file.

    A standard .thingy container.

    A standard .thingy container.

  • Main Launch Services integartion is partially done too.
  • Some basic implementation of automatic mirror discovering.

What needs to be done.

  • I have to write the foundation for a proper queue management system.
  • Network Usage / Bandwidth Limiting logics are in the “to do” list too.
  • A proper User Interface.
  • A public alpha version with basic usability that people can start to use and report so i can accelerate the development based on actual user’s requests.
  • A Safari / WebKit plugin.

So far, this is looking pretty nice and i think it will become a pretty interesting utility for the Mac community.

Automatic build numbering increase with xCode

Sunday, September 20th, 2009

I had this problem some days ago where i wanted to automatically increase the build number of my Application in xCode, every time that i actually made a new build. xCode comes with a tool called agvtool which is supposed to fill this gap, but the main problem with this is that it needs the project to be actually closed, for some reason that i certainly ignore.

After some searches, i finished at this interesting post by Chris Hanson, but this was not exactly what i wanted to do, again, i wanted a simple approach to increase the build number with every build.

So this is what i did.

First I created a new configuration settings file in xCode, as shown below.

Creating a new Configuration Settings File in xCode

Creating a new Configuration Settings File in xCode

After this, i ended up with an empty configuration file, so i added the following inside it:

CURRENT_PROJECT_VERSION = 1

xCode uses this variable to store your application’s build number, so we are going to tell it to use this file in order to get the value for the CURRENT_PROJECT_VERSION variable.

Go to your target’s properties, be sure to select All configurations and All Settings, then base your target’s config in your newly created version.xcconfig file, and set the version variable to our new version variable as shown below:

Configuring the Target to use the new variable in the version.xcconfig file.

Configuring the Target to use the new variable in the version.xcconfig file.

After all this is done, all you have to do is create a new “Run Script” build phase, and place the following inside it:

NEW_VERSION=`cat "$SRCROOT/version.xcconfig" | awk '/CURRENT_PROJECT_VERSION/ { print $3 + 1 }'`
sed -i '' "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $NEW_VERSION/" "$SRCROOT/version.xcconfig"
CURRENT_PROJECT_VERSION=$NEW_VERSION
touch "$SRCROOT/version.xcconfig"

Obviously, if you changed the file or variable names, you will have to adapt the script as needed.
Now, every time you build the app, the build number is automatically increased by one, and included in your application’s plist file as shown below:

Build number being shown in the built app.

Build number being shown in the built app.

A whole thanks goes to the guys at #macdev on freenode Diabolik and KonaBlend who helped with the bash scripting!

Download Thingy, a free Download Manager for the Mac

Saturday, September 19th, 2009

Download ThingyIm working in a new piece of software called “Download Thingy” (at least for now).

It is basically a Download Manager for Mac OS X. The main reasons why I am doing this are simple: There seems to be not a single Download Manager for the Mac that complies with the following:

  • It is Free.
  • It doesn’t have a lot of features that i will NEVER use.
  • Comes with a simple UI putting the main focus on the Downloads and not on other stuff I don’t care.
  • Allows segmented / multi threaded downloads.
  • Allows limiting the download speed in a “per download” or “overall” basis.

For this project I’m using the amazing libCurl library as the download engine backend.

Anybody who is interested to participate in a private alpha testing of this (yet prototype) app feel free to comment on this post and i will get back to you when an alpha version is ready for testing.

Cheers, Diego.

HE-AAC Support in the QuickTime API, finally.

Sunday, September 13th, 2009

iTunes 9 info window, you can see the High-Efficiency profile for the audio stream.Looks like Apple finally added HE-AAC audio decoding capabilities to both QuickTime X and iTunes 9. I have been praying for this for a long long time, seems like it is finally a fact and it works flawlessly.

The digital certificate breakage

Saturday, September 5th, 2009

So um… some weeks ago I released a new version of MediaInfo Mac with several fixes on my own code, with also a newer build of the MediaInfo Lib by Jerome Martinez, and, finally, a newer version of Sparkle (the amazing framework that i use for the automated software updates).
To make a really long story very short, Sparkle changed an important behavior: Now each and every update that I release has to be signed with a digital certificate, which is nothing but good, because it gives an extra layer of security for the final users.
Bad news are that I totally missed that part in Sparkle’s release docs, so I released an update without the certificate, and from there on, users were stuck on that version without the possibility to update.
I still had the ability to show to the users a nice dialog informing them about my error and kindly asking to update manually, but even that, i still can see that a LOT of people is still using the broken version (0.7.7.58), which leads me to the following conclusion:
Most people will NOT upgrade their software unless the process is totally automatic and painless, not even users of MediaInfo which are usually over the “Average Joe”.

This can be seen on the usage statistics that i keep (which I did reset some hours ago btw, due to some preparations for the upcoming MediaInspector beta) where you can see that there are still a LOT of users stuck on 0.7.7.58.
So to sum things up:

  • If you are using Mac OS X 10.4 “Tiger”, the latest version that you can use is 0.7.17.3, get it here.
  • If you are on Mac OS X 10.5 “Leopard” or newer, just get the latest version here.

Cheers!.

Diego.