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 2.7 vs 3.5
No joy.
Finally, I removed the System Variables for PYTHONHOME and PYTHONPATH.
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'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 ( 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. 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

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."

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 particular, this specific article is Scala focused - which is convenient given my current research focus...

Tuesday, May 03, 2016

2016-05-03 Tuesday - GCC 6.1

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...

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)

They have also made available a free 200 page EZ Edition of the material

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.