New ApeBroker Experience

Fabulous news! There’s now a SANDBOX in apebroker! If you don’t know what apebroker is, check it out! It’s an online game, in desperate need of more players.

You will like it if you:

  • enjoy thinking
  • like to compete
  • dig classic board-games
  • dislike action games
  • can’t stand flash animations
  • prefer 2D over 3D
  • have business tycoon aspirations

or if you have friends like the above 🙂

The game is over at http://www.apebroker.com/ and you can either create an account, or log in with facebook.

Stack Overflow is amazingly useful

I’ve said it before, and I’ll say it again. I love StackOverflow. Whenever I wonder how to solve a web design or programming issue, I look there first. Most often someone else have had the same question before, so it is not often I need to write an original question of my own, which is kind of a pity, since it is very rewarding to get your question read by the highly experienced people at stackoverflow.com.

This time, working on further improving my game at apebroker.com, I was wondering how to adjust the font size of an element (with dynamic text content) so that it would be as large as possible to neatly fill a space of a certain width. One thing led to another, and I eventually came across a great post, Calculated CSS element style on the blog of Piotr Sałaciak. That’s one thing I like so much about the stack exchange, the collection of knowledge, and links to places with more information.

Titanium Developer – more headaches

Just how much time does Appcelerator spend in bed with Apple?

I understand that iPhone is a nice target platform for selling apps, but Appcelerator markets Titanium much the same way that Sun Microsystems (R.I.P.) marketed Java: Write Once, Run Everywhere.

However, the developers at Appcelerator (who make Titanium) have lots to learn about portability. (How’s that for irony!) Probably everybody in software development has lots to learn from could learn from The Art of Unix Programming and general Unix Philosophy.

To make it work, even in a new Ubuntu, you have to (after installing) actually (re)move the following files from ~/.titanium/runtime/linux/1.0.0/:

libgio-2.0.la           libglib-2.0.la           libgobject-2.0.la
libgio-2.0.so           libglib-2.0.so           libgobject-2.0.so
libgio-2.0.so.0         libglib-2.0.so.0         libgobject-2.0.so.0
libgio-2.0.so.0.2200.4  libglib-2.0.so.0.2200.4  libgobject-2.0.so.0.2200.4

After that, at least it starts (albeit with LOADS of messages and warnings on the console).

The cryptic error message that “indicates” the error with the conflicting libraries, removed above, was:

symbol lookup error: /usr/lib/libgdk-x11-2.0.so.0: undefined symbol: g_malloc_n

So, if you get the error with titanium and libgdk-x11-2.0.so.0 and g_malloc_n, the solution is to move away the libraries from the runtime directory in your installation folder.

Sigh. Linux is simply better than Windows… (?)

I gave up developing for android with titanium on a windows7 virtual machine in virtualbox on CentOS5.

Decided to go with a native linux development environment. (of course!). How could I have been so stupid to even consider Windows in the first place? I have no idea. Temporary confusion, perhaps. Anyhow…

As much as I hate binary distributions and Debian’s geeky I-know-whats-best-for-you-but-I-pretend-I-give-you-total-control-and-freedom philosophy which often makes more harm than good; I still do my Android development on a Binary Linux Distribution: Ubuntu 11.04 Natty Narwahl.

Why?

Well, when using third-party linux binaries in a binary distribution, you are pretty much dancing by their command. If they ship a binary that was linked against a very new glibc and libstdc++, which they often are, and were in the case of Titanium Developer (is a piece of junk, I hate it more and more each day), you have to have a binary distribution that matches that version. In case of Titanium Developer, CentOS5.6 is too old. You have to use a recent Fedora or Ubuntu to get the libraries you need. CentOS and all other RPM-based binary distributions will simply break (of course) if you try to force in a libc from another distro, or even build your own, as no utilities are linked against it.

I’m still “new” to ubuntu. Still preferring Gentoo, but I’m at work, and I can’t have too much downtime on my workstation, so I left CentOS for Ubuntu, simply because I need something that just works. (I have Windows on my Laptop, for Outlook and Excel).

Sigh. I miss Gentoo, but Ubuntu will do, I’m sure.

Easy Android Development with Titanium Developer!

Everybody does it… Do you? If not, read on, to see what is needed to create your first HelloWorld Android app! We will use Titanium, which lets you use web technology to build apps for both Android and IOS.

Step 1: set up a development machine.

I like to separate stuff, and I had LOADS of trouble trying on my 64bit Windows 7 (x64), so I chose to install a 32bit (x86) version in VirtualBox (on my CentOS Linux workstation).

On my first attempt, I gave it only 9 GB of disk, which was way too little, so I started over with a 19.5 GB disk (preallocated). Configured the VM with 600MB RAM and no Audio device. I installed Windows 7 Ultimate N (From MSDN), turned off all desktop effects (optimize for performance), installed Google Chrome as the default web browser, unpinned IE from the task bar, pinned Chrome there instead, chose a desktop wallpaper (unneeded, but I couldn’t resist the image of the happy plastic figures holding their knees!), and applied the windows updates, except SP1, because that led me to an irrepairable “fatal error c0000034 applying update operation” error. (Yes, I tried DISM /image:D:\ /cleanup-image /revertpendingactions, even twice).

Step 2: set up the development environment

The development tool we will use is Appcelerator Titanium, and we will develop for Android, so we need the Java SE JDK and Android SDK first.

Java and Android SDK

Since the development machine is a windows host, we choose the Android SDK windows installer, and install it in the default location. It is friendly enough, checking for Java JDK and providing a link to the download page if it is not found. My machine is a fresh install of Windows 7, so we have no Java yet. I installed it through the Windows x86 JDK link after clicking the word “JDK” under the leftmost Java Icon and then accepting the license agreement on the next page. Install Java in the default location.

If you still have the Android SDK installer “hanging” after it didn’t find Java, click the “<Back” button, and then “Next>”, to begin the installation of the Android SDK. The default values are fine.

Add “C:\Program Files\Java\jdk1.6.0_25\bin” to the end of your PATH variable.

SDK Manager

Let the SDK installer start the SDK Manager, let it search for available packages. Being lazy, I let it download everything, by simply choosing “Accept All” and clicking “Install”. This will take a while. Quite a long while if you are on a slow link. Grab a coffee, Energy Drink, Tea, Beer, Milk, whatever and take a break while it downloads and installs what you’ve chosen.

Install Titanium Developer

Download and run the windows installer of Titanium Developer. Its target audience seems to be IOS developers, as there are (still) some annoying bugs in the version I use. For instance, it’s using a (nowadays) incorrect way of finding and checking the Android SDK.

Workaround

To get around the bug in Titanium, copy “adb.exe” and “AdbWinApi.dll” from the “platform-tools” directory to the “tools” directory, under (my example) C:\Program Files\Android\android-sdk\.

Step 3: Set up Titanium

Register a new account, click the green button “New Project” (+) on the top of the window, Click “Desktop” near “Project type:”, and change it to “Mobile”. Click the button with the red X at the bottom where it’s written “Android SDK found” (unless you have a green checkbox there), and help it find the SDK for Android if necessary. (Path in bold in previous paragraph).

Pick a name for your first app, chose an appropriate App Id, pick an empty directory for this app, if you have an URL, enter it, and click “Create Project”. This will create a directory tree starting with your app name, and under it, the directory “Resources“, the file “tiapp.xml” and a bunch of other files.

The Resources directory is the home of “app.js”, your first Android application, written in JavaScript!

Click the “Test & Package” button on the top right on the work space in Titanium. A view with three tabs: “Run Emulator”, “Run on Device” and “Distribute” should be visible. “Run Emulator” should be selected. Below it should be a tab named “Android”, and beneath that, a black log window. If not: delete your new project, import the KitchenSink demo app, and recreate your project. At the bottom you have selections for SDK version, Screen, and a filter for what kind of output to view, as well as a Launch button and a Stop button.

Press “Launch” and wait.

I’ll be back with a coding example. But I think this has been plenty for now!

By the way, if it in the message box (top right corner) says there’s an update for Titanium Mobile available, click the download link…