Sunday, May 01, 2016

2016-05-01 Sunday - glibc DNS bug (CVE-2015-7547)

Dan Kaminsky has written an excellent post about the glibc DNS bug (CVE-2015-7547)

This is a critical security issue that should be high on everyone's list of patches to apply - to their Linux OS systems.

Saturday, April 30, 2016

2016-04-30 Saturday - Suggested Machine Learning Books

On the recommendation of a friend, I've ordered a book today:

Understanding Machine Learning: From Theory to Algorithms, 1st Edition, Cambridge University Press
by Shai Shalev-Shwartz and Shai Ben-David

Also, I've ordered this one too...

Foundations of Machine Learning (Adaptive Computation and Machine Learning series, MIT Press)
by Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar

Friday, April 29, 2016

2016-04-29 Friday - Windows 2016 (and Nano) Technical Preview 5

I'm spending some time this weekend exploring Windows 2016 Technical Preview 5 (and Windows Nano Server).

Here's a github project that I've started to help me organize notes and links to resources - that may also be of interest to others.

Wednesday, April 27, 2016

2016-04-27 Wednesday - A High-Level Design (HLD) Template

Rationale: Numerous times, in my travels as a consultant, I've encountered organizations in which there is no established standard/template for what should be included in an HLD. Quite often (even in organizations that ostensibly have a template), the artifacts that architects and engineers produce devolve into a wild-wild west of anything-goes. Consistency engenders repeat-ability - a worthy goal. And therefore, the intended purpose in sharing least as a starting point for further customization.

The goal of an HLD is to enable communication and coordination, both within teams and organizations - as well as serving as a tool for communication and coordination with external partners.

The HLD provides a consistent format for teams to assemble details - which support a goal of being able to reuse design artifacts - and is intended to provide sufficient information to Program/Project Management to be able to plan and coordinate large-scale development efforts. Additionally, an HLD services as an effective mechanism to support Design Review and Architecture Governance efforts.
The target level of detail is to scope the effort, provide sufficient input to the estimation process, and to clearly articulate the How of an approach.

Investing effort in the creation of the HLD is intended for larger-scoped tasks - that have some non-trivial number of unknowns, technical complexity, a high number of coordination points, or any external integration/coordination requirements.

Sunday, April 24, 2016

2016-04-24 Sunday - TiKV, a distributed KV database powered by Rust

Much goodness to grok in TiKV,
...a distributed KV database powered by Rust
...uses Raft to support Geo-Replication

"TiKV is a Distributed Key-Value Database which mainly refers to the design of Google Spanner and HBase, but much simpler (Don't depend on any distributed file system). We've implemented the Raft consensus algorithm in Rust and stored consensus state in RocksDB. It not only guarantees consistency for data but also makes use of placement driver to implement sharding (split && merge) and data migration automatically. The transaction model is similar to Google's Percolator, and with some performance improvements."

Saturday, April 23, 2016

2016-04-23 Saturday - Taxonomy of Artifact Classification Codes - updated

I've spent some time today doing a bit more organizing and extending of my working draft of a taxonomy of classification codes for various types of artifacts (e.g. proposal development, requirements, high level design, detail level design, architecture, testing, operations, training, etc.)

Still a work-in-progress, but it feels like it is beginning to congeal...

I fear I still have quite a bit of re-organization and re-structuring to do before I will be satisfied with the final product - but with what is there already - it is a decent foundation upon which others might yet build.

And so, it is worth publishing this update.  

2016-04-23 Saturday - MSI GT72 6QE Dominator Pro G Notebook Review

I've been working with a new notebook since January, an MSI GT72 6QE Dominator Pro G-034 (GTX 980M) with the 6th Generation Intel Core i7-6700HQ Skylake processor - running Windows 10.

I chose this particular model based on price, performance, features, and local store availability. 

I've had enough experience working with this new notebook to have reached some observations / conclusions that I'm willing to share...
  • This seems like a rock-solid development machine
  • I've been very pleased with the performance of the machine
  • The keyboard is comfortable, although the position of the Insert, Delete, Home, and End keys has taken a bit getting used to...
  • The screen is well lit - and resolution is fine
  • The wireless/network connectivity is good - I'm lucky to have a 1GB internet connection through Wave G Fiber
  • Disk access speeds are quite good
  • Running various Linux distributions in Oracle's VirtualBox has been snappy
  • Boot-up time is excellent
  • It is much heavier than I expected - and quite bulky - and doesn't quite fit into most of my backpacks - but 'just' fits into a rolling bag
  • The power unit is quite bulky and heavy
  • The various MSI utilities / add-ons are quite handy / nice
Given that my work often requires me to travel - the size and weight of this machine is a definite drawback. However, given that much of my software engineering interest is focused on container- based distributed architectures - this platform gives me enough horsepower to run multiple virtual machines - and is an excellent platform for GPU parallel programming experimentation (1536 CUDA Cores).  If you are interested in the software that I have installed, click here.

Udacity offers a free NVIDIA created course, Intro to Parallel Programming, Using CUDA to Harness the Power of GPUs

Available On Amazon
(although I picked mine up at a local
  • Intel® Core™ i7-6700HQ Processor(6M Cache, 2.6 GHz  - up to 3.50 GHz)
  • 4 processors
  • 24 GB SO-DIMM, GDDR5
  • 256GB M.2 SATA 
  • 1TB 7200 RPM
  • 17.3 display, 1920 x 1080 
  • NVIDIA Geforce GTX980M
  • 6 USB 3.0 ports 
  • DVD
  • 8.4 pounds 
  • 16.85 x 11.57 x 1.89 inches 

Additional Links:

2016-04-23 Saturday - Visual Studio 2015 on Windows 10 - Screen Flicker

2016-04-30 Update:
After trying a number of things, I discovered that I just needed to uncheck the box for G-SYNC

My primary development machine is an MSI GT72 6QE Dominator Pro G (GTX-980M), 6th Generation notebook with the new Skylake processor.

When launching any of the Visual Studio 2015 tools, the screen flickers constantly.

If you are experiencing the same thing, it may be due to a a bug with the new Intel HD graphics drivers for the new Skylake processors.

You may be able to resolve the issue by disabling Hyper-V with this command:
> dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Friday, April 22, 2016

2016-04-22 Friday - Jo: a shell command to create JSON

A very nice (and elegant) command line utility (Jo, a shell command to create JSON) by Jan-Piet Mens (@jpmens)

2016-04-22 Friday - Book Review: Docker In Action by Jeff Nickoloff

If you are interested in Docker, there is a new book out by Jeff Nickoloff, published by Manning that you should check out.

Docker In Action

I'm waiting for Manning to send me my copy of the book to review - will update this post after I've completed my read.