Saturday, December 03, 2016

2016-12-03 Saturday - Vulkan 3D Programming

There are some interesting practical applications of 3D visualization technologies to many commercial businesses - if you have heard of OpenGL  - you might want to keep an eye on Vulkan as it continues to mature. Note the CPU and Memory utilization and lag differences in this side-by-side comparison

https://www.khronos.org/ 
https://www.toptal.com/api-developers/a-brief-overview-of-vulkan-api

https://vulkan-tutorial.com/

 
https://github.com/GPUOpen-Tools/CodeXL

Friday, November 04, 2016

2016-11-05 Saturday - Enterprise Search

I'm doing a bit of a refresh on the latest Enterprise Search options that are out there - and will use this blog post as my placeholder for my notes. Hopefully this will become a useful resource for others too.

Initially, I intend to examine the following (but may add others as time permits):

General Search Articles


 Apache Solr Related Articles

Apache Lucene Related Articles

Elasticsearch Related Articles

 

Comparison Articles



Search Related Books

Friday, October 14, 2016

2016-10-14 Friday - The 2016 Top Programming Languages

The 2016 Top Programming Languages

http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages

2016-10-14 Friday - Is REST Holding Your API Performance Hostage?

Github's recent adoption of Facebook's GraphQL has me reconsidering ways to approach API design for my own clients...
There is no silver bullet (or free lunch) to balancing the concerns of performance, complexity, and minimizing leaking-the-abstraction - but there are very powerful and compelling advantages to the GraphQL approach that are worthy of your consideration in your approach to building APIs that minimize long-term maintenance, network latency, and providing greater flexibility to your service consumers

Saturday, August 27, 2016

2016-08-27 Saturday - Apache Tomcat / TomEE start-up takes forever

I've just installed Apache Tomcat 9.0.0.M9 and Apache TomEE 7.0.1 today - and encountered a curious issue with the start-up taking forever (for either one) - well, at least longer than a minute...

Some folks report much longer "hang" times...

I've also installed Apache Tomcat 9.0.0.M9 on a different laptop (Windows 7) - and the start-up is normal (~1+ second)

On my primary development laptop (MSI, Windows 10, Java 1.8.0_102-b14) - the start-up takes ~1 minute+

I happened across this article:

which suggested changing the protocol from "HTTP/1.1" to "org.apache.coyote.http11.Http11NioProtocol"

Problem solved - for now - until I have time to dig into this more and determine root cause.

Some folks have suggested this problem is due to a lack of entropy in the OS...

Given the above, the recent Python 3.6 release included a change that caught my eye

 

Saturday, August 13, 2016

2016-08-13 Saturday - Nvidia GTX Titan X

Nvidia unveils new GTX Titan X: 11 teraflops,
3584 CUDA cores, 12GB of GDDR5X memory, 480GB/s of memory bandwidth
http://arstechnica.com/gadgets/2016/07/gtx-titan-x-pascal-specs-price-release-date/

Wednesday, August 10, 2016

2016-08-10 Wednesday - MonkeyLearn.com Machine Learning Tutorials


In the most recent O'Reilly Media Data Newsletter - there is a link to an interesting Machine Learning tutorial (using the MonkeyLearn platform - which has a free tier of usage)
https://blog.monkeylearn.com/machine-learning-1m-hotel-reviews-finds-interesting-insights/


https://github.com/monkeylearn/hotel-review-analysis

Thursday, July 28, 2016

2016-07-28 Thursday - Cloud Foundry Research

I'm putting in some effort to deepen my understanding of Cloud Foundry...and thought that others might find my 'background reading' list of some use...


https://www.cloudfoundry.org/

http://www.slideshare.net/EnikTrk/cf-summit-2016-review
see slide #6,

http://www.slideshare.net/geekclub888/multicloud-microservices-with-cloudfoundry
...a fairly good / detailed discussion...re: microservces on Cloud Foundry

http://www.slideshare.net/nicholsr/platform-as-a-service-cloudfoundry-and-ibm-bluemix
see slide #6, #16

http://www.slideshare.net/AnimeshSingh/ibm-bluemix-architecture-and-deep-dive-powered-by-cloudfoundry
http://www.slideshare.net/IanLynch1/bluemix-overview
http://www.slideshare.net/fgeorg/enterprise-paas-cloudnative-architecture-and-microservices



Video Presentations...

https://blog.pivotal.io/pivotal-cloud-foundry/features/deploying-microservice-architectures-with-pivotal-cloud-foundry

https://www.infoq.com/presentations/Cloud-Foundry-Tips

https://www.infoq.com/presentations/Cloud-Foundry-Architecture

https://www.infoq.com/presentations/Cloud-Foundry-Inside-the-Machine

https://www.infoq.com/interviews/kromhout-cloudfoundry


Cloud Foundry Youtube Videos...
https://www.youtube.com/channel/UC0ZYS0Y7b5oiVLvxGf4magw

Cloud Foundry Summit 2015 videos
https://www.youtube.com/playlist?list=PLhuMOCWn4P9g-UMN5nzDiw78zgf5rJ4gR

Cloud Foundry Summit 2016 videos
https://www.youtube.com/playlist?list=PLhuMOCWn4P9iqBDITU3bY6drETEwPMVpd


Pivotal Cloud Foundry reading...

https://pivotal.io/platform
http://docs.pivotal.io/

https://www.infoq.com/news/2015/11/pivotal-cloud-foundry-netflix

http://nordicapis.com/microservices-architecture-the-good-the-bad-and-what-you-could-be-doing-better/

2016-07-28 Thursday - Converged Infrastructure

I've been doing some research today on the topic of Converged Infrastructure, and thought these links might be of interest to others...

General Concept: Converged Infrastructure
http://www.slideshare.net/chaitanyag1/point-of-view-converged-infrastructure


VBlock

http://www.slideshare.net/Ciscodatacenter/vce-vblock-overview

http://www.slideshare.net/esteinmetz/vblock-infrastructure-platforms
see slides #10, #12

http://www.slideshare.net/EMCnederland/vce-vblock-systems
see slide #8

http://www.slideshare.net/esloof/vblock-infrastructure-packages-integrated-bestofbreed-packages-from-vmware-cisco-and-emc
see slides #5, #7, #8, #15,

http://www.slideshare.net/PuppetLabs/case-study-developing-a-vblock-systems-based-private-cloud-platform-with-puppet-and-vmware-vcloud-suite-puppetconf-2014

Tuesday, July 12, 2016

2016-07-12 Tuesday - Free Architecture Tool Resources

A colleague recently asked me for suggestions of possible free or Open Source tools for use in crafting the Architecture of a solution.  Here's the response I provided...

You might find this recent white paper of interest...
Journal of Object Technology, vol. 14, no. 1, 2015,
Evaluating the capabilities of Enterprise Architecture modeling tools for Visual Analysis
Department of Systems and Computing Engineering, Universidad de los Andes, Colombia
http://www.jot.fm/issues/issue_2015_01/article3.pdf


Open Source Diagramming / Architecture Tools...

Not sure about these...haven't spent any time exploring them yet...

  • http://www.adoit-community.com/

  • https://www.iteraplan.de/en/editionen/


I've found Graphviz to be useful for automating diagram generation from any available metadata sources...

...but today, I would look at adopting D3.js - for some stunning diagramming capabilities...

SchemaSpy is a great tool for auto-generating HTML documentation of existing database schemas - and it leverages graphviz behind the scenes to auto-generate diagrams...

this appears to be a more actively maintained type of database schema doc tool..

There are some useful plugins available within the Eclipse ecosystem - and the latest version of Eclipse (4.6, Neon) was just recently released

The plugins that I've found useful:

Some examples, specific to modeling efforts:

http://www.archimatetool.com/

Diagramming tooling...some are Open Source...some are free (or have limited-use restrictions) - some  have UML/Archimate/etc. support...


Tuesday, July 05, 2016

2016-07-05 Tuesday - Enterprise Architecture Heat Maps

Today I'm doing some background reading on generating Enterprise Architecture Heat Maps.

I've begun assembling my notes in this github markdown document:
https://github.com/intltechventures/Lab.Architecture/blob/master/HeatMaps/HeatMaps.md

Tuesday, June 28, 2016

2016-06-28 Tuesday - Eclipse Neon

The Eclipse IDE, 4.6 "Neon", was released on June 22nd...
https://www.eclipse.org/neon/noteworthy/

I've added a section to my notes for the plug-ins that I'm using with Neon
https://github.com/intltechventures/EclipseNotes

Friday, June 03, 2016

2016-06-03 Friday - Technical Proofer (TP) & Technical Development Editor (TDE)

Based on the quality of my previous contributions as a Manuscript Reviewer, I have been Invited by Manning Publications to participate in the Technical Proofer and Technical Development Editor programs. Looking forward to continuing to contributing to the process of bringing great technical books to the market.

2016-06-02 Thursday - Go 1.7 beta

Go 1.7 Beta released this week

Thursday, June 02, 2016

2016-06-02 Thursday - WS02 Refresh

Doing a refresh on my knowledge of the WS02 technology stack and product offerings...will continue to publish my notes here:
https://github.com/intltechventures/Lab.Architecture/blob/master/CloudComputing/WS02/WS02.md

It has been a few years since I last looked at the WS02 product offerings (previously evaluated their ESB and Registry/Repository for a client's Enterprise SOA initiative).

Here are links to my findings and JIRA issues submitted during my 2008 evaluation of WS02...

It was around this time that I also evaluated the MuleSoft Registry/Repository offering (Galaxy)



Wednesday, May 25, 2016

2016-05-25 Wednesday - Fixing my GDB (and Eclipse CDT Debugging capability)

I previously had my Windows 10 development machine configured to successfully develop and debug C++ programs from within Mars Eclipse - leveraging CDT and Cygwin.

I recently made some changes to my system configuration - and broke my Cygwin GDB debugging functionality.

After spending a few hours exploring the problem, I thought sharing this post might help someone else minimize their cycle time if they have a similar problem...

The first clue was in a Windows Command Prompt, I got the following error when trying to launch GDB:
"ImportError: No module named site"
Also, in Eclipse, when attempting to launch the debugger for a C++ program, I encountered this error message:
 "Could not determine DGB version using command gdb --version"
I  read several forum postings - and these were the relevant takeaways:
Now, in my environment, I had setup Python 2.7.11 and Python 3.5.1 - and since GDB relies on Python 2.7 - I thought, "ah, perhaps one of my library installs / updates has resulted in a broken dependency situation". So, I uninstalled and re-installed them both. 
No joy.
I then uninstalled and re-installed Cygwin.
No joy.
Then I tried alternating where PYTHONHOME and PYTHONPATH pointed...to 2.7 vs 3.5
No joy.
Finally, I removed the System Variables for PYTHONHOME and PYTHONPATH.
Success. 
When in the Cygwin bash shell (or Windows Command Prompt window) - the Windows System Variables for PYTHONHOME and PYTHONPATH were conflicting with the Python 2.7 version that is bundled with Cygwin - and a dependency for GDB.

So I then just added the dir for Python 3.5 directly to the PATH environment variable. 

Problem solved.

Sunday, May 22, 2016

2016-05-22 Sunday - Open Broadcaster Software


An interesting bit of Open Source software - possibly a good tool for recording instructor-led training material?

OBS Studio (formerly known as OBS Multiplatform) is a complete rewrite of the original OBS from the ground up, with the main goals being multiplatform support, a more thorough feature set, and a much more powerful API. While still in its early stages, releases are currently available for Windows, Mac and Linux.
OBS Studio will eventually support many of the advanced requested features not present in the original OBS, such as multiple stream outputs and scene previewing, the latter of which is now available in the current release.

Open Broadcaster Software is free and open source software for video recording and live streaming. Supported features include:
  • Encoding using H264 (x264) and AAC.
  • Support for Intel Quick Sync Video (QSV) and NVENC.
  • Unlimited number of scenes and sources.
  • Live RTMP streaming to Twitch, YouTube, DailyMotion, Hitbox and more.
  • File output to MP4 or FLV.
  • GPU-based game capture for high performance game streaming.
  • DirectShow capture device support (webcams, capture cards, etc).
  • Windows 8 high speed monitor capture support.
  • Bilinear or lanczos3 resampling.

2016-05-22 Sunday - Exploring Lattice Graphs in R

I'm exploring the Lattice Graphs library in R today...

Some background reading:

Wednesday, May 18, 2016

2016-05-18 Wednesday - My Protocol for Learning New Technologies

A former colleague pinged me today, asking how do I go about learning new technologies...here's the slightly edited version of the response that I wrote: 

Depending on the specific technology, and whether you are going for depth or breadth, might well change how I would answer that question. Here's my general approach though: 

1) I usually first read the formal specification, the relevant RFCs, standards

2) I often assemble a Twitter List of the noteworthy companies and individuals that are contributing or are the thought leaders in that given technology 

3) I create a github project as my laboratory for experimenting with the technology (showing your work, and making it visible helps to motivate me to keep plugging away). Within the github project - usually using a naming convention of "Lab.xxxxxx..." I create a README file with links to references, tutorials, interesting articles, blogs, etc.  

4) I usually attend 1-2 conferences per year (https://qconsf.com/ is one of my favorites - it gives me the greatest opportunity to hear about a wide diversity of technologies - from a globally represented attendee roster. http://thestrangeloop.com/ in St. Louis is another good conf. for leading edge technology trends that may not be widely adopted yet - but are going to be very popular in 3-5 years - but some sessions can be a bit esoteric. 

5) I spend quite a bit of money every year buying books - and not just on the specific thing I'm learning - but on peripheral areas as well. My Kindle probably has over 100+ technical books on it - as well as whitepapers, references, etc. 

6) If a technology has a special niche in the area of algorithms, I usually read 4-6 academic research papers on the relevant current research for that area. 

7) I've found membership in the IEEE and ACM to be very useful to stay abreast of leading edge research and trends.  

8) I'm constantly downloading and experimenting with new Open Source software  

9) I read a lot of source code for Open Source software projects 

10) I usually attend 3-5 tech meetups in the Seattle area per month  

11) I have a few small personal software development projects that I continue to nurture privately, as a test bed for my experimentation with new technologies - for example, one is a code generation tool that can be pointed at a database schema and it will generate all of the SQL stored procedures, base object classes, etc. for over a dozen languages (~650K+ lines of code generated in less than 90 seconds)

12) Using Coding Exercises, for example, 99 Scala Problems
http://aperiodic.net/phil/scala/s-99/

Sunday, May 15, 2016

2016-05-15 Sunday - Oden Functional Language for the Go Ecosystem

This looks like an interesting talk scheduled for the Curry On conference in Rome (July 18-19, 2016), by Oskar Wickström, entitled: "Oden - A Functional Programming Language for the Go Ecosystem"

Abstract "..Oden, an experimental, statically typed, functional programming language being built for the Go ecosystem.. aims to leverage the great features of Go — static linking, cross-compilation, goroutines, channels and the great set of libraries and tools — and enable higher-level abstractions, generics and a safer yet more flexible type system."

http://www.curry-on.org/2016/sessions/oden-a-functional-programming-language-for-the-go-ecosystem.html

2016-05-15 Sunday - 99 Problems

How do you go about learning a new language?

If you are like most folks, you probably have some simple app that you build for any given language that you might want to learn.

This is an interesting article, that articulates 99 problems - which is an interesting consistent way of approaching learning any new language...in particular, this specific article is Scala focused - which is convenient given my current research focus...
http://aperiodic.net/phil/scala/s-99/

Tuesday, May 03, 2016

2016-05-03 Tuesday - GCC 6.1

http://www.infoq.com/news/2016/05/gcc61-released

Today I've pulled the latest source code for the GNU GCC 6.1 compiler - reading great code is critical to becoming a better engineer.

Here are some links that may be of interest to others...

Monday, May 02, 2016

2016-05-02 Monday - Time Series Analysis and Its Applications

During my current exercise to master the R programming language (MITx: 15.071x The Analytics Edge) - I happened to come across the web site for an interesting book today...
http://www.stat.pitt.edu/stoffer/tsa3/

Time Series Analysis and Its Applications: With R Examples, Third Edition
by Robert H. Shumway
and David S. Stoffer, Professor in the Department of Statistics at the University of Pittsburgh

The R package for the text is called asta (Applied Statistical Time Series Analysis)

You may be interested in the change log notes (latest version appears to be 1.3, Nov 2014)
http://www.stat.pitt.edu/stoffer/tsa3/xChanges.htm

They have also made available a free 200 page EZ Edition of the material
http://www.stat.pitt.edu/stoffer/tsa3/tsa3EZ.pdf

David S. Stoffer also collaborated with Randal Douc and Eric Moulines to write: Nonlinear Time Series: Theory, Methods, and Applications with R Examples
also available on Amazon

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
http://www.amazon.com/Understanding-Machine-Learning-Theory-Algorithms/dp/1107057132


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
http://www.amazon.com/Foundations-Machine-Learning-Adaptive-Computation/dp/026201825X

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.
https://github.com/intltechventures/Lab.Windows2016

Wednesday, April 27, 2016

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

https://github.com/intltechventures/Consulting.Project.Tools/blob/master/templates/HighLevelDesign.md

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 this...at 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 serves 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.)

https://github.com/intltechventures/Consulting.Project.Tools/blob/master/taxonomies/ClassificationCodes.md

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.

Note:
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 Frys.com)
  • 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
  • G-SYNC THUNDERBOLT 
  • 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)
http://jpmens.net/2016/03/05/a-shell-command-to-create-json-jo/

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
https://www.manning.com/books/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.

Wednesday, April 20, 2016

2016-04-20 Wednesday - Are You Serious About Innovating?

https://www.linkedin.com/pulse/you-serious-innovating-kelvin-meeks

I've been pondering this question lately - and thought that sharing this small sample of my own introspective questions might benefit others who struggle with nurturing the seed of innovation within organizations.

This is written from the specific perspective of a software engineering discipline – but is applicable to so many different types of organizations and teams.

Further, these thoughts are based on a slightly constrained premise that you have an existing product/service - and that stagnation has set in - and your innovation muscles have atrophied...

Questions that you might want to consider, in assessing whether your organization is serious about innovation…

1. Does your culture allow for errors and mistakes? If your organization operates under a threat of punishment and fear – how will your engineers ever have the courage to try something new and potentially innovative? I recently heard a CTO proudly state: “We have a perfect track record of tech choices and implementation so far, and we don't want to risk that”. A search of review comments on his company’s Glassdoor page – appears to reflect what I expected - a culture of fear and punishment. Which begs the question – are his engineers too afraid to try something new? Are yours?

2. Do you plan – and give your engineers time to “throw the first one away”, especially for critical new  components? If you are racing to the finish on every release – how much of your solution is designed (for maintenance, for scalability, for extensibility) – and how much is simply hacked together? How much innovation can be introduced – if there is no luxury of time for trial-and-error?

3. As an engineering organization, do you periodically do collective code reviews and discussions of innovative Open Source software projects to glean great ideas? More specifically, for the individual, I think there are five essential practices to becoming a world-class innovative engineer:
  • Read great code written by others;
  • Write a lot of code – with intent - focused on solving meaningful problems;
  • Be willing to experiment;
  • Constantly be re-learning your craft (patterns, algorithms, new developments, etc.);
  • Share what you learn
4. If you did a poll of your engineering group – and ask them what books they are reading, how many would have a ready answer? What percentage are focused on your current technology stack – and what percentage are looking further afield? Innovation benefits from cross-pollination of ideas.

5. What are you doing to support access to innovative ideas and continued professional development within your engineering group? Do you have a corporate Safari account program in place? Why not? When was the last time you invited an innovative leader to give a talk to your engineering group?

6. How many of your engineering group are members of the IEEE and ACM? Those two organizations provide access to their Digital Libraries – and are a wealth of ideas for innovation. Here’s a tip: Provide your engineering group with reimbursement for their membership dues. But that doesn’t go far enough. You need to close the circle. Institute a monthly discussion forum in which a rotating set of people present innovative ideas that they have gleaned from the latest papers, journal
articles, etc.

7. Do you have a wiki for collecting links to innovative articles and Open Source projects? Sometimes the flood of new things is overwhelming – but you can at least have a process for organizing information and curating it for later re-discovery.

8. When is the last time you sent any of your engineering group to a conference? It isn’t about picking-up new skills – it is about the exposure to ideas – and the invigorating surge of energy that is shared by being exposed to a large collection of people that are doing innovative leading-edge things. Sure, they could watch conference talks on Youtube – but that isn’t nearly as effective in achieving the transmission of enthusiasm...nor does it help you in spotting potential new candidates to recruit for your engineering group – or communicate with enthusiasm some of the interesting new problems your group is tackling.

9. Is there some bit of code, tooling, etc. that you could Open Source – that might be beneficial to the Open Source community at large? Trust me, being supportive of your engineers’ effort to Open Source something (that is truly meaningfully useful) will repay itself in all kinds of ways that you cannot imagine. Second best – lend some portion of your engineering team’s efforts to support an existing Open Source project. Again, the payback in innovation, enthusiasm, pride, etc. is beyond what you can imagine.

10. How much of your engineering development effort is allocated to re-factoring? Unless your code base is of a trivial size – planning for re-factoring efforts needs to be part of your technology road-map. That’s also where innovation can seep back into your solution.

11. Do you have a formal Innovation Reward Program? Why not? If your business is driven by software, or derives value from the software that runs it – you are insane to not have a formal Innovation Reward Program. Establishing a culture of financially rewarding people for game-changing innovative ideas is moral, equitable, and in your best interest. Your business is people. Your best, most vital asset, is people. Take care of your people, and they will take care of you. Invest in them. Reward your people in proportion to the value they create. If someone in your engineering group creates a solution that will reduce costs by 10% - why not give them 1% of that reduction as an Innovation Reward? Reward the behavior that is beneficial – and eventually, it will stifle the behavior that isn’t.

12. Are your key business processes documented? Without first assessing what you do - and how you do it, and understanding the underlying cost/value of that activity - how will you prioritize and drive change with a focus on First Things First?

13. Have you done time-motion studies of your key critical process flows? Why not? How could they be reworked to dramatically improve efficiency and eliminate waste - to provide an innovative competitive advantage?

14. Do you actively listen to your end users and HEAR what they need and want? I was once brought in to consult to a major software engineering group on the East Coast - to help alleviate some amorphous and undefined problem that Executive Management didn't want to specify. The Director of Engineering was quite proud of the fact that they had Nobel Prize winners in their organization - and that his group did 26 releases a year. But when I interviewed their end users (in another State) - their biggest complaint was that they were underwhelmed by the slow/buggy behavior of the application - and were not pleased with 26 changes foisted upon them per year. Sometimes the Art of Listening with Intent - is the missing ingredient to achieving breakthrough innovation.

A critical component of sustained innovation is establishing a virtuous feedback loop of positive reinforcing behavior. Change doesn't happen overnight, but with the right incremental steps, support, and nurturing - any organization, in any field of endeavor, can be changed into an innovation dynamo.

My name is Kelvin Meeks, and I help software engineering organizations achieve breakthroughs in changing their culture, envisioning  new products and capabilities, introducing innovative new architectures, and achieving breakthroughs in performance & scalability.

2016-04-20 Wednesday - Exploring Apache SINGA 0.3.0, A General Distributed Deep Learning Platform

Exploring today's Apache SINGA 0.3.0 release, A General Distributed Deep Learning Platform
http://singa.apache.org/docs/overview.html
"SINGA is a general distributed deep learning platform for training big deep learning models over large datasets. It is designed with an intuitive programming model based on the layer abstraction. A variety of popular deep learning models are supported, namely feed-forward models including convolutional neural networks (CNN), energy models like restricted Boltzmann machine (RBM), and recurrent neural networks (RNN). Many built-in layers are provided for users. SINGA architecture is sufficiently flexible to run synchronous, asynchronous and hybrid training frameworks. SINGA also supports different neural net partitioning schemes to parallelize the training of large models, namely partitioning on batch dimension, feature dimension or hybrid partitioning."

Tuesday, April 19, 2016

2016-04-19 Tuesday - VirtualBox Host-Only Ethernet Adapter Problem


2016-04-19 3:35pm Update:
Uninstalling 5.0.16, rebooting, and doing a clean install of 5.0.18 appears to have resolved my issue.

I'm researching an issue setting up a VirtualBox Host-Only Ethernet Adapter in a Mint 17.3 Linux Guest OS (on Windows 10). Note: I have successfully configured this in a prior version (4.3.x) of VirtualBox.

You can see the error below.

I've been using VirtualBox 5.0.16 - but will uninstall and upgrade to the latest (5.0.18) today.

It is worth noting that I do have a Host-Only Ethernet Adapter installed - and Windows reports that the driver is up-to-date (confirmed, after I removed the device, and had it re-install the drivers). However, it appears that there is no entry in the Properties list for a Host-Only Ethernet Adapter connection item.

A number of posts have described a similar problem - going back to several prior releases of VirtualBox.

Helpful References:

Some conjectures on how this problem might arise:
  • Not properly shutting down a Guest OS before upgrading to a new version of VirtualBox
  • Not doing a clean uninstall of VirtualBox before upgrading
  • Not physically deleting the left-over contents of the VirtualBox directory after an uninstall
  • A default Windows setting of [8] in the Windows Registry Key for MaxNumFilters
  • Possibly needing to specify this as a parameter when installing some older release of VirtualBox? 
    • -msiparams NETWORKTYPE=NDIS6
  • Not running the Windows MSI installer as Admin?
  • ...?

Error Encountered..

Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter' (VERR_SUPDRV_COMPONENT_NOT_FOUND).
Failed to attach the network LUN (VERR_SUPDRV_COMPONENT_NOT_FOUND).

Result Code:
E_FAIL (0x80004005)
Component:
ConsoleWrap
Interface:
IConsole {872da645-4a9b-1727-bee2-5585105b9eed}






Thursday, April 14, 2016

2016-04-14 Thursday - Building Lua on Ubuntu

While trying to build Lua...
https://www.lua.org/download.html
curl -R -O http://www.lua.org/ftp/lua-5.3.2.tar.gz
tar zxf lua-5.3.2.tar.gz
cd lua-5.3.2
make linux test

I encountered the following error:
fatal error: readline/readline.h: No such file or directory

All that I needed to do was:  
sudo apt-get install libreadline-dev 
 
This blog post is also worth reviewing, as it illustrates how to find the various 
version of readline
(i.g. "apt-cache search readline")
 
Note the distinction between the lib version for running an application, versus 
for developing applications.
 
 

Saturday, April 09, 2016

2016-04-09 Saturday - Installing Go 1.6 on Ubuntu


How to Uninstall golang-go on Ubuntu
http://installion.co.uk/ubuntu/vivid/universe/g/golang-go/uninstall/index.html
  • sudo apt-get remove --auto-remove golang-go

How To Install Go 1.6 on Ubuntu 14.04
https://www.digitalocean.com/community/tutorials/how-to-install-go-1-6-on-ubuntu-14-04

  • sudo apt-get update
  • sudo apt-get -y upgrade
  • sudo curl -O https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
  • sudo tar -xvf go1.6.linux-amd64.tar.gz
  • sudo mv go /usr/local
  • export PATH=$PATH:/usr/local/go/bin
     

Wednesday, March 30, 2016

2016-03-30 Wednesday - Dean Wampler Lightbend Webinar, Thursday April 7th

Dean is an old friend - so happy to promote this event on my blog...
 
Lightbend is offering a Free Webinar, Thursday, April 7, 
presentation by Dean Wampler, PhD 
 
Modernizing Infrastructures for Fast Data with Spark, Kafka, Cassandra,
Reactive Platform and Mesos
https://www.lightbend.com/modernizing-for-fast-data-with-spark

http://deanwampler.github.io/polyglotprogramming/papers/
https://github.com/deanwampler/Presentations

2016-03-30 Wednesday - Kaggle CEO, Anthony Goldbloom, Seattle Talk April 5th

Tuesday, April 5th, Anthony Goldbloom, Co-Founder and CEO of Kaggle will
give a talk in Seattle "Machine learning with R on Kaggle"
http://www.meetup.com/Seattle-useR/events/229965398/?fromEmail=229965398&rv=ea1