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.
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.
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.
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.
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:
- Third Party Binary References
- DAL layer
- Business Logic Layer
- Application Settings Transport project
- 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:
- Move the config transform task into the pre-build section from post-build section
- 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.
- Move any post-build tasks in pre-build.
- 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)
- 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
- 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?
- 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.
- 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.
- 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).
- 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.
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.
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.
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.
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.
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.
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.
- 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
- 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