Friday, November 27, 2015

2015-11-27 Friday - Book: Universal Methods of Design

 Picked-up an excellent book this afternoon at the local Bellevue library: Universal Methods of Design, 100 Ways to Research Complex Problems, Develop Innovative Ideas, and Design Effective Solutions - by Bella Martin and Bruce Hanington

2015-11-27 Friday - Jason Baldridge, PhD, Scala tutorials

Today I'm spending some time exploring this...

Jason Baldridge, Associate Professor in the Department of Linguistics at the University of Texas at Austin.,
F11 Introduction to Computational Linguistics (with Scala)

2015-11-27 Friday - Go Conferences

This is a placeholder posting for Go Language Conferences...

Next year, The European Go Conference will be Oct 16th in Paris, at the Théâtre de Paris, 15, Rue Blanche

(was held in July in 2015 - in Denver, Colorado)

Sunday, November 22, 2015

2015-11-22 Sunday - Elasticsearch 2.0.0 GAA released on Oct 28th

There are some notable new features...

2015-11-22 Sunday - CentOS 7 Setup

I'm experimenting with setting-up a minimal CentOS 7 environment (within Oracle VirtualBox) on a Windows 7 laptop...this posting is a placeholder of information that others may find useful.

  • 'Sharpen the saw' with regards to my hands-on skills to configure and maintain a Linux virtual machine.
  • Create a pre-configured, reusable image, that I can use for future client engagements - and in preparation for some new product development I have planned for 2016.
  • As a foundation master/controller for experimenting with Ansible and Docker.

1) Install VirtualBox (I'm using the current 5.0.10 release)

2) Download CentOS (I'm using version 7)

3) Create Your CentOS virtual machine
  • For this experiment, I chose: CentOS-7-x86_64-Minimal-1503-01.iso

4) Update your packages
  • >yum update

5) Modify Network Interface Config Files
  • Locate the appropriate files in the /etc/sysconfig/network-scripts/ directory
    • For my particular installation environment, this happened to be ifcfg-enp0s03
    • Modify the following entries in the file to have these values:
      • ONBOOT=yes
      • BOOTPROTO=dhcp
    • Restart network service
      • >sudo systemctl restart network
    • Verify that you have network access
      • >ping -c 5

6) Configure NTP Synchronization
  • Check your current system time configuration
    • >sudo timedatectl
  • Set your desired timezone, for example:
    • >sudo timedatectl set-timezone America/Los_Angeles
  • Install ntp
    • >sudo yum install ntp
  • Start and Enable the ntp service
    • >sudo systemctl start ntpd
    • >sudo systemctl enable ntpd

7) Install some networking tools...
  • >sudo yum install net-tools
  • >sudo yum install nmap

8) Enable Outside Access (e.g. from the Windows 7 machine that is running VirtualBox)

9) Ansible install
  • {TODO}

10) Java install

11) Go install
  • >sudo yum install golang
    • currently appears to install v1.4

12) Python install
  • {TODO}

13) Git install
  • >sudo yum install git.x86_64

14) Connecting to a CentOS virtual machine with Eclipse

15) Install Apache Web Server (http)
  • >sudo yum install htttpd
  • >sudo service start httpd 
  • >sudo chkconfig httpd on

16) Enable Outside Access to Apache Web Server
  • Configure firewall
    • >sudo firewall-cmd --permanent --zone=public --add-service=http
    • >sudo firewall-cmd --permanent --zone=public --add-service=https
    • >sudo firewall-cmd --reload
  • Configure iptables 
    • >sudo iptables -I INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
    • To persist the changes, go to /etc/sysconfig/ - and add the following line to iptables
      • "-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT"
    • >sudo service iptables restart
  •  >sudo service httpd restart
The following resource links were helpful to me, and may also be of interest to others:
You may also want to consider ordering a digital copy of this book:

Wednesday, November 18, 2015

2015-11-18 Wednesday - QConSF 2015 Trip Report

My Testimonial:
"The confluence of diverse backgrounds, technologies, and business segments represented by a global breadth of attendees - merges into a synthesis of pure enthusiasm that provides one-and- all an opportunity to pause in our day-to-day professional challenges, and lift our heads up for a moment and embrace the realization that there are people doing extraordinary things in our industry - and as their knowledge is willingly shared - new plateaus of achievement are now within our own grasp."
Tonight I returned from my 4th - and have much to share.

The venue at the Hyatt Regency was excellent

I met some very interesting people on this trip - from many different countries - including: Italy, Australia, Belarus, Romania, India, England, Russia, Lebanon, and China.

I arrived on Sunday - and was able to meet up with three fellow attendees for drinks and dinner at The Chaya - an excellent Asian/Japanese Fusion style restaurant.

I will touch on just some of the more noteworthy sessions I attended this give you a flavor of the content that might appeal to someone likewise interested in the distributed architecture problem space.

Bill Buxton (Principal Researcher at Microsoft) gave an interesting talk on Monday morning's keynote: Avoiding The Big Crash.

I intended to attend as many of the sessions in the Architectures You've Always Wondered About track on Monday - but found myself often stepping out so as not to miss some very interesting sessions I note below.

My favorite session of the entire conference was given by Zhuoran Zhuang and Zhao Xu, who gave a phenomenally detailed presentation entitled Alibaba Mobile Infrastructure at "China Scale"

I also  enjoyed the talk given by Erran Berger (Senior Director of Engineering at LinkedIn) LinkedIn's Active/Active Evolution

My keen interest in the Go Language sessions led me to frequently drop in on in the Modern Languages in Practice track

For example:
  • Rick Hudson (Engineer at Google) did a session on Go GC: Prioritizing Low Latency and Simplicity. Surprisingly there is only one 'knob'  to turn with regards to Go GC. Rick hinted at some changes that are coming in Go 1.6 - which I need to research more.

On Tuesday, I spent time in the Containers in Practice track, and found these three sessions to be very notable:

I also managed to include a talk given by  Fangjin Yang's (co-founder of @Imply) Architecting Distributed Databases for Failure - in the Architecting for Failure track

On Wednesday, I particularly enjoyed the talk given by Jason Brown (an Apache Cassandra Core Committer) Hell is...other nodes - in the Taming Distributed Architectures track.

Making the time to step away from day-to-day responsibilities is never easy. But the investment I have made in making the commitment to  attend QConSF has paid off in so many ways: Ideas, insights, specific case studies that can be cited, bread crumbs of knowledge that give me the beginning of the trail to discovery, industry connections...and yes, not to be forgotten or marginalized...a renewed sense of enthusiasm for my profession.

Some additional links I picked-up from some twitter activity that may be of interest to others:

Brendan Gregg's Linux Performance page

So We Hear You Like Papers talk by Ines Sombra - Distributed Systems Engineer at @Fastly, and Caitie McCaffrey - Tech Lead of Observability at Twitter

Saturday, November 14, 2015

2015-11-14 Saturday - Reading Source Code: Google's TensorFlow

TensorFlow is an Open Source Software Library for Machine Intelligence

I'm spending some time this weekend reading through the source code for Google's TensorFlow
"TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google's Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well."

Some recent news stories about TensorFlow

2015-11-14 Saturday - MariaDB 10.1.8

If you are running MySQL - here's a compelling reason to switch to MariaDB 10.1.8 - for table, tablespace, temporary files, temporary tables, and binary logs encryption for Data At Rest - "with an overhead of roughly 3-5%."

MariaDB 10.1 can do 1 million queries per second

MariaDB 10.1 and MySQL 5.7 performance on commodity hardware

Monday, November 09, 2015

2015-11-09 Monday - One Week until QCon San Francisco

In one week I will be in San Francisco, attending QCon (the international software development conference - that has a strong architecture theme)

2015-11-09 Monday - Saltstack

I've recently had a team experimenting with Ansible - but have also been curious to better understand the possible benefits of Saltstack. This posting is a placeholder for notes and links to resources that may be of interest to others.

Sunday, November 01, 2015

2015-11-01 Sunday - CDN Best Practices

This posting is a placeholder for resources I find interesting - related to CDN Best Practices - that may be useful to to others...

I'm currently evaluating Amazon's AWS CloudFront as a possible CDN solution

S3 limitation on creating directory structures for serving CDN content
 see Phil P's last response - Apr 24, 2013 11:56pm
- this invalidated an assumption I had of using a CDN release directory structure with S3 - but seems to state that it could be done with an EC2 instance as a custom origin.

I also noted this entry, re: Invalidation of paths is not (?) supported with wildcards...

A question I've raised on the AWS CloudFront forums 
"Versioning and cache-control You must consider how you will update static content and deploy new versions. The CDN does not currently provide a mechanism for flushing content so that new versions are available. This is a similar challenge to managing client side caching, such as in a web browser."
"Testing It can be difficult to perform local testing of your CDN settings when developing and testing an application locally or in staging."
"You cannot set up a CDN endpoint for an application deployed in Azure staging, or in the local Azure emulator in Visual Studio. This will affect unit testing, functional testing, and final pre-deployment testing. You must allow for this by implementing an alternative mechanism. For example, you could pre-deploy the content to the CDN using a temporary custom application or utility, and perform testing during the period it is cached. Alternatively, use compile directives or global constants to control where the application loads the resources from. For example, when running in debug mode it could load resources such as client-side script bundles and other content from a local folder, and use the CDN when running in release mode."

A lists of CDN Vendors...

Heroku's Fastly

Marrying CDNs with front-end optimization