iPod Touch Screen Definitely Scratchable

I know this because I scratched mine! Albeit it’s just a hairline thin but it’s still a scratch. I have a habit of putting the iPod in my shirt pocket and other stuffs in my pant pocket but yesterday I put a friggin’ pen in my shirt pocket. Damn.

 If you like this post, please buy me a coffee.

Sync iPhone Or iPod Touch Contacts With Nokia Using SyncML

Just got myself an iPod Touch 2G. I really like it though I don’t listen to music very much. iPod Touch comes with Contacts app but I didn’t use it because obviously iPod Touch can’t make a phone call (without VOIP app that is), unlike iPhone. So I thought it might be useful as a backup for my Nokia N95 8GB. After much of researching (technically it’s not really a research but a simple Google search but who cares, right?) I finally managed to sync contacts from Nokia to iPod and vice versa.

Okay, here are the things you’ll need:
1. Synthesis SyncML Client for iPhone/iPod Touch. Available for free in App Store.
2. iPod Touch/iPhone. Obviously.
3. Any phone that supported SyncML. I use Nokia N95 8GB for this matter.
4. An online SyncML account. I use Mobical.net.

Now, let’s get started:
1. Register an account with Mobical.net and configure your phone by following the instruction provided. For example my device’s configuration is like this:

Open the synchronization settings by navigating through the following menus:
Tools -> Sync
Select “Options” -> “New sync profile”
Select “No” to the copy value question
Sync profile name: Mobical.net
Select “Applications”
Select “Contacts”
Include in sync: yes
Remote database: con
Select “Back”
Select “Calendar”
Include in sync: yes
Remote database: caltask
Select “Back”
Select “Notes”
Include in sync: yes
Remote database: pnote
Select “Back”
Lifeblog: Not supported
Select “Text message”
Include in sync: yes
Remote database: sms
Select “Back”
Bookmarks: Nokia bookmark sync not supported by this service yet
Select “Back”
Select “Connection settings”
Server version: 1.2
Server ID: leave empty
Data bearer Internet
Access point Your default Internet connection
Host address: http://www.mobical.net/sync/server
Port: 80
Username: {yourusername}
Password: {yourpassword}
Allow sync requests: Yes
Accept all sync requests: No
Network authentication: No

NOTE: Before you start sync, make sure that the are no duplicate field name in a contact. For instance, if your contact keep several mobile numbers, make sure you label them as mobile for the first one, mobile (home) for the second one and mobile (work) for the last number. Some phone can’t display several info under one label. If this happens to you, log in to Mobical.net and edit from there, after that, start sync and all the infos will be back in your phone.

2. Once your device is configured, sync it to Mobical.net. The sync menu is found under Organiser, Tools, Communications, Settings, Connectivity or something similar.
3. Now, install Synthesis SyncML Client to iPhone/iPod Touch if you’re not done so yet.
4. When the client is installed, tap the icon labeled SyncML to run the client then tap Settings. Put the configuration below in the Server Settings.

Server
URL: http://www.mobical.net/sync/server
SyncML Version: SyncML DS 1.2/OMA DS 1.2
Ignore SSL errors: Off
Use Proxy: Off

Server Login
User: {yourusername}
Password: {yourpassword}

5. Back to Settings, tap Done. Tap Start Synchronisation and wait for it to finish populating iPod/iPhone’s Contacts database.

That’s it! Any changes made from iPod/iPhone will be available in your phone when you sync and vice versa. To automate the sync from your phone, install Swim if your phone is running on Symbian S60. You can read about Swim at Symbian-Guru.

 If you like this post, please buy me a coffee.

Open Source Collaborative Mapping

Screenshot of MaSmap showing small area of Kuantan

Screenshot of MaSmap showing small area of Kuantan

Have you heard about MaSmap.org?  Well, as the title said it is an open source collaborative mapping. Unlike OpenStreetMap which use wiki-like interface (as one of their mapping methods) and aim to map the world, MaSmap instead aim to map Malaysia & Singapore, solely relying on subversion to keep the map sources in order.

People can submit their tracks (or POIs) to the mappers but that beats the purpose of having MaSmap.org, which is to empower everyone to map their own tracks. One must have a proper training though in order to be a mapper, but that is only to ensure the map quality and reliability.

About MaSmap

MaSmap is dedicated to being a technology enabler for geospatial advancement in Malaysia and Singapore as much as Apache is to web serving and OpenOffice is to office productivity suites.

You can make use of the maps available here for any purpose you want. The philosophy for making opensource maps is to provide the opportunity for the community to shape his own society, relevant to his domain. If other domains can add value to these maps and is able to utilize geospatial intelligence to move forward with their cause be it for political, social, urban planning, logistics or health, then we have achieved our goal.

MaSmap is maintained and developed as the topic of a research project investigating the formative evaluation of GIS in healthcare. MaSmap has no commercial funding and does not accept advertising.

The map sources is publicly available in Polish format (.mp) for you to grab at MaSmap.org subversion repository. You’ll need an svn client for that. Compiled version is compatible with a Garmin device.

 If you like this post, please buy me a coffee.

Expensr: Free Online Personal Finance Application

Recently, I was looking for a finance manager. Managing multiple saving accounts, a unit trust account & a credit card account at a same time is a headache. I tried to manage my finance a long time ago but I really hate it because I can’t do it while I was away from home. Wifi didn’t exists at that time & GRPS costs a bomb.

While I was browsing Lifehacker, I found this article about Expensr and so I though why don’t I give it a spin. I tried Mint.com before but none of my banks provide service for Mint to automatically download statement. So that’s why Expensr suits me best. Other than that, it allows me to keep my records anonymously and I don’t have to provide any account number. The interface is snappy and is nicely done and I like the fact that I can accessed it wherever I am and my connection to them is encrypted. Did I mention that it’s also free?

I know that there’s other alternative out there but right now I’m really satisfied with Expensr.

 If you like this post, please buy me a coffee.

Windows 7 Usability

While testing Notepad I noticed this:

Notepad Save Prompt

Apparently, the new dialog also affect Paint & WordPad.

Why is it a good thing? Well as Dmitri from usabilitypost.com explains,

you know what the dialog box is about just by reading the button labels — you don’t even need to read the message above to decide what to do. This not only saves time, but makes each choice clearer — the buttons tell you exactly what’s going to happen.

Read Usability Tip: Use Verbs as Labels on Buttons.

 If you like this post, please buy me a coffee.

Windows 7

I really like the new Windows. Install took 15 – 25 minutes and boot took 30 seconds. Everything works right out of the box except my Prolink WG2000/R USB Wifi adapter. But that’s an easy fix, there’s a Vista driver for that device on their official website. Just download & install.

There’s one tiny problem though, I can’t dual boot with Windows XP but my files are still accessible.

Problem aside, I managed to install Google Chrome, AVG8 Free & No-IP DUC. All works flawlessly. Maybe tomorrow I will install FF3 & some games. ;)

UPDATE 13/01/2008
Managed to add WinXP to Windows 7 Bootloader using EasyBCD.

 If you like this post, please buy me a coffee.

CakePHP ACL and Ajax

I’m building a web based application using ExtJS as the frontend and CakePHP as the backend. CakePHP built-in ACL returns 200 OK status even when the access was denied. The application uses Ajax a lot so I need CakePHP to returns appropriate response status so that I can inform the user if the requested access was denied. To configure ACL properly, you can follow the posts from Mark Story here and here for the part 2.

After that, just add the following code in app_controller.php

function beforeRender() {
        if ($this->RequestHandler->isAjax()) {
                if ($this->Session->check('Message.auth')) {
                        $this->Session->del('Message.auth');
                        header('HTTP/1.1 403 Forbidden');
                }
        }
}

Now, instead of receiving 200 OK status I get 403 Forbidden when access is denied. Hope this helps!

 If you like this post, please buy me a coffee.

A Day At The Office

One of my past project was to develop a double-entry system which compare the same record entered by two different staff. Recently, the client complained about the system being painfully slow. My colleagues blame the helper function that do the comparison. I removed the view so the is no comparison running (the controller is basically tell the model to find all record and pass the results back to view). Even so, the system is still slow. Somehow I was convinced that this is the database-level problem not my software.

Armed with phpmyadmin, I ran a simple find operation that retrieve the first two records in the main table (there are 30k of rows in there). It took a quite long time (seems live forever to me) for mysql to get the results. I wasn’t sure what the problem was, but I was glad that my software wasn’t the culprit.

To cut the long story short, after few hours of investigation, I simply changed the storage engine from InnoDB to MyISAM as the last resort and it works like a charm! Complex database query is 4 times quicker and the system now runs significantly faster and my client live happily ever after..

The end

 If you like this post, please buy me a coffee.

Fun Javascript Games: Part 2

Redline

Vertigo-projects have a new and amazing racing game powered byjQuery and using the GameQuery plugin. The game itself is about one thousand lines of code, but you will need some practice to not shift too early or to avoid crashing. It’s interesting to see the level of applications that we can build today using modern javascript libraries such as jQuery. The design is pretty attractive to run a level or two, have a look and enjoy the race http://www.vertigo-project.com/projects/redline-game.

[Ajax Magazine]

 

Digg Attack

Fun news for a Friday. From Jacob Seidelin–the dude behind JavaScript Super Mario Brothers–comes Digg Attack, an original JavaScript game using &ltg;canvas> for visuals (and Flash for music). As an added twist, the game uses Digg to provide a sort of unique twist; enemies in the game are based on stories in the Digg API feed and their ratings.

[Ajaxian]

 

Pacman

I got to play an old school, sit down, Pacman at Google Developer Day, London, so it only seems appropriate to keep playing it thanks to Harry Guillermo and his new Pacman port to JavaScript.

[Ajaxian]

 

Pacman (YUI-based)

Kris Cieslak is back, after a long break, with a new YUI-based game: Pacman. We last heard from Kris about 18 months ago, when he was showing off YetrisPuzzle andSolitaire. Now Kris returns with another classic game built entirely in JavaScript, bolstered by YUI 2.5.2’s core (Yahoo, Dom and Event). Check it out and give Kris feedback on his blog.

[YUI Blog]

 

Invaders From Mars

As a follow-up to our recent posting of a JavaScript Pac-Man clone, we bring you a JavaScript Space Invaders clone: Invaders from Mars. Only this time, in addition to a link to the game itself, we’ve got a link to the author’s blog (one Mark Wilcox) in which he goes into detail on the various design issues he faced whilst creating his game and discusses the lower-level framework he created to drive his game.

Invaders from Mars does it old-school, as did the Pac-Man clone: divs and images, baby. Performance is pretty good, but I can’t wait to see people realize that if they go with <canvas>, they can really do some interesting stuff. What do you think on the Canvas vs. DOM rendering model for games, etc.?

[Ajaxian]

 

Bomberman

Munteanu Gabriel has created today’s Friday JavaScript game. It is an old favourite…. Bomberman. Munteanu has released the code as an open source project, and you can get going to bomb away now.

[Ajaxian]

 

Super Mario Kart

Seems I just can’t let go of Mario. This is a prototype of a Javascript Mario Kart-like racing game.

It uses the canvas element to do most of the rendering and should work in both FF2, FF3, Opera(9.27 and 9.5) and Safari 3.1+. There are a few glitches in Safari (at least in 3.1.1) in the kart sprites, but other than that it should be playable. I haven’t even considered getting IE support, sorry. There’s just no way.

The (minified) code weighs in at about 11 Kb, but unlike the Mario game from last month, this one uses several external image files. This was more a test of how smooth I could get a game like this to feel, anyway, so filesize wasn’t an issue. I think it runs pretty ok, though. 

[Nihilog Blog]

 If you like this post, please buy me a coffee.

A Trip To Historical Malacca

St. Paul's Hill

A'Famosa Fort

(Front) St. Francis Secondary School, (Far Behind) Malacca Sultanate Palace

Proclamation of Independence Memorial

 If you like this post, please buy me a coffee.

Older Entries »