So after a bit more research, I’ve come up with a shortlist of laptops to consider. Most vendors (with the exception of HP and Microsoft) give you quite a few options to customise during the order process. For my own reference, I’ve also included the specs of my current laptop – the Dell XPS 1645 – to contrast how hardware has progressed over the last 5-6 years.
My mandatory minimum requirements:
- i7 CPU
- 8GB memory
- 512GB SSD
- Touch screen
- Lighter than 3Kg
Nice to haves:
- Xeon CPU
- 16GB memory
- PCIe SSD
Laptop feature comparison
| | Dell XPS 1645 (Circa 2010) | Dell XPS 13(9350) | Dell XPS 15 (9550) | Dell Latitude E7450 |
HP ZBook Studio 15 E3 Mobile Workstation
ThinkPad X1 Yoga - Core i7
Microsoft Surface Book
||Core I7-820QM Processor (1.73GHz)
||i7-6500U (up to 3.1 GHz)
||i7-6700HQ Quad Core (up to 3.5 GHz)
||i7-5600U Processor (Dual Core, 2.6GHz, 15W)
||Xeon® E3-1505M v5 (2.80 GHz, up to 3.70 GHz), 4 cores)
Intel Core i7-6600U Processor (up to 3.40GHz)
(2.6 up to 3.4 GHz)
||8GB Dual-channel 1333MHz DDR3 SDRAM (2 x 4GB)
||8GB LPDDR3 1866MHz
||16GB Dual Channel DDR4 2133Mhz (8GBx2)
||8GB (1x8GB) 1600MHz DDR3L
||8 GB DDR4-2133 (1 x 8 GB)
||16GB LPDDR3 SDRAM 1866MHz
||500GB 7200RPM SATA Hard Drive
||256GB PCIe Solid State Drive
||512GB PCIe Solid State Drive
||256 GB HP Z Turbo Drive PCIe SSD
512GB Solid State Drive, PCIe-NVMe
||Video Card -ATI Mobility RADEON(R) HD 4670 - 1GB
Intel(R) HD Graphics 520
|NVIDIA® GeForce® GTX 960M with 2GB GDDR5
Intel® Integrated HD Graphics 5500
|NVIDIA® Quadro® M1000M (2 GB dedicated GDDR5)
Intel HD Graphics 520
Intel HD Graphics 520
+ Nvidia GeForce 940M GPU with 1 GB of memory
||15.6 Full High Definition(1080p)
||13.3 inch QHD+ (3200 x 1800) InfinityEdge touch
||15.6” 4K Ultra HD (3840 x 2160) InfinityEdge touch
||14.0 FHD (1920x1080)
||15.6” diagonal FHD UWVA IPS anti-glare LED-backlit (1920 x 1080)
14” FHD (1920x1080), IPS, 10-point Multi-Touch
|13.5” PixelSense™ 3000 x 2000 (267 PPI) 10 point multi-touch
||Wireless Network Card -Intel(R) WiFi Link 5300 (802.11a/g/n) Half Mini-c
||DW1820A 2x2 802.11ac 2.4/5GHz + Bluetooth4.1
||DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1
||Intel Dual Band Wireless-AC 7265AC 802.11ac/a/b/g/n 2x2 + Bluetooth 4.0 LE
||Intel® Dual Band Wireless-AC 8260 802.11 a/b/g/n/ac (2x2) Wi-Fi and Bluetooth® 4.0 combo
||Intel Dual Band Wireless-AC 8260, 2x2, Wi-Fi + Bluetooth 4.1, vPro
802.11ac Wi-Fi wireless networking; IEEE 802.11a/b/g/n compatible
||9-cell (85WHr) Lithium Ion
||56WHr Integrated Battery
||4-cell 52 Whr Lithium Polymer
||4-cell 64 WHr Li-ion prismatic
4 Cell Li-Polymer Battery 52Wh
|Dimensions (W x D x H)
||380 x 260 x ?
||304 x 200 x 15
||357 x 235 x 17
337 x 232 x 20
|375 x 255 x 18
||333 x 229 x 17
||232 x 312 x 23
||3-Year Premier Service
||3Yr ProSupport : Next Business Day Onsite Service
||3Yr ProSupport : Next Business Day Onsite Service
||3 Yrs Next Business Day Onsite Service
||3 years standard parts, labour and on-site limited warranty
||3Y On-site NBD upgrade from 1Y Depot/CCI
||2-year hardware warranty
|Price (as at 25th Feb 2016)
||$2,100 (as at 2010)
- Where choice was offered, maximum CPU and memory selected
- All prices in Australian dollars, including GST. Enterprise agreements or other arrangements/discounts/specials might give better prices.
- Enterprise and/or special business programs may offer additional hardware choices/customisations.
- Where offered, 3 year support was chosen
- No Office subscription was included
- Windows 10 Pro 64bit
I think I’ll forget about a Xeon CPU - can’t justify the premium price. Maybe one day!
Most of these devices have built-in batteries, so the option of buying a spare battery (like I did with my 1645) simply doesn’t exist these days.
Looking at that list, I think the models that stand out are the XPS 15, X1 Yoga and Surface Book. I’ve probably been looking most closely at the Yoga, but the XPS deserves some closer attention – especially as the price seems a bit more affordable. The Surface Book looks nice, but for me I think it’s in 3rd place behind the other two.
Let me know of any corrections or suggestions for other models that I should consider and anything I’ve overlooked.
As part of their support for user groups, O’Reilly sent me a free copy of “Why: A Guide to Finding and Using Causes ” by Samantha Kleinberg to review.
Kleinberg is an Assistant Professor of Computer Science, so I was interested to see what she had to say about finding “causes”. It probably wouldn’t be the first book I chose if I was browsing, but I’m always interested in learning new things.
What I liked about this book was the use of written examples and illustrations. The first chapter opens with the story of Sally Clark. A tragic miscarriage of justice that resulted in Clark serving 3 years in prison for the murder of her babies. One of the significant pieces of evidence that was used to convict Clark was the suggestion that the probability of two babies dying of SIDS was 1 in 73 million. This is wrong, because the witness (a medical expert) didn’t understand statistics and probability. The expert witness believed Clark was the cause of death the two babies.
The Clark story isn’t the only one told. I’m glad for the generous sprinkling of those examples – without which it would be pretty dry going. It is very helpful to bring things back to something you can relate to.
A warning, this is a pretty in-depth book. I can’t say I found it an easy read, but there’s plenty of detail there.
Before reading this book I guess I assumed that finding the cause for something was a pretty straight forward. Turns out the correct method is “it depends”.
Trying to identify the real cause of an event is not always easy. Kleinberg takes us on a journey to better understand ways (and there are more than one) of finding causes – Beginnings (concepts), Psychology (how do we learn about causes), Correlation (correlation and causation aren’t the same thing), Time, Observation (watching to learn), Computation (automating the process), Experimentation (experiments and research), Explanation (this caused that), Action (making decisions).
The writer comes from the Computer Science field but she writes in a generally accessible (if a little bit academic) way. There are plenty of references (the notes and bibliography take up a not insignificant amount of the book). I noticed a lot of examples were medically-related, so if you work in the medical field, then I think you would get a lot out of it too.
Finally, a suggestion for the title of the sequel – “Just Because”
The “Roslyn” Analyzers are a great new feature that shipped in Visual Studio 2015. One nice thing about them, is you can still add them to a project even if the target platform for a project is not .NET 4.6. This makes sense, as the analyzers just run as part of the compiler – they don’t affect the generated code in any way.
This also means you can safely add analyzers to a project and get all the warnings/errors when using Visual Studio 2015, but you can still open the same project in an older version of Visual Studio and the analyzers are just ignored.
Sometimes you want to suppress a specific warning. It turns out there’s two ways to do this:
The first is the same that you would have done to suppress an old FxCop/Code Analysis violation – using the System.Diagnostics.CodeAnalysis.SuppressMessageAttribute attribute.
It turns out, the only bit that Roslyn really cares about is the second parameter. As long as it starts with a valid CheckId, then that violation will be suppressed. My observation is that the first parameter (category) doesn’t seem to matter too much.
The new compiler is much more flexible in disabling warnings and errors. You can now use a compiler pragma to disable a particular warning or error code – and the code isn’t just for the C# language, it can be for an analyzer too. eg.
#pragma warning disable SA1514
One advantage to using pragmas is that you can re-enable them if you want to limit the scope of the pragma to just a particular block of code in a single file.
The only problem with the pragma approach above is if you try and compile the source code with the older non-Roslyn C# compilers. They haven’t ever heard of this ‘SA1514’ that you’re referring to and will generate a compiler error. The workaround is to wrap the pragmas with a conditional block, like this:
#pragma warning disable SA1514
The final part is to define ‘VS2015’. Do this by editing the .csproj file and adding the following block (insert it after the last configuration/platform-specific PropertyGroup)
<DefineConstants Condition="$(VisualStudioVersion) >= 14 ">$(DefineConstants);VS2015</DefineConstants>
This has the effect of defining a conditional constant only when we’re compiling with Visual Studio 14 (aka 2015) or above. For earlier versions, the constant is undefined and so the pragma is not visible to the compiler.
I thought it might be my imagination, but running
powercfg.exe /batteryreport shows the truth – my laptop battery isn’t what it used to be.
Battery capacity history
| PERIOD | FULL CHARGE CAPACITY | DESIGN CAPACITY |
| — | — | — |
| 2015-11-17 - 2015-11-23 | 5,656 mWh | 6,600 mWh |
| 2015-11-23 - 2015-11-30 | 5,480 mWh | 6,600 mWh |
| 2015-11-30 - 2015-12-07 | 5,177 mWh | 6,600 mWh |
| 2015-12-07 - 2015-12-14 | 5,177 mWh | 6,600 mWh |
| 2015-12-14 - 2015-12-21 | 5,177 mWh | 6,600 mWh |
| 2015-12-21 - 2015-12-28 | 5,177 mWh | 6,600 mWh |
| 2015-12-28 - 2016-01-04 | 5,129 mWh | 6,600 mWh |
| 2016-01-04 - 2016-01-11 | 4,059 mWh | 6,600 mWh |
| 2016-01-12 | 3,276 mWh | 6,600 mWh |
| 2016-01-13 | 3,276 mWh | 6,600 mWh |
| 2016-01-14 | 3,276 mWh | 6,600 mWh |
| 2016-01-15 | 3,276 mWh | 6,600 mWh |
| 2016-01-16 | 3,276 mWh | 6,600 mWh |
| 2016-01-17 | 3,276 mWh | 6,600 mWh |
| 2016-01-18 | 3,276 mWh | 6,600 mWh |
| 2016-01-19 | 3,276 mWh | 6,600 mWh |
| 2016-01-20 | 3,276 mWh | 6,600 mWh |
| 2016-01-21 | 3,276 mWh | 6,600 mWh |
| 2016-01-22 | 3,276 mWh | 6,600 mWh |
This is not the original battery that came with my Dell XPS 1645. I originally had two 90mWh batteries, but both of those wore out. The current replacement was the only one I could find online (from a 3rd party – unfortunately Dell weren’t selling theirs anymore). I bought the 1645 back in 2010, so it will turn 6 in April – that’s not a bad effort for a laptop that has been lugged around a fair bit.
And so my mind now turns to thinking about getting a replacement laptop…
My initial specs are:
- Gen 6 i7 or Xeon CPU
- Minimum 16GB RAM (Prefer 16 would not be the maximum)
- Minimum 512GB SSD (Ideally PCIe interface)
- Decent screen resolution
- Lighter than my 1645 (3.06KG/6.6lb according to the kitchen scales)
- A bit smaller than the 1645 (380x260mm)
Let me know if you have any other suggestions or recommendations?
There’s been a few announcements lately that will interest you if you’re a developer:
Know it. Prove it.
Microsoft Virtual Academy are running their “Know it. Prove it” challenge again during the month of February. It’s a chance for you to focus on learning something new in one of up to 10 ‘learning challenge’ areas. Register at the site to track your progress towards completing one (ore more) of the challenges and also earn some TechReward points (which you can redeem for actual stuff).
Executable Specifications in .NET with Storyteller 3
Next week JetBrains are hosting a webinar from Jeremy Miller on Storyteller, a tool for creating executable specifications in .NET. As well as creating Storyteller, you might also recognise Jeremy as the author of StructureMap. Register here to watch it live. Hopefully a recording will appear on the JetBrainsTV YouTube channel at a later date, as it turns out to be 1.30am in my time zone.
Pluralsight are running hack.summit() a 4 day virtual developer conference, February 22-25. Speakers include well-known names such as Jon Skeet, Kent Beck, Joel Spolsky, Bob Martin and Yehuda katz. Register via the website – the cost is a donation to charity OR sharing the event on Twitter or Facebook.
DDD Melbourne 7
The date has been fixed for this year’s DDD Melbourne – Saturday, August 13th. That’s a week and a bit after NDC Sydney, if you were wondering. Speaking of Sydney, looks like they’ll also be hosting a DDD there sometime this year too (no date announced yet).