04.11.10

iOS 4.2 on iPad

Apple has just release the Gold Master version of 4.2 which brings multitasking and a ton of other features to the iPad. I am going to just look at Safari as I am sure this is the app the majority of people are using.


First off the performance of Mobile Safari has been enhanced so it runs a bit faster than the previous versions. Sunspider JS tests are completed around 8300ms compared to around 10300ms on 3.1.3 which translates to around a 20% improvement.


There are a number of UI improvements to the app as well. The window/tab button now lets you know how many open tabs/windows you have. The address bar is now able to pick up titles as well as actual addresses. And best of all searches can now be used to search for a word on the current page instead of searching the web.
Best of all is multitasking so you can quickly switch from IM or Twitter to Safari without getting kicked out of the previous app.


Overall it makes every day web browsing a better experience.

Update: iOS 4.2 on 3GS gets 12500ms compared to about 13500ms on OS 4.0.1


21.08.10

Silverlight 4 Performance

2 years ago Sean Christmann wrote a benchmark that runs in both Silverlight and Flash and the results were simply abysmal for Silverlight 2 beta. It ran at the time around 9 frames a second compare to Flash's 46 frames. [Note: There is a 60frame cap] But lets fast forward to today and lots look at what the performance is like on Silverlight 4.

I have recompiled his code exactly with Silverlight 4 and the results are simply amazing. Sliverlight 4 now performs at around 52 frames/sec and Flash 10.1 runs at about 52 frames/sec. So basically what we see now is that Silverlight in this benchmark is now on par with the latest version of Flash.

Recompiled Code Link[opens in new window]

Benchmark performed on a Core 2 Duo Q6600

 

Update: Did a test on my MacBook Air 2.13Ghz running 10.6.4. Flash 16.65 Silverlight 21.7.


18.08.10

Learning about Silverlight

Silverlight long considered Microsoft's answer to Adobe's Flash hasn't quite enjoyed the widespread usage of the the later but that is probably just due to the inertia behind Flash. Personally as a .NET developer it has always intrigued me where Microsoft will eventually take this technology. Obviously now with the imminent release of Windows Phone 7 it has shown exactly where it intends to take it.

 

First let me explain what my understanding of Silverlight is. It to me is the next big step in designing UI based applications within Microsoft's operating systems both mobile and desktop (and kinda the web too since you can use a plugin). It really moves MS into the 21st century and on par with Apple in terms of OS (framework) provided UI animations. For those that don't know, Apple has something called CoreAnimation which makes it very easy to do complex UI animations that was pretty much impossible for most developers on the Windows side. And impossible is pretty much how I would describe trying to "animate" any WinForm based applications.

 

Even simple things like having 2 sliding info boxes would require you to actually write a bunch of code to a) repaint the box as you moved it b) actually code where it will go. In Silverlight this has completely changed. I can now have two states (or frames) like Flash and have the system automatically animate from one state to the other with easing (which btw is damn awesome) without writing a single line of code. This now makes building rich interactive app so much easier and hopefully this will mean better looking Windows apps.

 

Now learning Silverlight has been made super easy by Microsoft. They are providing about a dozen tutorials online that take you from using Silverlight to do prototyping (this is also awesome) to building actual apps. Did I mention that you can "install" Silverlight apps directly from a website by right clicking and hitting install.

 

Check out the below links for videos and demos of Silverlight using Expressions 3 (4 has support for Windows Phone)

Microsoft Design School

Silverlight on Channel9


01.08.10

iPhone 3 Performance of OS 3 and 4

After hearing about all the iPhone 3G slow downs on OS 4 I decided to do some tests to see exactly how slow it is compared to OS 3.0 (considered one of the faster OS versions. Going to 3.0 to 4.0.1 I did a full DFU restore and not an upgrade as some people have contended that running an upgrade is the cause of the slowness.

Boot times

First of will be the boot up tests. Time it took from pushing the power button until the phone was at lock screen. All tests were run 3 times to ensure consistency. I have thrown the iPhone 3GS in as well for comparison sake.

iPhone 3G on 3.0

  1. 45sec
  2. 46sec
  3. 46sec

iPhone 3G on 4.0.1

  1. 55sec
  2. 55sec
  3. 55sec

iPhone 3GS on 4.0.1

  1. 46sec
  2. 47sec
  3. 47sec

Sunspider JS Test

Next up we run the SunSpider JS test which test the performance of the webkit browser and its JavaScript engine.

iPhone 3G on 3.0

  1. 39592ms
  2. 41094ms
  3. 42824ms

iPhone 3G on 4.0.1

  1. 38765ms
  2. 38976ms
  3. 39239ms

iPhone 3GS on 4.0.1

  1. 13892ms
  2. 13763ms
  3. 13672ms

And just for fun iPad clocks in at 10159ms and the MacBook Air @ 2.16GHz at 406ms

 

Lastly we test some app launch times.

Launch Camera.app

iPhone 3G on 3.0
Cold Launch from boot: 3.3sec, 3.5sec, 3.3sec

Warm Launch after closing the app: 2.5, 2.8, 2.6

iPhone 3G on 4.0.1
Cold Launch from boot: 5.0sec, 4.5sec, 4.5sec

Warm Launch after closing the app: 3.4sec, 3.4sec, 3.4sec

 

Launch Phone.app

iPhone 3G on 3.0
Cold Launch from boot: 1.9sec, 1.7sec, 1.8sec

Warm Launch after closing the app: 1.1sec, 1.0sec, 1.1sec

iPhone 3G on 4.0.1
Cold Launch from boot: 2.0sec, 1.9sec, 2.0sec

Warm Launch after closing the app: Pretty much instant due to animation

 

Launch Settings.app

iPhone 3G on 3.0
Cold Launch from boot: 2.2sec, 2.3sec, 2.2sec

Warm Launch after closing the app: 1.8sec, 1.9sec, 1.8sec

iPhone 3G on 4.0.1
Cold Launch from boot: 3.2sec, 3.5sec, 3.5sec

Warm Launch after closing the app: 2.6sec, 2.6sec, 2.7sec

 

Launch Safari.app

iPhone 3G on 3.0
Cold Launch from boot: 2.7sec, 2.8sec, 2.8sec

Warm Launch after closing the app: 2.4, 2.4, 2.2

iPhone 3G on 4.0.1
Cold Launch from boot: 4.0sec, 4.3sec, 4.3sec

Warm Launch after closing the app: 3.0sec, 2.3sec, 3.0sec

 

Overall iOS 4 is running slower on the iPhone 3G when compared to its predecessor without bringing a lot to the table. Here is hoping that Apple will spend a small portion of their efforts to speed up the upcoming 4.1 update for older hardware.


27.07.10

Setting up RRAS as a VPN server with NAT

After purchasing a VPS from ThrustVPS (this is not an ad just a geninely cheap and good service) I decided I want to setup a VPN to allow me to browse the web uninterupted by US only content (hulu etc) or blocked content (thanks to GF China).

 

This guide is for Windows Server 2008 but the same should apply to 2003 also.

 

Step 1

First thing to make sure before you setup RRAS is that you have installed all the latest security patches release by Microsoft.

Next thing we need to do is add the role "Network Policy and Access Services"

Step1

Once installed restart you server.

Step 2

Next we will need to create a new account for use with the VPN

step2

Once the user has been created you will need to grant this use Remote Access Privileges.

From TechNet

If the remote access server is part of a Windows Server 2008 or Windows Server 2003 domain:

  1. Click Start, click Administrative Tools, and then double-click Active Directory Users and Computers.
  2. In the console tree, click Users (console tree location: Active Directory Users and Computers/domain name/Users).
  3. In the details pane, right-click a user name, and then click Properties.
  4. On the Dial-in tab, under Remote Access Permission (Dial-in or VPN), click Allow access, Deny access, or Control access through NPS Network Policy, and then click OK.
  5. Configure other settings, as appropriate.

If the remote access server is a standalone server (not part of a domain):

  1. Click Start, click Administrative Tools, and then double-click Computer Management.
  2. In the console tree, click Users (console tree location: Computer Management/System Tools/Local Users and Groups/Users).
  3. In the details pane, right-click a user name, and then click Properties.
  4. On the Dial-in tab, under Remote Access Permission (Dial-in or VPN), click Allow access, Deny access, or Control access through NPS Network Policy, and then click OK.
  5. Configure other settings, as appropriate.

Step 3

Now that the user is setup to access the system we can now configure RRAS.

  1. Open RRAS under Administrative Tools
  2. Right click your local server and select "Configure and Enable Routing and Remote Access"
  3. Select "Custom configuration" and click next
  4. Check VPN access and NAT and click next then finishStep3a
  5. Your system will now create the bits and pieces required for VPN and NAT

Next we need to configure the IP addresses (skip if you are already running DHCP on the server)

  1. Right click you local server in RRAS and select properties
  2. Go to the IPv4 tab and select static address pool
  3. Click add and specify an IP address range (minimum is 2 IPs one for the server and one for the client)

Step3

Lastly we will need to setup NAT which is very simple

  1. Right click NAT under the IPv4 node
  2. Select New Interface
  3. Select your public connection
  4. Restart the server
  5. Done

I hope you have enjoyed the article. If there are any errors please let me know at joelypolly [at] gmail.