Posts Tagged iPhone

Lotus Symphony Viewer – a free OpenDocument viewer on iPad

I am using OpenOffice from 13+ years, before it was an open source suite and before it was acquired by Sun Microsystems (1999). At that time, StarOffice was the only cross platform productivity suite running on Windows, Linux and Solaris.

After Oracle abandoned the suite – and many other solutions in Sun Microsystems’ portfolio – the situation around Open Office is not easy to follow, let’s try to recap.

  • A group of original developers from Sun, sponsored by Canonical, Novell, RedHat amongst others, forked OpenOffice and created LibreOffice.
  • Oracle donated the original Open Office code base to the Apache Community, now published under an Apache v2 license
  • Several large software editors have created derivative based on the OpenOffice code base, one of them being IBM’s Lotus Symphony (freely available)

Now that OpenOffice code base is not controlled by Oracle anymore, IBM decided to contribute its enhancement to the Apache OpenOffice project.  This is important news for all OpenOffice users.  This means that all improvements and changes made by IBM for Lotus Symphony will be made available for all in OpenOffice.

We are all looking forward the first release combining Apache OpenOffice and Lotus Symphony.

In the mean time, IBM released an iOS viewer application.  It allows you to view Open Document Format (ODF) text documents, presentations, and spreadsheets downloaded to your phone or tablet without the need for any network connection.

IBM OpenDocument Viewer for iOS is freely available on the Apple App Store.




, , , , , , , ,

No Comments

Participate to your business processes from your iPad

BPM is a discipline that leverages software and services to provide total visibility into your organization. Discover, document, automate, and continuously improve business processes to increase efficiency and reduce costs.

If you are new to the field, have a look at the “BPM for Dummies” mini ebook.

IBM offers a comprehensive set of solutions to document, execute, monitor your business processes :

  • BlueWorks Live, an easy way to document and run processes in the cloud
  • IBM Business Monitor, unites information, process, and people to provide a 360-degree view of case information and achieve optimized outcomes
  • IBM Business Process Manager, a comprehensive BPM platform giving you visibility and insight to manage business processes.
  • IBM Operational Decision Management, provides the power to intelligently automate a wide range of decisions across business processes and applications (formerly iLog)

IBM recently released IBM BPM v8.0 with many new, redesigned or improved capabilities, one of them kept my attention.  There is an iOS application allowing users to collaborate on BPM, right from their mobile devices.

“The BPM app provides a single view that consolidates tasks from multiple IBM process sources. Built with ease of use and collaboration in mind, it allows users to interact with others to ensure that the right people are working on the right thing at the right time.”

The application is freely available on the Apple App Store (but requires a BPM backend)


, , ,

No Comments

Required Packages to install after a Jailbreak

Here is a short list of packages I am installing after a jailbreak.

  • OpenSSH
  • ToggleSSH (GUI to quickly toggle SSH on/off) – security tip : keep SSH off as long as you don’t need it
  • Core Utilities – core set of GNU utilities
  • adv-cmds – brings “ps”
  • network-cmds – arp, ifconfig, netstat, route, traceroute
  • SQLite 3.x & Libs
  • Vi iMproved – command line editing

Then connect to your phone using ssh (root/alpine) AND CHANGE THE ROOT PASSWORD !!

And because I care about security, I also apply the following :

  • Create

    to copy my public SSH key.  This allows key based authentication

  • Disable SSH’s password authentication in /etc/ssh/sshd_config
    PasswordAuthentication no
    PermitEmptyPasswords no
  • Restart sshd dameon
    iPhone:~ root# launchctl stop com.openssh.sshd
    iPhone:~ root# launchctl start com.openssh.sshd

Enjoy !


<UPDATE  date=”23 September 2012″>

iPhone 3GS and iPhone 4 owners can jailbreak iOS 6 in tethered mode (need a cable connection to boot the phone)


, , , ,

No Comments

Using Apple’s XCode for open application development

When developing iOS application for jailbroken devices, you have to take care of many dirty details of application deployments on iOS.  In particular, you have to take care of creating and registering your own development certificate, as detailed below.

This is where IOSOpenDev comes into the game, this packages a set of XCode plugins that automates most of this process.  More than that : it also provides templates (aka empty project) to build your own Widgets, command line applications, SBSettings etc …

IOSOpenDev is a must use if you are serious about jailbroken app development on iOS.

But just for the sake of archiving – or if you want to do it manually, here is the process to code sign an application without using Apple’s provided certificate.

1/ generate self signed certificate using the Certificate Assistant in KeyChain Access application

2/ tell Xcode to use that identity


3/ change XCode signature method (and restart XCode)

marsu:Contents sst$ sudo cp Developer/Platforms/iPhoneOS.platform/Info.plist Developer/Platforms/iPhoneOS.platform/Info.plist.orig
marsu:Contents sst$ sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' Developer/Platforms/iPhoneOS.platform/Info.plist
marsu:Contents sst$ ls Developer/Platforms/iPhoneOS.platform/Info.plist*
Developer/Platforms/iPhoneOS.platform/Info.plist      Developer/Platforms/iPhoneOS.platform/Info.plist.orig


4/ create, compile and deploy your application
scp -r root@ip_address:/Applications


5/ restart SpringBoard (Respring) or reboot


Enjoy !

, , , ,

No Comments

Beta Testing iPhone Applications

I am about to release another iPhone application allowing users to visually manage voice mail messages left on their enterprise messaging solution, based on Oracle Beehive Collaboration and Communication Suite

This application is similar to Apple’s Visual Voice Messaging application that is deployed for some carriers.

Testing an iPhone application before it is deployed through the App Store might be tricky and is reserved for users having a minimal technical knowledge.  This article describes the steps required to join a testing program and to collect logs and debugging information to be reported to the developer.

Before installing an application on your iPhone, it has to be digitally signed by the developer and by Apple (when distributed on the App Store).

For ad-hoc distribution, i.e., without going through the App Store, the application will be signed specifically for your device.  The developer needs to know your Device ID (UDID).

Step #1 – collect your UDID and send it to the developer

First step for beta testing an iPhone application is to collect your UDID and send it to the developer.

To do this, connect your device to your Mac/Windows and launch iTunes. In iTunes, select your device in the ‘Devices’ section and navigate to the Summary tab. Click on the Serial Number label to reveal the Identifier field and the 40 character UDID. Press Command+C (CTRL-C on Windows) to copy the UDID to your clipboard.  Then paste it (Command+V or CTRL-V) in a mail message.

Step #2 – Install application

Once the developer knows your UDID, he will generate an application’s release authorized to run on your device.  Most of the time, you will receive the application as a ZIP file through email or web site download.

  • Unzip the file you received
  • Drag’n drop the application in iTunes
  • Sync your device with iTunes to install the application

You should then see the application icon on your device.

Step #3 – Provide feedback and collect log files for crashes

We are interested to collect all kind of feedbacks and testing conditions

  • General application usage, ergonomy, performance etc … many of these are subjectives but all suggestions will be considered.  Sometimes suggestions will be integrated immediately, sometimes they will be planned for a future release.
  • Different devices – you’re mostly welcome to test on older iPhone, iPod Touch or even iPad.
  • Slow / poor network connection.  Real life network conditions are difficult to test on a development machine, only real life usage, on the street, in a cab, in an airport etc …

If the application crashes or if you think you’ve find a bug, please report it as precisely as possible, in particular, I would like to know

  • what version you are using ? (version number is provided in the mail with the application)
  • what device you are using ?
  • what are the precise steps to reproduce ?
  • is it always reproducible or not ?

The application generate a log file that contains a precise description of what happens within the application.  Here are the steps to collect and send me log files.

  1. Download Apple’s iPhone Configuration Utility (Mac and Windows)
  2. With your device connected, run the iPhone Configuration Utility
  3. Click your connected device
  4. Go to the Console tab (see screenshot below)
  5. Clear the log (button at the bottom to the left)
  6. Try to install and/or launch the application and reproduce the error
  7. Select the relevant log lines (or just everything)
  8. Click the Save Console As… button and save the file
  9. E-mail the file to me

That’s all for now.  Thank you for your valuable feedback !

, ,


QR Codes for your business cards

You’ve probably already encounter QR Codes, these signs you can scan with your mobile’s camera to get some extra information about a product, a song, a TV program etc …

While there are many QR generator application available on the Net, I recently found a Business Card generator.  It is able to generate either VCARD or MECARD format, as well as a contact PDF sheet ready to send to the printer. (MECARD is a special encoding of personal information, suitable for QR Code Encoding.  This was popularized in Japan by NTT Docomo)

And, … it’s free 🙂

I tried it with QR Reader on the iPhone and found it particularly well integrated.  In particular MECARD can directly be added or merged to your address book.

Have Fun !

, , , ,

No Comments

Modern version of a web site

Today, Apple published my third publicly released iPhone application.  I’ve been asked to develop it for a French school of cinema, sound, 3D animation and other arts and technology for video and sounds professionals.

The application allows to discover the different departments of the school, get access to the latest news, to the contact details and look at some video and animation created by students.

As of today content is general purpose and rather static, it is a modern version and mobile version of a web site.  It looks like everybody wants its own iPhone app these days:-)

Future version might include some student-specific content and features such as restricted access to course schedule & content and push notifications towards registered students.

Today’s content is 100% in French, English version might be proposed in the future.

You can discover the application on the App Store.

Enjoy !

, ,

No Comments

Can we Trust IP Geo-Localization Services ?

The next version of Maxi80 iPhone application will include a very simple user tracking capability : each time a user listens the web radio for more than n seconds, the application will ping one of my servers, allowing me to collect stats such as date and time, ip address, device model (iPhone, iPod Touch,…) and iOS version number.

Most of this information is also available to the web radio admin through the Shoutcast log files – but I don’t have access to these.

On the server side, I am calling an IP geo localization service to track countries from where people do listen to the radio.

At the time I am writing this post, the new version of the application was submitted to Apple for validation.  This means that only Apple and myself have a version at our disposal for testing, the application is not distributed to the public yet.

In other words, every ping request I am seeing on my server is either coming from me, either from Apple.  Despite this, I am seeing requests from many different countries : Belgium (these are mine), United States West Coast (this should be Apple), United States East Coast (maybe Apple has iPhone Apps validators working from there too).  But I also got requests from two weird locations : Pakistan (Islamabad) and Greece (Athens).

I tested these two IP addresses on many geo localization services and they all gave me the same result.

My conclusion : either Apple tests our iPhone applications from the three continents (America, Asia and Europe), either something is flawed with IP Geolocalization services.

Should you have a good knowledge of IP geo localization inner working – or – from Apple’s iPhone Apps validation process, do not hesitate to leave a comment 🙂

, , ,

No Comments

iPhone 3G Connection Tethering without Jailbreak

iPhone tethering consists of using your iPhone as a modem with your laptop or iPad to provide wireless connectivity through your 3G data connection.

Tethering is authorized by Apple as long as your carrier does authorize it as well.  And, most of the times, the providers do charge a special rate for tethered data traffic.

If you have a subscription to an unsupported carrier, you’re locked.  Other mobile phone systems have more open options.

To work around this limitation imposed by Apple and the carriers, the most common solution is to Jailbreak the iPhone, allowing to install non Apple approved applications through Cydia.

I don’t like to jailbreak my phone.  It is a cat and mouse game, each time Apple does release a new version, the jailbreak is broken and we have to wait for a new jailbreak solution.

Although it does exist some tethering without jailbreak solutions, I never found one as clever and obvious as iProxy.

First a disclaimer : iProxy does require Apple developer tools and a developer profile (or to know someone that has one).  It is not a solution for every user and certainly not for my grand’ma !

The ideas behind iProxy are so simple, I am jealous.  I wish I had these ideas myself.

First, the application is distributed as source code only.  It is an XCode project that you must compile and install on your phone.  Installing the binary on your (not jailbroked) phone requires to subscribe to Apple’s developer program.

This allows to circumvent Apple’s review process required to publish application on the App Store.

Secondly, iProxy is not a tethering solution, it is “just” a generic SOCKS v5 proxy, allowing to relay traffic between SOCKS clients (your laptop or iPad) and the Internet.

iProxy developers did not write the SOCK code themselves, they smartly reuse the code of SRelay, an open source, UNIX-based, generic SOCKS proxy (iOS is a UNIX OS, remember !)

They even include a small embedded and open-source HTTP server, to be able to provide proxy auto configuration files (PAC files) over HTTP.

Once compiled and installed on your iPhone :

  • On your laptop, create a private wifi network
  • assign a static IP address on your laptop
  • define a SOCKS proxy with the iPhone’s IP Address (see below) and the port 8888
  • On your iPhone, join the wifi network
  • Assign a static IP address in the same range as the laptop
  • start iProxy application

Should you try this with an iPad, you will realize there is no possibility to define a SOCKS proxy on the iPad.  This is where the Proxy Auto Configuration file (PAC file) and embedded HTTP server comes at hand.  In your iPad Network Settings, define the following line as “Auto Proxy Configuration”

http://<your iphone IP address>:8080

Mobile Safari will read this file.  It contains a simple JavaScript function that defines the SOCKS proxy with iPhone’s IP address and port number.

This is it.  This solution is not too complicate to setup and use (for technical users), it makes a very clever use of open source and it is pretty efficient !

, , , ,


Will I Switch from iPhone to Android ?

As promised, here is a feedback after my 20 days exclusively using an Google Nexus One Android phone, and Android 2.2 (Froyo release)

First, some disclaimers :

I am an iPhone user, fan and application developer.  I am using iPhones since day #1, I first owned an iPhone 1G, then an iPhone 3G.

I do not intent to write a complete Android review (techradar, or gizmodo have done that already).

I am a new Android user, I had no previous experience of Android before 2.2, so I will not write about the speed boost or the best new features, just because I do not (want to) know what is new and what is not.

I rather would like to concentrate on the differences with my iPhone 3G, running iOS 4.0.

I will not comment about the hardware pieces, such as the Camera, the batteries etc …  I’ve done that already.

A Google Centric World

The first big difference after power on, when I started to configure my most important applications, such as email, calendar and address book : I had to think Google.  Obviously, Android is Google-centric and all its data are coming from Googles services such as email, calendar and contact.

Over the air synchronisation is great.  Whatever changes in your contacts or calendar is immediately shared amongst the web and your phone. iPhones offers this as well but for an extra fee : a MobileMe subscription.

Should you be a Mac user, MobileMe synchronization comes automatically, while I needed tools on the Mac to synchronize my data with Google servers (SyncMate or TheMissingSync for example).

No big difference for me. A small advantage for the iPhone because no additional software installation is required (Yes – I do consider iTunes as already installed)

User Experience

Overall, I found the Android general user experience less intuitive, here are a couple of examples :

There are 4 buttons on the bottom of phone : Back, Menu, Home, Search + in addition to the scroll wheel.  This is 3 too much.  I like the simplicity of the the one button iPhone.  As a user you always have to think about which button to click on : do I have other options available through the “Menu” button ?  Where the “back” button will bring me back (it is always a surprise move for me).  The only button I feel comfortable with is the “Home” button, similar to what I am use to on the iPhone.

“Settings” application contains many options, it is not always clear where to find what option.

Third-party application suffers from lack of coherence and lack of “user interface guide lines” for application developers.  Some of them are great (Twitter for example), some are not (no name – sorry), making the whole user experience a little bit like a box of chocolate : you never know what you gonna get.

There is less space between keyboard keys, leading to more typing mistakes, at least with my fat fingers.  But I understand this is really subjective.

About the typing experience, Android displays a set of suggested words from the dictionary while typing.  I first love this function as it allows users to pick a word before completely typing it.  Then I realize this interrupts the typing flow and divert your mind away from the sentence you’re typing.  After a couple of days I surprised myself trying to ignore these suggestions and keep my mind focusing at the task, i.e. typing.

On the other side, I really like the notifications in the task bar, it allows to have a quick view on recent events such as unread mail count, unread tweets or new Facebook notifications.  This is non intrusive and always available.  I miss an equivalent on the iPhone.

More advanced usages

Because Google does not try to control its platform at all cost, Android has some advanced features not available on every iPhone (although some of these are now available with the recent update to iOS 4)

The multi-taksing comes first on my list, your applications stay active in background, and continue to play music, poll network services etc … iOS 4.0 just introduces this possibility too if you own at least a 3Gs.  Platforms are equivalent now in this respect.

However, Android allows a much more fine grained application control with possibilities like “Force Stop”, “Clear Cache” and check various system statistics, such as memory used etc …  While this is great control for a Geek like me, I doubt this is something my grand mother can understand and will use.

3G tethering to WiFi is close to multi-tasking in my favorite advanced feature list.  It allows to turn your phone into a portable hot spot, delivering wifi connection to clients, through the 3G subscription.  This is the reason why I will keep the Android phone in my bag when traveling : to let my iPad / MacBook connect to the 3G network through the phone.

iPhone’s iOS 4 offers tethering through USB or bluetooth only.


The camera is not part of my day-to-day phone experience (I prefer to carry along my heavy Canon DSLR to take pictures), although the common advise : the best camera is the one you have always with you.

The Camera control application allows to zoom, control the white balance and the flash.  It also allows to record movies.

As said in the introduction, I do not own an iPhone 3Gs, so these are new welcome additions for me.

Android Application Distribution, aka the Android Market

The Android market is the equivalent of Apple’s App Store.  This is the place where you can find (and sometimes buy) applications for your phone.

As an end user, the thing I dislike about Android Market is that it is only available on the phone.  Using a small screen is not the best browsing / buying experience ever.  I’de love to have a web based Android Market where I can select and find the applications I want, then, an over the air provisioning to the phone.

As a developer, on the other side, I do love Android Market because it makes your application available to end users immediately.  There is no review or approval process.  While this is great to be able to quickly push updates to your users or customers, it also leads to the very variable user experience I described above.

Misc. good and bad surprises

One very bad surprises I had during these two weeks of Android utilization is the way it sometimes merged my contact information.  Two contacts in my address book, with similar first or last names are merged together, bringing all the phone numbers and email address into the same contact.

I first thought about an issue in the synchronization software I was using, but after some researches on Google, I found that the is the normal behavior of Android’s Contact application and this is indeed made on purpose ! (although a bug has been filled for inappropriate merging attempts)

This leads me to the good surprise.  The Android community is extremely active and vocal (probably never encumbered with NDAs neither), making problem solving and troubleshooting extremely easy, both for end users and for developers.


So, what are my conclusions after 20 days with an Android phone in my pocket and one application developed ?

Android is a powerful system, robust, fully featured and an extremely pleasant platform to develop for.

To me, it looks like a phone made by engineers.  It lacks end user interface polish and user interface coherence for third party applications, it lacks simplification.  I’d love a system with less functions, buttons and easier to use.

When it comes to software design – I like to remind Saint Exupery‘s thought : “Perfection is not when there’s no more to add, but when there’s no more to remove”

Power users will love Android.  I am back to my iPhone.


@fmallefait pointed me to this article fromAppleInsider : “iPhone 4 and iOS vs. Android: desktop and cloud services” which perfectly complements this post.

, ,