Review of HP Folio 9470m
With the launch of Windows 8, there have been a slew of new ultrabook and lightweight laptops that appeared. However for a Developer or IT Professional, these laptops are typically useless.
An ultrabook will typically have
- a very small form factor – thin (<2cm height) and light (< 2kg)
- Unconfigurable, and parts such as hard disks and ram are not easily replaceable
- Quite low specifications – 4GB ram, 128GB SSD
- Non standard ports, typically require external adapters to plug into LAN or VGA projection
- Long battery life
On the other hand, a laptop can be the complete opposite of an ultrabook i.e
- decent form factor, weight varies anywhere from 1.2 to 3kg or more
- Highly configurable
- Specifications can be customized, though typically the higher the specification the higher the cost as well as the weight
- Standard ports for VGA and LAN is usually present, typically a lot more ports compared to an ultrabook
- Decent battery life
I’ve been searching for quite a while for a high specifications laptop which has a small form factor and is light as well as having a backlit keyboard. Yes it sounds very much like a macbook pro and that is actually the kind of hardware that I was trying to replicate with hardware from windows OEM partners.
Finally in late 2012, I finally found it, the HP Folio 9470m!
The specifications found at HP site is inline with what I was looking for, and the best part is that it comes with an external battery to bring it up to 21 hours of usage, a built in 3G/4G modem and a fantastic warranty plan!
http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/321957-321957-64295-5228908-5228906-5271146.html?dnr=1

| Category | Specifications | Comments |
| CPU | Intel I5 to I7 | Standard low voltage Ivy Bridge Intel CPU |
| Ram | Up to 16GB | 16GB of ram, definitely able to run almost all my development and VM workloads, user replaceable too! |
| Hard Disk | 7200RPM 320GB to 500GBSSD 128GB to 240GB
MSATA 256GB Self encrypting drive options available |
Decent hard disk options. However what I like is that its user replaceable, as long as it fits the SATA port and has 7mm heightThere are 2 ports actually, a SATA and a mSATA port, so you can in essence have a 256GB mSATA SSD and a 1TB SATA 7200 RPM HDD. No need to worry about replacing a DVD drive just to get another slot for storage |
| Screen Size | 14” LCD (1366×768)14” HD (1600×900) option available | This seems to be a sweet spot, any smaller it becomes harder to do any form of decent development, any bigger makes it hard to carry around |
| Graphics | Built-in Intel Graphics | This is a laptop, games have long ago been delegated to my tablet |
| Ports/ Expansions | 2xUSB 3.0 1xUSB 3.0 charging 1x Display Port 1.1a 1xVGA 1xRJ45 1xcombo headphone/mic jackWebcam |
I like the fact that USB 2 has been totally phased out and its using all USB 3 ports. Update: The charging port is able to charge an IPAD too!Also the presence of full VGA and RJ45 ports are definitely a plus. No need to carry extra wires for those and increase my risk of losing them |
| Keyboard | Spill resistant backlit keyboard with 2 settings | Definitely a plus, especially when working in dim areas. 2 settings works well too, sometimes I just need a bit of light |
| Pointing device | Glass touchpad Point stick |
Dual pointing options for those that can’t figure what they want to use |
| Communications | 10/100/1000 NICMultiple WIFI options from Intel, Atheros, Broadcom
3G/4G mobile broadband |
The built in 3G/4G mobile broadband option is definitely a very big plus, no need to carry a dongle anymore!Update: for Singapore, only the 3G mode is available and its in a full sized sim form factor |
| Battery | Replaceable battery (10 hours)External battery (21 hours) | Internal battery sounds great, but having the option of external battery and a 21 hours runtime, definitely allows me to get thru any single day without chargingDo note that as you increase the specs of the machine, battery life will drop accordingly |
| Security | Drive Encryption Pre Boot Security Face Recognition Smart Card Reader Fingerprint sensor TPM |
Whole bunch of security features for the security conscious |
| Warranty | 1-> 3 years standard warrantyOptions - Travel - Accident |
The options are really great, take a look at the Accidental Damage Protection plan |
| Dimensions | 13.3 x 9.09 x 0.75 in (33.8 x 23.1 x 1.89 cm) | Decent dimensions, although not as thin as ultrabook, for the available ports, it’s a good compromise |
| Weight | Starting at 1.61kg | Again not ultrabook spec, but light enough |
From the specifications, i would highly recommend this machine for anyone looking for a workhorse and yet is really mobile enough with decent battery life (kind of what everyone is aiming for)
Rating: 4.5/5
I bought one of these from HP in December 2012, stay tuned for my hands on review of the unit!
Visual Studio 2012–Where’s my Business Intelligence
For those that have been using Visual Studio 2010 to do BI, you will realize by now that Visual Studio does have come with any of the Business Intelligence projects
Just off the oven, you can now goto http://www.microsoft.com/en-us/download/details.aspx?id=36843 to download “Microsoft SQL Server Data Tools – Business Intelligence for Visual Studio 2012”
Once downloaded and installed, you will now be able to see Business Intelligence projects inside Visual Studio 2012
ASP.NET MVC4– How to use a Database First EF in a MVC controller
Typically when you generate an Entity Framework (.edmx) from database and then try to create a MVC controller with read/write actions based on this Entity Framework, you will get the following error
xxx is not part of the specified Entity class, and the Entity Class could not be modified to add a DbSet<xxx> property to it. (For example, the Entity class might be in a compiled assembly)
Typically when you follow the steps, you will end up with the screen below, which will give you the error above when you click Add
For some strange reason, this DOESN’T work well with Database first EF, but it works properly with Code First EF.
To get it to work, all you need to do is to
1. Compile the project
2. Manually type in the Data context class (or remove the text in brackets)
Now clicking Add will do the neccessary
Windows Server–DFSR Cheat Sheet
Command: dfsrdiag pollad
Use this command to force DFS to poll AD for configuration updates
Typically used when changes to DFS are not being implemented, use this to force the update
Command: dfsradmin membership set /rgname:[replication group name]
/rfname:[replication folder name] /memname:[primary server name] /isprimary:true
Use this command to set a particular server as the primary member
Typically used when you add a new folder target in DFS and want it to sync from another server, or to set one of the server as a primary member. IsPrimary will be false once the sync is completed
Command: robocopy [destination] /copyall /s /xd dfsrprivate /r:1 /w:1
Robocopy the entire folder from source to destination, used to preseed the destination so that DFS will not take too long to sync
Location of DFS debug files: C:\windows\debug
Installing Windows 8 on a Pre 2010 MacBook Pro
Installing Windows 8 on Macbook
If you were to put in the Windows 8 CD and try to boot from the CD, you will get to a weird screen which gives you 2 options
1. [blank]
2. [blank]
Select CD-Rom Boot Type:
pressing either 1 or 2 just does not work.
To get it to work, you will need to create a special iso file
- Download the windows 8 x86 iso
- Extract the iso files to C:\Win8
- Download oscdimg.exe
- Run the following command
oscdimg –n –m –bc:\win8\boot\etfsboot.com c:\win8 c:\win8dvd.iso
- Burn c:\win8dvd.iso
- Insert this media into your macbook
- Power on the macbook and hold the option key
- select the dvd rom, boot and install Windows 8
Once everything is done, you will be able to start up to windows 8
Windows 8 Drivers
You will have to ensure that you have version 3.0 of boot camp, and download 3.1 and 3.2 off Apple Support. Alternatively you can get it at http://cdn.eilenia.com/public/
- Browse version 3.0 disk
- Goto Drivers\Apple
- Right click on bootcamp.msi, click properties –> compatibility
- Check “Run this program in compatibilty mode for”
- Select “Previous version of windows”
- Click ok
- Double click bootcamp.msi and follow the steps to install
- During the process, you may get some errors, click on ignore
- Reboot the mac
- Now install version 3.1 of the boot camp drivers and reboot
- Finally install version 3.2 of the boot camp drivers and reboot
- Once you reboot, you will be able to see the Apple Boot Camp icon and you are good to go!
Android: Unable to install Titanium Backup
You might get some weird errors when installing or upgrading Titanium Backup.
To fix this, delete the file data/app/com.keramidas.titaniumbackup-1.odex
Enabling dual date format output for JSON.NET for .NET v 4.5
Adding on to http://jefferytay.wordpress.com/2012/05/09/enabling-dual-date-format-output-for-json-net/
You will find that the code segment is no longer found in JSON.NET for .NET v4.5. This is because things have been changed between .NET 4 and .Net4.5
You now need to find the function called SerializeObject
private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
{
contract.InvokeOnSerializing(value, Serializer.Context);
_serializeStack.Add(value);
WriteObjectStart(writer, value, contract, member, collectionContract, containerProperty);
int initialDepth = writer.Top;
foreach (JsonProperty property in contract.Properties)
{
try
{
object memberValue;
JsonContract memberContract;
if (!CalculatePropertyValues(writer, value, contract, member, property, out memberContract, out memberValue))
continue;
writer.WritePropertyName(property.PropertyName);
SerializeValue(writer, memberValue, memberContract, property, contract, member);
}
catch (Exception ex)
{
if (IsErrorHandled(value, contract, property.PropertyName, writer.ContainerPath, ex))
HandleError(writer, initialDepth);
else
throw;
}
}
writer.WriteEndObject();
_serializeStack.RemoveAt(_serializeStack.Count – 1);
contract.InvokeOnSerialized(value, Serializer.Context);
}
Again we are looking at the code in bold, replace it with
if (memberValue != null && memberValue.GetType() == typeof(DateTime))
{
writer.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
writer.WritePropertyName(property.PropertyName);
SerializeValue(writer, memberValue, memberContract, property, contract, member);writer.DateFormatHandling = DateFormatHandling.IsoDateFormat;
writer.WritePropertyName(property.PropertyName+"_js");
SerializeValue(writer, memberValue, memberContract, property, contract, member);
}
else
{
writer.WritePropertyName(property.PropertyName);
SerializeValue(writer, memberValue, memberContract, property, contract, member);
}