Archive

Archive for the ‘Software’ Category

Google Nexus update Froyo officially available!

June 30th, 2010 1 comment

Quick note that the official release of Froyo (Android 2.2) is finally trickling down to Google Nexus One users. You’ll get it by the end of the week if not already. You can also download the officially signed release and update via your SD card alternatively.

UPDATE (01/07): The link above is for updating from the Google-IO Froyo release to the final.

The full OTA release is here:
http://android.clients.google.com/packages/passion/signed-passion-ota-42745.dc39ca1f.zip

The update from Froyo Google-IO to Froyo-OTA:
http://android.clients.google.com/packages/passion/signed-passion-FRF83-from-FRF50.38d66b26.zip

  1. Rename the signed ZIP file to “update.zip” and upload it to your SD Card.
  2. Power off your Nexus device.
  3. Turn it on with the “Volume Down” button pressed.
  4. When the boot loader appears, select “Recovery” using the Volume Up/Down keys to navigate and the Power button to select.
  5. Once the Nexus has rebooted, the screen will display an exclamation mark with Android. Press and hold down Power and Volume Up, it’ll take a bit of time to register.
  6. Navigate to “Apply SDCard:update.zip” and wait for the verification to complete and flash your phone.
  7. After a bit of time the phone will reboot and launch your cultured Froyo release.
  8. Verify by going to Settings > About Phone. The build number should be FRF83.
  9. Bon Appetit!

As mentioned in my previous post from a couple of months back, this release packs a bit of punch! Yum!

  • Share/Bookmark

Trailer: Java 4ever

June 26th, 2010 No comments

In genius trailer! The .NET vs Java train left the station so long ago for me. .NET’s great for somethings, for everything else, there’s Java. Probably one of the best nerdy videos for the year!

UPDATED: First video was removed :(

  • Share/Bookmark

Oracle releases VirtualBox 3.2

May 20th, 2010 1 comment

With the Sun now set, Oracle has released VirtualBox 3.2 finally :-) In particular some lovely optimisations for the newer Intel Core i5/i7 processors, Large  Page support (which helps significantly on Windows x64 and Linux) as well as a very welcome optimisation on the networking in VirtualBox as well as multi-monitor support for Windows Guests. Whats more RDP sessions are now accelerated (VRDP).

Amongst the changes from the changelog:

This version is a major update. The following major new features were added:

  • Following the acquisition of Sun Microsystems by Oracle Corporation, the product is now called Oracle VM VirtualBox and all references were changed without impacting compatibility
  • Experimental support for Mac OS X guests (see the manual for more information)
  • Memory ballooning to dynamically in- or decrease the amount of RAM used by a VM (64-bit hosts only) (see the manual for more information)
  • Page Fusion automatically de-duplicates RAM when running similar VMs thereby increasing capacity. Currently supported for Windows guests on 64-bit hosts (see the manual for more information)
  • CPU hot-plugging for Linux (hot-add and hot-remove) and certain Windows guests (hot-add only) (see the manual for more information)
  • New Hypervisor features: with both VT-x/AMD-V on 64-bit hosts, using large pages can improve performance (see the manual for more information); also, on VT-x, unrestricted guest execution is now supported (if nested paging is enabled with VT-x, real mode and protected mode without paging code runs faster, which mainly speeds up guest OS booting)
  • Support for deleting snapshots while the VM is running
  • Support for multi-monitor guest setups in the GUI for Windows guests (see the manual for more information)
  • USB tablet/keyboard emulation for improved user experience if no Guest Additions are available (see the manual for more information).
  • LsiLogic SAS controller emulation (see the manual for more information)
  • RDP video acceleration (see the manual for more information)
  • NAT engine configuration via API and VBoxManage
  • Use of host I/O cache is now configurable (see the manual for more information)
  • Guest Additions: added support for executing guest applications from the host system (replaces the automatic system presimparation feature; see the manual for more information)

Download from VirtualBox or get the Windows build. I’m really hoping the good Oracle keeps VirtualBox open, this is one kickass bit of kit.

  • Share/Bookmark

VirtualBox 3.2.0 Beta 1 Released!

May 3rd, 2010 No comments

Finally downloaded the latest 3.2.0 release of VirtualBox today and gave it ago!

From the forum post for this pre-release.

VirtualBox Version 3.2.0 is a major update. The following major new features were added:

  • Following the acquisition of Sun Microsystems by Oracle Corporation, the product is now called Oracle VM VirtualBox and all references were changed without impacting compatibility.
  • Experimental support for Mac OS X guests
  • Memory ballooning to dynamically in- or decrease the amount of RAM used by a VM (64-bit hosts only) (see the manual for more information)
  • CPU hot-plugging for Linux (hot-add and hot-remove) and certain Windows guests (hot-add only) (see the manual for more information)
  • New Hypervisor features: with both VT-x/AMD-V on 64-bit hosts, using large pages can improve performance (see the manual for more information); also, on VT-x, unrestricted guest execution is now supported (if nested paging is enabled with VT-x, real mode and protected mode without paging code runs faster, which mainly speeds up guest OS booting)
  • Support for deleting snapshots while the VM is running
  • Support for multi-monitor guest setups in the GUI (see the manual for more information)
  • USB tablet/keyboard emulation for improved user experience if no Guest Additions are available
  • LsiLogic SAS controller emulation
  • RDP video acceleration
  • NAT engine configuration via API and VBoxManage
  • Guest Additions: added support for executing guest applications from the host system
  • OVF: enhanced OVF support with custom namespace to preserve settings that are not part of the base OVF standard

In addition, the following items were fixed and/or added:

  • VMM: fixed crash with the OpenSUSE 11.3 milestone kernel during early boot (software virtualization only)
  • VMM: fixed OS/2 guest crash with nested paging enabled
  • VMM: fixed Windows 2000 guest crash when configured with a large amount of RAM (bug 5800)
  • VMM: fixed massive display performance loss (AMD-V with nested paging only)
  • Linux/Solaris guests: PAM module for automatic logons added
  • GUI: guess the OS type from the OS name when creating a new VM
  • GUI: added VM setting for passing the time in UTC instead of passing the local host time to the guest (bug 1310)
  • GUI: fixed seamless mode on secondary monitors (bugs 1322 and 1669)
  • GUI: added –seamless and –fullscreen command line switches (bug 4220)
  • Settings: be more robust when saving the XML settings files
  • Mac OS X: rewrite of the CoreAudio driver and added support for audio input (bug 5869)
  • Mac OS X: external VRDP authentication module support (bug 3106)
  • Mac OS X: Moved the realtime dock preview settings to the VM settings (no global option anymore). Use the dock menu to configure it.
  • Mac OS X: added the VM menu to the dock menu
  • 3D support: fixed corrupted surface rendering (bug 5695)
  • 3D support: fixed VM crashes when using ARB_IMAGING (bug 6014)
  • 3D support: fixed assertion when guest applications uses several windows with single OpenGL context (bug 4598)
  • 3D support: added GL_ARB_pixel_buffer_object support
  • 3D support: added OpenGL 2.1 support
  • 3D support: fixed Final frame of Compiz animation not updated to the screen (Mac OS X only) (bug 4653)
  • Added support for virtual high precision event timer (HPET)
  • LsiLogic: Fixed detection of hard disks attached to port 0 when using the drivers from LSI
  • NAT: fixed ICMP latency (non-Windows hosts only; bug 6427)
  • Keyboard/Mouse emulation: fixed handling of simultaneous mouse/keyboard events under certain circumstances (bug 5375)
  • Shared folders: fixed issue with copying read-only files (Linux guests only; bug 4890)
  • OVF: fixed mapping between two IDE channels in OVF and the one IDE controller in VirtualBox

Bootilicious! Download links are on the site (updated for BETA2).

  • Share/Bookmark

Multi-tasking in style on the Android Platform

May 2nd, 2010 No comments

An interesting article posted on the Android Developer Blog from Dianne Hackborn (born to hack!) who discusses the way multi-tasking works on Android. Recommended reading as it goes beyond how it works (and why!) and offers some suggestions on how to make the most of it!

  • Share/Bookmark

Ubuntu 10.04 and getting Sun JRE instead of OpenJDK

May 2nd, 2010 1 comment

If you’ve downloaded the latest Ubuntu 10.04 Lucid Lynx you’d realise that they ship with the OpenJDK instead of the Sun (Oracle) JRE. The Ubuntu team has decided to move the Sun Java bits to the partner repository which means we need to do a couple of things prior to getting it through apt-get.
First add the repository to your /etc/apt/sources.list via the add-apt-repository command, then do a full update.

$ add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ apt-get update

Then lets install the Sun JRE & JDK as required.

$ apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
$ apt-get install sun-java6-jdk

Once installed you can verify the correct JRE is installed with:

$ java -version

I have to say, this release of Ubuntu is incredibly refreshing :-) Its matured so well in a short period of time, its definitely got the Lynx Effect(NSFW).

  • Share/Bookmark

Mechwarrior 4, free download!

May 2nd, 2010 No comments

Quick note after seeing this on Kotaku, Mektek has released MechWarrior 4 for download for free (as in totally). Bring back those memories! The site’s been MC hammered right now but grab the 1.7Gb and lock & load :-)

  • Share/Bookmark

FIX: WordPress Older Posts not working in IIS with Permalinks

April 28th, 2010 2 comments

I spent some time tweaking my blog today after moving it to some fresh hardware. You may find that everything is loading much faster now which can be attributed to two plugins in addition to the hardware upgrade – wp-super-cache and wp-widget-cache.

I’ve also fixed a long standing bug with my particular configuration of WordPress that runs on IIS which causes the “Older posts” link at the bottom does not function for the second page. The WordPress generated URL for this is

http://www.thushanfernando.com/index.php/Index.php/page/2

Which is a bit problematic, this ofcourse can be reproduced only on IIS from my musings (serves me right eh?). There are a couple of suggestions by people on the forums already, but I wasn’t too keen on them as they seemed too high-level fixes.

I’ve enabled Permalinks with this format:

http://www.thushanfernando.com/index.php/2010/04/28/sample-post/

So I looked through the sources to see why this was happening. After a bit of snooping about I got to the get_pagenum_link function in wp-includes/link-template.php file.

Heres a bit of source for reference – this is with WordPress 2.9.2:

function get_pagenum_link($pagenum = 1) {
	global $wp_rewrite;

	$pagenum = (int) $pagenum;

	$request = remove_query_arg( 'paged' );

	$home_root = parse_url(get_option('home'));
	$home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
	$home_root = preg_quote( trailingslashit( $home_root ), '|' );

	$request = preg_replace('|^'. $home_root . '|', '', $request);
	$request = preg_replace('|^/+|', '', $request);

	if ( !$wp_rewrite->using_permalinks() || is_admin() ) {
		$base = trailingslashit( get_bloginfo( 'home' ) );

		if ( $pagenum > 1 ) {
			$result = add_query_arg( 'paged', $pagenum, $base . $request );
		} else {
			$result = $base . $request;
		}
	} else {
		$qs_regex = '|\?.*?$|';
		preg_match( $qs_regex, $request, $qs_match );

		if ( !empty( $qs_match[0] ) ) {
			$query_string = $qs_match[0];
			$request = preg_replace( $qs_regex, '', $request );
		} else {
			$query_string = '';
		}

		$request = preg_replace( '|page/\d+/?$|', '', $request);
		$request = preg_replace( '|^index\.php|', '', $request);
		$request = ltrim($request, '/');

		$base = trailingslashit( get_bloginfo( 'url' ) );

	if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) )
		$base .= 'index.php/';

		if ( $pagenum > 1 ) {
			$request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( 'page/' . $pagenum, 'paged' );
		}

		$result = $base . $request . $query_string;
	}

	$result = apply_filters('get_pagenum_link', $result);

	return $result;
}

This function (from reading through) essentially generates the links for the page numbers & page navigation taking into account Permalinks if configured. This is all fine and dandy for Unix hosts but for Windows, unfortunately this bit of code fails us.

...
$request = preg_replace( '|page/\d+/?$|', '', $request);
$request = preg_replace( '|^index\.php|', '', $request);
$request = ltrim($request, '/');
...

As the preg_replace is case sensitive, it will not replace the invalid Index.php that is seen on IIS. So the easiest fix is to tweak the regex pattern a little bit and tell it be case insensitive.

...
$request = preg_replace( '|page/\d+/?$|', '', $request);
$request = preg_replace( '/|^index\.php|/i', '', $request);
$request = ltrim($request, '/');
...

This will then generate the (invalid) urls and the preg_replace will remove any additional Index.php’s from the request URL as its already mentioned in the $base variable a few lines below:

...
if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) )
$base .= 'index.php/';
...

Once you make the change and upload the files, your “Older posts” will start working again. I’ll submit a patch to WordPress I’ve submitted a patch to WordPress Trac, now its just a wait and see what they say, in the meantime here’s a patch file if you don’t want to modify sources manually. If there any issues, post a comment :-)

  • Share/Bookmark

The move to Android from WinMo and Android 2.2 (aka Froyo) coming soon!

April 26th, 2010 1 comment

I switched from using Windows Mobile Phone devices to the Android platform a couple of months back with the Google Nexus One. With Microsoft following the lead of Apple in closing everything they’ve kept open for so long, there wasn’t much to look forward to with Windows Phone 7 (I was almost going to work on that team had I moved to the US a couple of years ago). Though, I’ve started writing for the new WP7 series via work, I’ve felt it was time to move on. Android is a breath of fresh air, I’ve toyed around with the G1 but the Nexus (whilst still a HTC device) is a joy to use as is the operating system. I actually have two Nexus’s these days, one is kept stock as my primary phone, whilst the other is using the Cyanogen mod.

Windows Mobile was never touch friendly – and rightfully so, as the operating system was written for stylus usage as a primary goal,  then later HTC (via TouchFlo3D) bolted on a new UI to bring touch friendly UI candy for Windows Mobile. Though Windows Phone 7 brings this to the table (with touch being a primary design goal), I’m ashamed to say they’ve taken what WinMo was good for – being easy to customise and cook ROMs for and turned it to the Apple-esque closed ecosystem and Jobs likes being in control of his herd.

The great thing about the Android is that its got potential and its constant source of updates are very welcome (probably the fastest growth for a platform thus far!), the AppStore has increased exponentially the past few months (which is good and bad – useless app count increases) as users begin to crawl out of the rotting Apples and the stained Windows phones. Another key is that all your Google services are integrated nicely. I’ve given up most of my daily things to Google – email, calendar, contacts… They’re all “in the cloud” and (for now) synchronisable and safe (not that you couldn’t do this with the iPhone or Windows Mobile).

The next release of Android (2.2) is dubbed Froyo and brings some very funky new updates.

JIT Compiler

Probably the biggest addition in this release but first and foremost, the design and architecture of the Android platform is a bit different to others. Forgetting the native development paradigm for Android, you write applications utilising the Java language.

From the Android Developer Guide:

Android applications are written in the Java programming language. The compiled Java code — along with any data and resource files required by the application — is bundled by the aapt tool into an Android package, an archive file marked by an .apk suffix. This file is the vehicle for distributing the application and installing it on mobile devices; it’s the file users download to their devices. All the code in a single .apk file is considered to be one application.

In many ways, each Android application lives in its own world:

  • By default, every application runs in its own Linux process. Android starts the process when any of the application’s code needs to be executed, and shuts down the process when it’s no longer needed and system resources are required by other applications.
  • Each process has its own virtual machine (VM), so application code runs in isolation from the code of all other applications.
  • By default, each application is assigned a unique Linux user ID. Permissions are set so that the application’s files are visible only that user, only to the application itself — although there are ways to export them to other applications as well.

It’s possible to arrange for two applications to share the same user ID, in which case they will be able to see each other’s files. To conserve system resources, applications with the same ID can also arrange to run in the same Linux process, sharing the same VM.

In order to achieve this, the Android platform uses the Dalvik Virtual Machine (which is register based as opposed to the more common stack based machines) suited for embedded devices – low memory footprint, run multiple VMs by offloading the process isolation, memory, threading and IO management to the operating system (Android).

The caveat with the Dalvik VM is that the performance is not ideal (it has no JIT compiler) and (by the looks of it) needs to improve garbage collection process (fragmentation is a concern currently). If you’re keen on understanding more about the Dalvik VM, checkout a talk from 2008′s Google I/O about Davik VM Internals (1:01:34). They also realise the performance implications of the runtime.

However, back in November 2009, Bill Buzbee commited the Dalvik JIT code to the Android platform bringing JIT compilation which (if you’ve been using any of the CyanogenMod’s lately) makes a very noticeable and welcome performance boost to all applications.

The (trace-based JIT) compiler detects frequently executed traces (hot paths & loops) and emits optimised code for the platform as necessary, ensuring that minimal heap memory is utilised without the use of any persistence storage – which is what you want in an mobile device!  Trace based JIT compilers are very common today, the TraceMonkey engine in Firefox is an example where dynamic languages (like Javascript) have had a boost through their use. Take a look at SPUR which is a Microsoft research project to bring trace-based JIT Compiler for CIL.

Whilst included in Android 2 it was never enabled, and by the looks of it, Android 2.2 will see this being enabled and stable :-)

Linux Kernel update 2.6.32

The upgrade from 2.6.29 to 2.6.32 should bring a trimmed memory foot print and some performance tweaks as well as 802.11n support on devices such as the Google Nexus (yay!)

Flash 10.1 Support

There’s lots of hoo-haa about Flash support on iP*’s and other devices, I’m not too concerned about having it on my phone (less annoying ads browsing the interwebs) but it seems Google will bring Adobe Flash 10.1 support to Android. For some, it was a deal breaker when it came for choosing a phone. I guess now its a matter of ooh-ah!

Automatic application updates

Currently, updating Android applications is quite tedious – updating one application at a time, but it seems a newer update will automatically ensure that your applications are up to date – which is good and bad, I’d like to control when and where it decides to eat up my 3G data for updates (Eg. Update when on wireless)

Hopefully a rollback feature will also be implemented in case the newer versions break things.

Other updates

  • OpenGL ES 2.0 enhancements which game developers will find enticing.
  • The ability to control the color of the trackball (which currently flashes white)
  • Enabling of FM Radio
  • Fixes for resolution and “crazy screen” woes.

When will we be getting this? No-one knows, but suggestions are around the time for the Google I/O event on May 19th.

Next up, I’ll write about some of the applications that I’ve come to use daily, in the meantime you can see the apps running on my Android by checking my AppBrain account. Later some development articles on Android too :)

  • Share/Bookmark

Office 2010 and SQL Server 2008 R2 (soon) available on MSDN!

April 26th, 2010 No comments

If you haven’t heard already, Microsoft have RTM’d both Office 2010 and SQL Server 2008 R2 and Office is already available for MSDN Subscribers with SQL Server 2008 R2 arriving soonishly – you can look at the download page for SQL Server 2008 R2 and download it from MSDN now (03/05/2010). There’s also a great ebook titled “Introducing SQL Server 2008 R2” available in XPS and PDF format :)

I’m one of those who love the ribbon UI, its made things easier for me (helps that I really wasn’t a heavy MSFT Office user back in the days). Now everyone’s getting on board the ribbon train, even the beloved WinZip!

Don’t forget the Office 2010 Movie from last year.

  • Share/Bookmark