On Distibuted Automated Testing

Just a quicky.

Selenium Grid 2, good. Nunit console runner, not so good.

Need to use Nunit.Multicore fork available here to run test fixtures in parallel in order to benefit from Selenium Grid setups. Also need to remember to set the Max Degrees of Parallelism on the Parallel.ForEach call so that you don’t overrun the Selenium hub.

More on the Centos environment I used to get the grid set up later.

Responsive Web Design Performance Linkage

Interesting link-fest about Responsive Web Design Performance: http://www.lukew.com/ff/entry.asp?1760&utm_content=buffer26f9a

We actually already do some of this stuff, like moving elements around when they aren’t visible, and starting with elements hidden in css for the critical rendering path.

Optimizing the Critical Rendering Path

Ilya Grigorik explains why mobile Web experiences can be slow and how to optimize your sites for quick rendering.

Responsive and Responsible

Scott Jehl outlines a number of ways to build responsive Web sites that take performance in account.

Rendering Without the Lumpy Bits

Jake Archibald walks through tips and techniques for smooth animation and layout rendering on browsers.

How BBC Fell in Love with Responsive Design

Tom Maslen walks through why the BBC used responsive Web design for their new mobile site and the principles they applied along the way.

Performing Actions Optimistically

I share design techniques to make mobile apps “feel” faster when they actually aren’t.

Page Speed is Only the Beginning

Peter McLachlan explains how pre-fetching Web resources can help speed up performance online.

Typography in 10 minutes from someone who knows about it

This site: http://practicaltypography.com/ is a fantastic starting point for anyone that want’s appreciate typography in general, with some specific print and online typography tips.

If you’re pressed for time and don’t complete the entire reading, then at least just read the first page: http://practicaltypography.com/typography-in-ten-minutes.html.

This is a bold claim, But I stand be­hind it:
If you learn and fol­low these five ty­pog­ra­phy rules, you will be a bet­ter ty­pog­ra­ph­er than 95% of pro­fes­sion­al writ­ers and 70% of pro­fes­sion­al de­sign­ers. (The rest of this book will raise you to the 99th per­centile in both categories.)

All it takes is ten min­utes—five min­utes to read these rules once, then five min­utes to read them again.

Ready? Go.

  1. The ty­po­graph­ic qual­i­ty of your doc­u­ment is de­ter­mined large­ly by how the body text looks. Why? Because there’s more body text than any­thing else. So start every project by mak­ing the body text look good, then wor­ry about the rest.In turn, the ap­pear­ance of the body text is de­ter­mined pri­mar­i­ly by these four ty­po­graph­ic choices:
  2. point size is the size of the let­ters. In print, the most com­fort­able range for body text is 10–12 point. On the web, the range is 15–25 pixels. Not every font ap­pears equal­ly large at a giv­en point size, so be pre­pared to ad­just as necessary.
  3. line spacing is the ver­ti­cal dis­tance be­tween lines. It should be 120–145% of the point size. In word proces­sors, use the “Exact” line-spac­ing op­tion to achieve this. The de­fault sin­gle-line op­tion is too tight; the 1½-line op­tion is too loose. In CSS, use line-height.
  4. line length is the hor­i­zon­tal width of the text block. Line length should be an av­er­age of 45–90 characters per line (use your word-count func­tion) or 2–3 low­er­case alphabets, like so:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdIn a print­ed doc­u­ment, this usu­al­ly means page margins larg­er than the tra­di­tion­al one inch. On a web page, it usu­al­ly means not al­low­ing the text to flow to the edges of the brows­er window.
  5. And finally, font choice. The fastest, eas­i­est, and most vis­i­ble im­prove­ment you can make to your ty­pog­ra­phy is to ig­nore the fonts that came free with your com­put­er (known as sys­tem fonts) and buy a pro­fes­sion­al font (like those found in font recommendations). A pro­fes­sion­al font gives you the benefit of a pro­fes­sion­al de­sign­er’s skills with­out hav­ing to hire one.If that’s im­pos­si­ble, you can still make good ty­pog­ra­phy with sys­tem fonts. But choose wise­ly. And nev­er choose times new roman nor Arial, as those fonts are fa­vored only by the ap­a­thet­ic and slop­py. Not by ty­pog­ra­phers. Not by you.

That’s it. As you put these five rules to work, you’ll no­tice your doc­u­ments start­ing to look more like pro­fes­sion­al­ly pub­lished material.

Then, if you’re ready for a lit­tle more, try the sum­ma­ry of key rules.

If you’re ready for a lot more, start at the foreword and keep reading.

Smooth HTML transition animinations on mobiles using CSS3 transforms with a jQuery fallback

So if you’ve used some jQuery easing effects on a mobile recently you might have noticed a bit of chugging (the technical term for stuttering :P). This is because the javascript code in jQuery animations is not hardware accelerated on mobile browsers, whereas the css engine on most modern mobile browsers are.

css3-animated-squares

It follows, therefore, that using CSS3 transitions, with a jQuery fall-back is the best way to get smooth mobile transitions that work in the dreaded IE8.

While you’re at it, you might want to give this CSS3 transitions demo page a whirl: http://css3.bradshawenterprises.com/transitions/

Hello Linode, goodbye PhotonVPS

So I’ve not been happy with the performance or stability of my Warp 2 system over at PhotonVPS. I’ve had a Debian 6 LAMP server with them for 2 years now and my service has been progressively getting worse, to the point where I’ve had to introduce a 5 minute http alert monitor and it has been going off quite regularly lately.

The straw that finally broke the camels back was the support team suggesting that they could “move” my vps to another (hopefully more stable) node by simply setting up a new vm that I then copied my data across to and updated my DNS to point to. I’m sorry, if wanted to rebuild my server and migrate my data across to it, I wouldn’t have chosen a virtual machine to host on.

So I decided to go through the pain of rebuild/data migration and started doing my research.

Amazon having a Sydney data centre was an incredibly enticing option, but the price different between a micro-instance and small instance was way disproportionate and I didn’t like the fact that I was paying 30% more for a small instance in Sydney than if I were to host it anywhere else in the world. I also didn’t think the LAMP setup would fit into a micro instance.

So on whim I decided if Linode (a trusted oldie) had was going to be affordable, and boy was I surprised. The Linode 1024 was cheaper than my PhotonVPS hosted WARP 2, and runs faster. I didn’t really need the extra 1 Gig of ram so I moved across to it and have been pretty happy ever since. In fact my server is performing way faster than it did on Photon VPS.

Linode even provide kick-arse instructions for setting up the LAMP server that rivalled even my own build documentation.

Getting Jenkins to publish ASP.Net Web Projects with msbuild on Visual Studio 2010 files

I’m putting this here because there is a lot of google foo out there for this particular issue and none of the answers were from an authorative enough source for me to trust, so I just had to figure it out for myself.

The scenario

We have a Visual Studio Web Application solution that has been continually upgraded in the business for at least the last 7 years. It has been through several architecture changes and Visual Studio project format upgrades up to Visual Studio 2010 and ASP.Net 4. Having started as an original n-tiered architecture we have multiple layers of references/dependencies between projects roughly ordered as such:

  1. Third Party Binary References
  2. DAL layer
  3. Business Logic Layer
  4. Application Settings Transport project
  5. Web Application Application Layer

There is some cross referencing from projects at different layers further down than the one below it (the Web App has to reference some of the Third Party dlls).

We have been publishing the application manually through VS 2010 by rebuilding the whole solution manually using specific Build Configurations and then right-clicking on the web project and using the publishing wizard.

We recently tried to get Jenkins to automatically build and publish (we ended up using package deployment, not publishing) the application using an msbuild task and were unable to get either the transforms, or the correct binary dlls in the publish folder. This was causing us no end of pain.

The multiple causes and fixes

Just finding the correct msbuild command line to get it to work was chore. We ended up settling on:

msbuild $WORKSPACE\Website\Website.sln /v:$MsBuildVerbosity /p:Configuration=$PublishEnvironment /p:Platform="Any CPU" /p:DeployOnBuild=True /p:DeployTarget=Package /p:AutoParameterizationWebConfigConnectionStrings=False /p:AllowedReferenceRelatedFileExtensions=".pdb" /p:ExcludeGeneratedDebugSymbol=false /p:_PackageTempDir="$WORKSPACE\Publish\$PublishEnvironment\Website"

Once we got that right we had to actually do the following to get the correct output published with correct configs:

  1. Move the config transform task into the pre-build section from post-build section
    1. There seems to be a race condition in msbuild between the transforms and the file publish activity. Sometimes they would make it in, sometimes they wouldn’t.
  2. Move any post-build tasks in pre-build.
  3. Update every single non-GACed assembly or project reference to ensure they had the node <Private>True</Private> (this is the xml behind the Copy Local property in the reference properties screen)
    1. This is because VS 2010 sees the absence of the Private attribute as a default of Copy Local = True whereas msbuild sees it’s absence as defaulting to false
    2. This is an absolutely nutso decision from MS. Why on earth would you have the command line build system treat project properties differently than your IDE?
  4. Ensure every single referenced project (or reference project of a referenced project) has a consistent default build Configuration and Platform defined, and then define a solution Configuration that sets the default Project Configs for your release configuration.
    1. This is critical for us because we have an upstream platform branch that is read-only and externaled into the build/reference path for customer projects.
    2. The platform projects only have Debug and Release configurations for Any CPU platforms but the customer projects have build configurations to ensure the config trasnforms are generated (Dev, Test, Staging, Production).
    3. To make this work we had to define these four configurations in the solution file and map them to their corresponding projects in the customer projects but also map them to the Release configuration in the platform projects.

Thinking about a new virtualised infrastructure solution

So I’ve been a big fan of Virtualised Infrastructure from the early days, and have pretty much been a VMWare fan from the beginning. Then during my mono lurking days ChipX86 started working there and kicked off Review Board I gained a renewed respect for the company.

Back then I started with VMWare Server 2 or GSX, and used VMWare player extensively to do my Linux hacking off my windows machines. In the move to ESXi around version 4 I really fell in love with the power of the solution in particular with the power of the product running on a SAN with multiple connected host machines. The great thing about this is I could run paid ESXi on my SAN where it counted and then run up an ESXi free server for the virtualised development staging environments and the management tools would be on par between the two systems.

These days, with VM Technology being the way it is the gap between what can be done by the free version and the non-free version is getting bigger and bigger, and gets getting harder to work around that for the virtualised development environments we use at the office. I understand the VMWare’s need to do this, they need to have some reason to pay for their software, but the feature-set of other open-source virtualisation technologies have all but caught up to VMWare these days and it’s getting harder to ignore.

In particular I’ve been hearing great things about KVM, and thinking it would be good to try that as my development environment virtualisation infrastructure. I just didn’t want to run a whole machine up with the full linux user management to get the VM’s running. That’s why I’ve been thinking of trying Proxmox VE. It seems to be a vSphere work alike and supports many virtualisation formats including KVM. I just need to find the time to run up a Proxmox system and see how it goes for remote management, snapshot management and general VM performance. I think I’ll give it a crack soon.

An update on the standing experiment

So a few weeks ago I started standing at work.

It’s been a few weeks, and I thought I’d do a quick update.

Basically after the first week I no longer have the dull (strain-like) pain in my back during the day when I stand. It feels no different to what sitting all day used to feel like. I spent the first week having to sit down after 1pm, just to get a rest, but now I can pretty much stand all day, especially if I break that up with meetings in meeting rooms (sitting down obviously).

I’ve not noticed any major improvement in my posture, though I have developed an awareness of just how bad my slouching is when I do sit down. I can only hope that this is one of those things that will give me a long term benefit.

I have noticed that I’m feeling “hotter” during the day while standing, compared to when I was sitting, and that I’m not having any real back pain when sleeping at night (the reason why I started standing in the first place).

Too soon to tell, but it looks positive this far.

An experiment in standing

So I’ve been having back pain pretty much my entire career and it’s always something I just live with. Being a bigger bloke, and sitting for up to 16-20 hours a day at times doesn’t help the cause much. In fact my physio says my posture is atrocious because of my sitting the last 15 odd years of my career. It basically comes and goes, so has never been a real concern for me.

A couple of the other guys at work at Amblique have back pain also and so we decided to experiment with standing desks.

ambliuqe_standing_desk

We have come up with a modified version of this DIY standing desk, where we have replaced the black brackets with double slot strip shelving and brackets. This enables the height of the keyboard to be adjusted to suit the height of the person using the desk. We have 4 of them in the office at present, 2 in full time use and 2 temporary desks for other people to try out.

I’m only two days into it so it’s too soon to tell how beneficial it is for me.

Loving the Ainol Novo7 Venus

So I caved and bought an Ainol Novo7 Venus from AndroTechno. Not as cheap as the Asian providers, but Grant actually had stock, and provided some excellent customer service with respect to selecting the final device, so it was money well spent.

Novo7 Venus

It literally arrived here the next day. It’s a fantastic 7inch Android 4.1 tablet that, with the latest firmware update from slatedroid, is the perfect XBMC platform (for sd video content only, no hardware hd video playback yet).

I got the thing specifically to replace my aging, bulky in car DVD player. And it seems to suit that purpose perfectly. I’ve just ripped a few of my kids favourite DVD’s to SD divx and copied them straight onto the device. The IPS screen is fantastic for that purpose.

If purchasing from an Asian provider you can get the Novo7 Venus for about half the price of a Nexus 7. So for me the feature list I get for that price is worth the compromises I made over the Nexus 7. The following are the list of Pro’s and Con’s.

Pros:

  • Factory Rooted
  • 7 inch, IPS Screen
  • 1280×800 Resolution with HD Video Playback
    • Note that since XBMC’s hardware HD video playback support isn’t that comprehensive yet on Android, you will need to use the onboard player to play HD content on the device
  • Quad Core Processor
  • Jelly Bean OS
  • Runs XBMC for standard content well
  • Small, light-ish with a decent battery life
  • Almost half the price

Cons:

  • No 3G (I didn’t need it)
  • No GPS (I didn’t need it)
  • No Bluetooth (this would have been nice)
  • 10mm thickness is thicker than most high end tablets of it’s size
  • Screen brightness in the sun could be a little better (check the glare from the light coming off the factory fitted screen protector in the picture)

Summary: As an in car media player it is the perfect compromise between price and features, and it can also be used to run most of the standard Android apps and games. So I’m very happy with it