Monday, March 11, 2013

Just Four Days Left for Early-Bird [MC]2 2013 Registration!

Don't wait!!!!!!!!





March 3, 2013







Last chance … save on [MC]2 registration until March 15
Who says you never get a second chance? If you missed the [MC]2 early-bird registration deadline, you’re in luck – your savings opportunity has been extended until March 15. But, we’re really not kidding this time … that discount will soon go away for good. Register now!
[MC]2 offers you the best place to learn about MTConnect from a variety of perspectives. From builders to engineers to end users, gain valuable insight about the importance of shop floor monitoring and all the things you can discover by using MTConnect. All the answers are awaiting you at [MC]2 2013!

Sunday, March 10, 2013

BlueRed Shift - When Blue Shift Quickly Moves Toward Red Shift

Sun's CTO, Greg Papadopoulos, has coined the terms Red Shift and Blue Shift as it relates toapplications that customers have  that are growing faster or slower than Moore's Law. 
But to steal from Senator Barack Obama, we do not have Blue Customers, we do not have Red Customers, we have Sun Microsystems Customers who have a variety of computing needs - some blue and some red.  I am going to discuss what I call BlueRed Application Shift. 

 Please note that the "Universe is expanding" is the same reason the young Alvy Singer in Woody Allen's 1977 picture of the year "Annie Hall" gave for not studying at school. "If the Universe is expanding, what's the point?" he told his mom and the school official :-)  But I digress...
Blue Shift  from an astronomy definition (this is from Wikepedia) is the shortening of a transmitted signal's wavelength, and/or an increase in its frequency, due to the Doppler Effect, which indicates that the object is moving toward the observer.
 As Greg defined it, "Red Shift" are those applications that customers a have  that are growing faster than Moore's Law - ie Web 2.0 companies.  Greg also defined "Blue Shift" as those applications that companies have that are  not growing as fast as Moore's Law, so by definition, those companies need less  square feet of computers because speed of computer processing is faster than their business is growing.  
 So, what am I calling a BlueRed shift?  A BlueRed shift are those applications that companies that have been historically blue shift and now because of a significant event,  have moved quickly out of Blue part of the spectrum, raced through green and yellow and orange part of spectrum heading towards Red.  I expect that with MTConnect, we will see companies that have been historically classic blue shift applications, will become BlueRed shift applications as they see their compute and storage needs start to take off.  This is not a risky prediction as we have seen this happen again and again when markets embrace open and royalty-free standards.
Why do we need the term BlueRed Shift? Because we need to indicate that Blue Shift applications with customers do not have to be slow growing forever and events do change industries.

Just Five Days Left for Early-Bird [MC]2 2013 Registration!

Don't wait!!!!!!!!





March 3, 2013







Last chance … save on [MC]2 registration until March 15
Who says you never get a second chance? If you missed the [MC]2 early-bird registration deadline, you’re in luck – your savings opportunity has been extended until March 15. But, we’re really not kidding this time … that discount will soon go away for good. Register now!
[MC]2 offers you the best place to learn about MTConnect from a variety of perspectives. From builders to engineers to end users, gain valuable insight about the importance of shop floor monitoring and all the things you can discover by using MTConnect. All the answers are awaiting you at [MC]2 2013!

Saturday, March 9, 2013

Thursday, March 7, 2013

March's Big Nothing Snow Storm


What was supposed to be an 8 to 14 inch wallop turned out to be a wimper because of high ground temperatures and the "March sun" as the weather people backed away from their forecast.  Here is a movie of the heavy snow falling that barely got to three inches in Ashburn.


Wednesday, March 6, 2013

LAST chance … save on [MC]2 registration until March 15!!!!


Don't wait!!!!!!!!




March 3, 2013






Last chance … save on [MC]2 registration until March 15
Who says you never get a second chance? If you missed the [MC]2 early-bird registration deadline, you’re in luck – your savings opportunity has been extended until March 15. But, we’re really not kidding this time … that discount will soon go away for good. Register now!
[MC]2 offers you the best place to learn about MTConnect from a variety of perspectives. From builders to engineers to end users, gain valuable insight about the importance of shop floor monitoring and all the things you can discover by using MTConnect. All the answers are awaiting you at [MC]2 2013!

Saturday, March 2, 2013

Facebook's Boot Camp


This was an interesting episode on Bloomberg.com regarding Facebook's Boot Camp.  Plus, my son John, who was going through Facebook's Boot Camp, comes on the screen at the 40:48 mark :-)  It also shows the old Sun Microsystems Campus that Facebook purchased.

Sunday, February 24, 2013

God Bless Mike Abramowitz of Sun Federal



Lesley Lawrence of Sun sent this out regarding Mike:
"Dear Friends and Former Colleagues of Sun:

It's with deep sorrow that I relay the news of Mike Abramowitz's passing on Wednesday, February 20th.

Mike was a superb negotiator, a great mind and had a mighty acerbic wit! I, for one, learned much from this industry legend - please note your condolences in the guest book embedded in the Washington Post obituary here:"
 
My deepest condolences to Mike's family.  Mike was truly a one of a kind individual and I loved being around him because he was able to analyze opportunities better than anyone I have ever met in my life.

My wife Julie and I ran into Mike in Singapore at a Sunrise event.  Mike asked if we would like to have dinner together.  My wife and I remember that night because of how kind and interesting Mike was in our discussions that evening.

God bless you Mike.  You were one of a kind and will be truly missed.

Tuesday, February 19, 2013

MTConnect and Task Force Tips on Why [MC]2 2013 Is Key

Below is from an email blast we just sent out on [MC]2 2013.

At many manufacturing companies, MTConnect is bringing immediate access to better shop floor data. Those companies are reaping the rewards. You can only gain this insight through shop floor monitoring. [MC]2 MTConnect: The Connecting Manufacturing Conference is the place where you’ll learn all the benefits offered by MTConnect, which is growing in usage every day.
 
“We thought we knew what was happening on our shop floor better than anybody. MTConnect has opened our eyes that maybe we knew 10 percent…it’s invaluable for seeing patterns with not just machines but also the operators running them, to watch how often they’re adjusting their offsets. It’s allowed us to coach our operators to help them get the most out of the machines they run.”
                           — Stewart McMillan, Task Force Tips
Stewart McMillan and Task Force Tips is just one of many MTConnect success stories.
Are you ready to add your name to the list?
Join us at The Millennium in Cincinnati, OH, April 10-11 to start writing your success story. Register today!

Friday, February 15, 2013

Open Systems For Open Minds

NOTE:  I wrote this article for Feb 14, 2013 edition of the IMTS Insider as a consultant in my role as the Director, The Office of Strategic Innovation for AMT - The Association For Manufacturing Technology.


Open Systems for Open Minds: That phrase was my all-time favorite slogan at Sun Microsystems. While it might seem obvious that of course everyone would want an open system, it turns out this does not always prove to be true. An open system is open or closed depending on the industry, the time period, and context, as well as the organization supporting the system.

In the computer industry, open or closed is better defined than manufacturing. If you ask someone in the IT industry what it means to be an open system, the answer you will receive likely will be along the lines that is one that has an operating system that has its source code out in the open and public, uses the most popular and open programming languages and uses standard interfaces that are open and royalty-free that makes it portable between architectures. If you were speaking to someone who has been in the computer industry a long time, the answer would be very short and simple, such as a Unix or Linux box.

What about the time period? If we were to go back to the 1960s and early 1970s, open computing would not have been a common term. Terms such as “IBM plug compatible” would have been the definition of open. Plug-compatible means that you could take a board from an older main frame and use it in the backplane of a new computer of that same vendor. In 1981 IBM announced the IBM PC and created, some would argue by mistake, an open hardware platform where the terms IBM PC compatible and PC compatible meant it could run the same OS and software as the IBM PC, but would be, typically, a less expensive system. The IBM PC was viewed as an open system in the 1980s with Microsoft’s DOS. In the 1980s, Sun Microsystems redefined open systems with the introduction of the SPARC platform where other companies could not only make systems that could use the SPARC processors, but companies could manufacture their own SPARC processors. In the 1990s the Linux operating system redefined the word “open” in a way that still stands today.

How about context? This gives meaning to both the industry and the time period discussions. For example, is Apple an open system? Is Microsoft an open system? Is Oracle an open system? How about Google? How about iOS versus Android? It could be argued that Microsoft is more open than Apple in 2013. Apple’s Mac OS X is based on Unix, but no one considers Mac OS X an open operating system such as Linux in 2013. Not too many individuals call Oracle open, but they own MySQL and Java. Those technologies are open. Most of what Oracle owns is not open. Oracle might argue that they publish their interfaces, so they are an open platform. Many think of Google as being the anti-Microsoft and being open, but are they really? It depends. Is Facebook open? Not from a data standpoint, and it should not be open. That model works for them because they have a closed garden approach that makes sense. How about Twitter? OneI can search Twitter at http://twitter.com/search — does access to data make it open or closed? As you can see, context changes everything.

The other aspect of context is the organization behind the system. AMT has been the key driving and supporting force behind MTConnect from the very beginning. Specifically, Paul Warndorf, VP of Manufacturing Technology at AMT, has been the key person driving MTConnect. No Paul Warndorf, no MTConnect. Don’t get me wrong — lots of folks, yours truly included, have helped out a great deal, but you must have the singular driving force that has control of the money and the vision. AMT has invested literally millions in MTConnect not because of any hidden revenue stream for AMT, but rather because it was the right thing for their members and more importantly, it was the right thing for manufacturing. Sun Microsystems had Scott McNealy as the guiding visionary for doing things the right way at Sun. It was impossible to overstate the importance of Scott to Sun Microsystems. When companies and individuals look at a given technology, the organization and the individuals in that organization play a large role in the determination of the overall motive behind a given system. While motivation can sometimes be difficult to ascertain, when it is a 501( c ) ( 6) non-profit as both AMT and the MTConnect Institute are, the questions become less probing on real intentions. This, however, does not mean that we do not receive probing questions at the MTConnect Institute, but they are usually more quickly accepted when the person realizes we are a nonprofit.

Manufacturing is moving to open systems with MTConnect, but there is still an ocean of different definitions of what an open system really is in the world of manufacturing. For example, I was at IMTS 2012 and asked this question of those who came to the Emerging Technology Center (ETC) and when I walked the floor visiting other exhibitors. The answers I received were quite interesting. In the software area, if I was talking to a vendor who was a member of the MTConnect Institute, the answers were more in line with what you would expect in the computer industry. However, if I spoke to someone who was not a member of the MTConnect Institute, the answers gave me flashbacks to the 1970s. This is not meant to be a derogatory statement, just a reflection of the importance of industry, context and time period for manufacturing. One of the more common examples of the answer to my question, “What is the definition of an open system in manufacturing,” was defined as, “the ability to pay for the manual, license and software development kit in order to access the proprietary Application Programming Interfaces (APIs).” There is no one in the computer industry who would define open in that fashion in the year 2013.

This is not to say that a closed model might not be what is best for a given company. Look at Apple. For anyone who owns Apple stock, they are very pleased to have stock in a closed system. This is true if they did not purchase Apple when it was at over $700 a share, and as I write this it is trading at $452 a share. I own lots of Apple products. I am writing this on a MacBook Pro with an iPhone 5 in my pocket. But, that is not the point of the more interesting question, which is, will iPhone still be the phone to have in 5 years or will Android be the dominant platform? There are those who argue it is today. It has been stated that Android out ships iPhone by almost 4:1 today, so what will it be in 5 years? Who knows, but the point is that Android is based on an open platform and Apple is not. Go try to create an iPhone clone and let me know how that works out for you. Customers like open systems because it gives them choice. But, why do some companies like Apple do so well? They innovate and their systems just work, as one would expect. Apple will need to out-innovate and out-integrate the entire Android cast of players. That is easy to say, but very hard to do, as we all know.

What is the best way to learn about open versus closed systems? Attending the [MC]2 2013 MTConnect: Connecting Manufacturing Conference. This conference will take place April 10-11, 2013, in Cincinnati, Ohio. The conference will feature something for everyone from end users, to software developers, to C-level executives, to students, to manufacturing technology builders, to anyone who just wants to really understand MTConnect! This conference is aimed at promoting BOTH the business and technical benefits and implementation of MTConnect®, as well as showcasing commercially available products utilizing the standard.

Who Should Attend?
  • End Users – shop owners, plant managers and anyone in manufacturing interested in improving productivity
  • Industry thought leaders
  • MTConnect® Institute Participants
  • Equipment Suppliers
  • Students
  • Professors
  • Software Developers
  • Distributors
  • ISVs
  • Integrators
  • Consultants
  • Anyone wanting to learn more about MTConnect
What does the future for manufacturing hold in terms of open systems? There have been other attempts at open systems in manufacturing besides MTConnect that had very limited results. Those efforts might have been affected by limited resources and limited vision. I do believe we will continue to see manufacturing embrace open systems. Not because of any altruistic reason, but because it makes good economic sense. The challenge with entirely closed systems is that you must place all the bets correctly. If you do, then you can win big. If you miss any of those bets, changing platforms might be your death knell. Open systems are on a continuum and the industry, the time period, context, as well as the organization supporting the system all matter when coming to the conclusion whether the system is truly open, partially open, basically closed or completely proprietary.

Hang on folks, because the next 5 years will be quite interesting in manufacturing. I am going to borrow one of Sun Microsystem’s best slogans and say, “Open Manufacturing for Open Minds.” Sounds like something I need to put on a t-shirt!

Tuesday, February 12, 2013

Modern Machine Shop's Mark Albert on MTConnect and [MC]2


There is a great interview by AMT's Penny Brown of Mark Albert, Editor-in-Chief of Modern Machine Shop

Below Mark is referring to implementing MTConnect:

  “One of the things I’m seeing is that when a company implements it, they start to get benefits right away,” Albert said. “Whether they start implementing on a small scale or a larger one, they very quickly start to see rewards that make the effort worthwhile. They start getting a better picture of what’s actually happening on their shop floor.”

In the article, Mark goes on to discuss [MC]2 2013 MTConnect: Connect Manufacturing Conference:

Albert plans to return to [MC]2 and thinks it’s a great place to see users, suppliers and developers all in one place. “It really is clear that this is a practical, doable, worthwhile technology for almost any shop that’s really looking for a fast payback.”
 

Monday, February 11, 2013

Steve Fritzinger of Net Apps and John Meyer of IBM - [MC]2 2013 Keynotes

The [MC]2 MTConnect: Connecting Manufacturing Conference agenda is shaping up. Among the highlights are two keynotes:
 
  • Processing Zetabytes: The Technologies Enabling Big Data and AnalyticsJohn Meyer of IBM’s Systems and Technology Group will put in perspective where computing technologies have been and how they are adapting to a big data future. Most importantly, John will discuss how industry is positioning itself for a future where massive data analytics will be in common use and how it is applying these technologies for competitive advantage.
  • Manufacturing with Darwin, Moore, and MetcalfeSteve Fritzinger of Network Appliance brings together a unique blend of deep technical expertise and economics knowledge to address problems for clients. Steve is the economics commentator for the BBC program Business Daily. Manufacturing is going through a great deal of change and it won’t be the strongest that survive, but rather those companies that can adapt, scale and connect. In this talk, Steve will describe how trends in software, international trade and education policy will affect manufacturing in the coming decade.
This conference features sessions covering both the business and technical benefits of MTConnect. You’ll also see exhibitors who will feature the latest commercially available products using the MTConnect standard.
 
Visit www.MTConnectConference.com to register and browse the conference agenda.

Sunday, February 10, 2013

Actuate Corporate Visit and Pete's Fisker Karma


This past week I visited Actuate's headquarters.  Actuate is the key MTInsight partner.  Actuate has been a great partner.   Above is Pete Cittadini, President of Actuate, and me in front of Pete's Fisker Karma.   Pete knows I am a car guy like him and he drove his Fiskar Karma when we went out for dinner with Dave Garnett, VP of Products, and Marnie Douglas of Actuate.  Marnie has been and is a great sales rep and a fantastic partner for MTInsight.  The Fisker Karma is a drop dead gorgeous car.


Above is a side view which shows off the car's amazing lines.


Above is a straight on view that shows off just how beautiful this car really is.


Above is the view of the center console screen showing the Fisker Karma getting the equivalent of 170 miles per gallon.

Tuesday, February 5, 2013

Facebook Leaves Sun Microsystems Sign To Remember What Can Happen


I visited my oldest son, John, who is a Software Engineer at Facebook.  Below is a picture I took of Facebook's sign that faces in toward Facebook employees as they leave the campus (if they look toward their left as they leave the main entrance) that Sun Microsystems used to own.  Oracle purchased Sun and Oracle sold the campus to Facebook.  Facebook purposely reversed the sign and left Sun Microsystems on it to remind their employees what can happen when companies to not stay sharp.  I think that is a brilliant idea by Facebook.


Facebook renamed the road from Network Circle to Hacker Way.  The building numbers are the same.   I went in as a guest and Facebook has improved the campus in a number of ways.  It was very nice to see young, smart folks working there and clearly having fun - just like the "good ole days of SUNW".  What was strange to me was how they changed all of the buildings and the cafeteria to be more modern.  I guess I am old school, I like carpet versus concrete floors :-)  I had a chance to see Mark Zuckerberg who was sitting in a meeting in one of the buildings as we walked by after John and I had lunch together.

Best of luck to Facebook!  I really hope they do not turn into Sun Microsystems when Sun got old and lost focus.  Follow Steve Jobs advice from his Stanford 2005 Commencement Address where he quoted The Whole Earth Catalog, "Stay Hungry. Stay Foolish."


Sunday, February 3, 2013

Visiting My Oldest John In San Francisco


Here are some photos of the apartment where John is staying in San Francisco.   I had to wear a Sun Microsystems CTO shirt and bring along my Sun Java leather jacket.  I am having lunch with John at the new Facebook Campus which they purchased from Sun Microsystems on Monday the 4th of February.  John is a Software Engineer at Facebook.


 Dinner at my favorite restaurant in San Francisco - Scoma's




 John in front of his apartment.

Below is John's main room with three bay windows.  It is a great apartment!

Below the photo below of John's bay windows are the views out of John's bay windows - first looking out the left and then on the right.








Above is John's HD tv and the TV stand we built before the Super Bowl.




Above is the view from John's door down his long hallway inside the apartment.


 Above is a view from John's kitchen.


John's bedroom.


John did not have a dresser and had his clothes on the closet floor.  I felt bad for him and bought him a $500 dress that was on sale for $349 at store in Emoryville.  We went to Ikea (my first time there) and I looked at the Ikea furniture and said, "yeah, this is not the quality I was thinking of  and the idea of building this by hand is even less appealing to me, let's find a real furniture store and I will buy you one as a apartment warming gift."  He eventually agreed.  I also paid for air mattress at REI since I would have had to pay for two nights out of my own pocket anyway as I came out here early for an MTInsight meeting on Tuesday.  It was a win/win.


John and I had a few beers and some food at The Chapel Bar in San Francisco.  The bar literally was an old chapel at one point.   We left at half time.






Sunday, January 27, 2013

Running The MTConnect Agent and Simulator on VMWare's Ubuntu


There is often a good reason to have your own agent and your own simulator running for testing MTConnect.  Below is how to do it with VMWare using Linux.  Note that the source code is out at github under MTConnect under the cppagent directory.

The overall key to this is that BOTH the simulator and the agent must be running for this to work AND you must have an Internet connection EVEN if you are running the simulator and agent you will still need access to .xsd file at MTConnect.org

Below is from:  http://www.vmware.com/support/ws55/doc/ws_net_configurations_common.html

Make sure that VMware Network Adapter is set to Bridged (autodetect) and NOT NAT or you will NOT be able to see it outside of the Mac  remember to the ifconfig to get the IP address

If your host computer is on an Ethernet network, this is often the easiest way to give your virtual machine access to that network. Linux and Windows hosts can use bridged networking to connect to both wired and wireless networks.
If you use bridged networking, your virtual machine needs to have its own identity on the network. For example, on a TCP/IP network, the virtual machine needs its own IP address. Your network administrator can tell you whether IP addresses are available for your virtual machine and what networking settings you should use in the guest operating system. Generally, your guest operating system may acquire an IP address and other network details automatically from a DHCP server, or you may need to set the IP address and other details manually in the guest operating system.

If you use bridged networking, the virtual machine is a full participant in the network. It has access to other machines on the network and can be contacted by other machines on the network as if it were a physical computer on the network.

You can install it anywhere you like. if you want to set up an ubuntu tiny you will need the following pieces from aptget:

1. gcc
2. ruby  (had to do an apt-get in order to load this)
3. cmake
4. libxml2
5. libxml2-dev (had to do an apt-get in order to load this)
5. cppunit

create a directory for the build

you need to get libxml2-dev

apt-get install ruby
apt-get install libxml2   (likely will tell you that it is installed
apt-get install libxml2-dev
apt-get update

ubuntu:/MTConnect_Agent_Simulator_DIR#   history |grep apt

     1     12:03     apt-get install libxml2
     2     12:04     apt-get update
     4     12:05     apt-cache search libxml
     5     12:05     apt-cache search libxml2
     6     12:13     apt-get install libxml2-dev
    98     13:03     history | grep apt
#cmake -i  

   * NOTE:  that just doing regular cmake  -- if you just keep hit return on the questions, it will do a proper cmake
   * run this as root
   * I also noticed that you can run cmake -i from the top


#make

Now you can run the simulator using the ruby run_scenario.rb script. There is help built in. The default agent.cfg will also startup using the VMC3Axis.xml devices file and the VMC3Axis-Log.txt file will give you the same scenario as we have on the site. Any other scenarios can be saved by capturing adapter output into a file.

Will Sobel, MTConnect Chief Architect, told me:
"40 students can hit the agent at the same time, probably can support more than 100. if we wanted to have more than than 1000, i would need to rewrite the internals to use epoll and edge-triggered instead of select and remove the service threads with custom context management. never been an issue."


Ubuntu:/MTConnect_Agent_Simulator_DIR# pwd/home/dave/MTConnect_cppagent-version_1.2.0.14_DIR/mtconnect-cppagent-a100593

ubuntu:/MTConnect_Agent_Simulator_DIR# ls

agent             BUILD.TXT        CMakeFiles          lib          README.md      simulator  unix
agent_startup_DIR  ChangeLog        cmake_install.cmake     LICENSE.TXT  README.pdf  test         win32
assets             CMakeCache.txt  CMakeLists.txt     Makefile     samples      tools

ubuntu:/MTConnect_Agent_Simulator_DIR/agent_startup_DIR# ls

agent  agent.cfg


ubuntu:/MTConnect_Agent_Simulator_DIR/agent_startup_DIR# more agent.cfg

Devices = ../simulator/VMC-3Axis.xml
AllowPut = true
ReconnectInterval = 1000

Adapters {
   VMC-3Axis {
      Host = localhost
      Port = 7878
   }
}

# Logger Configuration
logger_config
{
    logging_level = debug
    output = cout
}




NOTICE the two changes in agent.sh that I made (HOWEVER, I did NOT run the agent.sh, just ran the agent directly)


ubuntu:/MTConnect_Agent_Simulator_DIR/unix# pwd
/home/dave/MTConnect_cppagent-version_1.2.0.14_DIR/mtconnect-cppagent-a100593/unix

ubuntu:/MTConnect_Agent_Simulator_DIR/unix# cp agent.sh agent.sh.ORIG

ubuntu:/MTConnect_Agent_Simulator_DIR/unix# cat agent.sh

#!/bin/sh
#
# init.d script with LSB support.
#
# Copyright (c) 2007 Javier Fernandez-Sanguino
#
# This is free software; you may redistribute it and/or modify
# it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2,
# or (at your option) any later version.
#
# This is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian operating system, in /usr/share/common-licenses/GPL;  if
# not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
#
### BEGIN INIT INFO
# Provides:          agent
# Required-Start:    $network $local_fs
# Required-Stop:
# Should-Start:      $named
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MTConnect agent
# Description:       Provides MTConnect web server functionality
### END INIT INFO

# NOTE: I ran this successfully WITHOUT using this schell script, but I did modify in case I need to use it
# I changed below
#
AGENT_DIR=/home/dave/MTConnect_cppagent-version_1.2.0.14_DIR/mtconnect-cppagent-a100593/agent_startup_DIR/
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# I changed below
#
DAEMON=$AGENT_DIR/agent
#
#
DAEMON_OPTS="daemonize $AGENT_DIR/agent.cfg"
NAME=Agent
DESC=MTConnectAgent

test -x $DAEMON || exit 0


. /lib/lsb/init-functions

LOGDIR=/var/log/
PIDFILE=/var/run/agent.pid
DIETIME=10                   # Time to wait for the server to die, in seconds
                            # If this value is set too low you might not
                            # let some servers to die gracefully and
                            # 'restart' will not work

# Include mongodb defaults if available
if [ -f /etc/default/$NAME ] ; then
        . /etc/default/$NAME
fi

# make sure the log directory exists
[ ! -d "$LOGDIR" ] || mkdir -p $LOGDIR

DAEMONUSER=si-admin
# Check that the user exists (if we set a user)
# Does the user exist?
if [ -n "$DAEMONUSER" ] ; then
    if getent passwd | grep -q "^$DAEMONUSER:"; then
        # Obtain the uid and gid
        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
    else
        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
        exit 1
    fi
fi

set -e


running_pid() {
# Check if a given process pid's cmdline matches a given name
    pid=$1
    name=$2
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
    # Is this the expected server
    [ "$cmd" != "$name" ] &&  return 1
    return 0
}

running() {
# Check if the process is running looking at /proc
# (works for all users)

    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    pid=`cat $PIDFILE`
    running_pid $pid $DAEMON || return 1
    return 0
}

start_server() {
# Start the process using the wrapper
        if [ -z "$DAEMONUSER" ] ; then
            start-stop-daemon --background --start --quiet --pidfile $PIDFILE \
                        --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
            errcode=$?
        else
echo $DAEMONUSER

# if we are using a daemonuser then change the user id
            start-stop-daemon --background --start --quiet --pidfile $PIDFILE \
                        --make-pidfile --chuid $DAEMONUSER \
                        --exec $DAEMON -- $DAEMON_OPTS
            errcode=$?
        fi
        return $errcode
}

stop_server() {
# Stop the process using the wrapper
        if [ -z "$DAEMONUSER" ] ; then
            start-stop-daemon --stop --quiet --pidfile $PIDFILE
            rm $PIDFILE
            errcode=$?
        else
# if we are using a daemonuser then look for process that match
            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
                        --user $DAEMONUSER \
                        --exec $DAEMON
            errcode=$?
        fi

        return $errcode
}

reload_server() {
    [ ! -f "$PIDFILE" ] && return 1
    pid=pidofproc $PIDFILE # This is the daemon's pid
    # Send a SIGHUP
    kill -1 $pid
    return $?
}

force_stop() {
# Force the process to die killing it manually
        [ ! -e "$PIDFILE" ] && return
        if running ; then
                kill -15 $pid
        # Is it really dead?
                sleep "$DIETIME"s
                if running ; then
                        kill -9 $pid
                        sleep "$DIETIME"s
                        if running ; then
                                echo "Cannot kill $NAME (pid=$pid)!"
                                exit 1
                        fi
                fi
        fi
        rm -f $PIDFILE
}


case "$1" in
  start)
        log_daemon_msg "Starting $DESC $NAME"
        # Check if it's running first
        if running ;  then
            log_progress_msg "apparently already running"
            log_end_msg 0
            exit 0
        fi
        if start_server ; then
            # NOTE: Some servers might die some time after they start,
            # this code will detect this issue if STARTTIME is set
            # to a reasonable value
            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
            if  running ;  then
                # It's ok, the server started and is running
                log_end_msg 0
            else
                # It is not running after we did start
                log_end_msg 1
            fi
        else
            # Either we could not start it
            log_end_msg 1
        fi
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        if running ; then
            # Only stop the server if we see it running
                        errcode=0
            stop_server || errcode=$?
            log_end_msg $errcode
        else
            # If it's not running don't do anything
            log_progress_msg "apparently not running"
            log_end_msg 0
            exit 0
        fi
        ;;
  force-stop)
        # First try to stop gracefully the program
        $0 stop
        if running; then
            # If it's still running try to kill it more forcefully
            log_daemon_msg "Stopping (force) $DESC" "$NAME"
                        errcode=0
            force_stop || errcode=$?
            log_end_msg $errcode
        fi
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
                errcode=0
        stop_server || errcode=$?
        # Wait some sensible amount, some server need this
        [ -n "$DIETIME" ] && sleep $DIETIME
        start_server || errcode=$?
        [ -n "$STARTTIME" ] && sleep $STARTTIME
        running || errcode=$?
        log_end_msg $errcode
        ;;
  status)

        log_daemon_msg "Checking status of $DESC" "$NAME"
        if running ;  then
            log_progress_msg "running"
            log_end_msg 0
        else
            log_progress_msg "apparently not running"
            log_end_msg 1
            exit 1
        fi
        ;;
  # Use this if the daemon cannot reload
  reload)
        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
        log_warning_msg "cannot re-read the config file (use restart)."
        ;;
  # And this if it cann
  #reload)
          #
          # If the daemon can reload its config files on the fly
          # for example by sending it SIGHUP, do it here.
          #
          # If the daemon responds to changes in its config file
          # directly anyway, make this a do-nothing entry.
          #
          # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
          # if running ; then
          #    reload_server
          #    if ! running ;  then
          # Process died after we tried to reload
          #       log_progress_msg "died on reload"
          #       log_end_msg 1
          #       exit 1
          #    fi
          # else
          #    log_progress_msg "server is not running"
          #    log_end_msg 1
          #    exit 1
          # fi
                                                                                    #;;

  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0


ubuntu:/MTConnect_Agent_Simulator_DIR/agent_startup_DIR# ./agent debug
MTConnect Agent Version 1.2.0.14 - built on Mon Jul 30 09:41:08 2012
2012-07-30T15:57:01.307850Z: INFO  [0] init.config: Starting agent on port 5000
2012-07-30T15:57:01.317817Z: INFO  [0] init.config: Adding adapter for VMC-3Axis on localhost:7878
2012-07-30T15:57:01.318606Z: DEBUG [1] input.connector: Connecting to data source: localhost on port: 7878
2012-07-30T15:57:01.325697Z: DEBUG [1] input.connector: Sending initial PING
2012-07-30T15:57:01.362692Z: DEBUG [1] input.connector: Received PONG, starting heartbeats every 10000ms





http://localhost:5000/sample  in the browser  (note port 5000)


ubuntu:/MTConnect_Agent_Simulator_DIR/simulator# ls

run_scenario.rb  simple_scenario_1.txt     simulator.rb  VMC-3Axis-Log.txt  VMC-3Axis.xml

ubuntu:/MTConnect_Agent_Simulator_DIR/simulator# ruby -v run_scenario.rb -l VMC-3Axis-Log.txt
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
Waiting on 0.0.0.0 7878
Client connected

NOTICE ABOVE: 

   * -v is verbose
   * run_scenario.rb   is exactly that a run scenario
   *  -l VMC-3Axis-Log.txt is to run that long file for simulator data



ubuntu:~dave# ln -s /home/dave/MTConnect_cppagent-version_1.2.0.14_DIR/mtconnect-cppagent-a100593 /MTConnect_Agent_Simulator_DIR

 netstat -anp | grep "LIST"  to see what ports are open

ubuntu:/MTConnect_Agent_Simulator_DIR/simulator# netstat -anp | grep "LIST"
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1328/dnsmasq  
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      4121/inetd    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      595/cupsd     
tcp        0      0 0.0.0.0:7878            0.0.0.0:*               LISTEN      3622/ruby     
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      3627/agent    
tcp6       0      0 :::80                   :::*                    LISTEN      1024/apache2  
tcp6       0      0 ::1:631                 :::*                    LISTEN      595/cupsd  


 to make things easier, here are some simple startup scripts:

ubuntu:/MTConnect_Agent_
Simulator_DIR/simulator# more start_simulator
#!/bin/sh
#
ruby -v run_scenario.rb -l VMC-3Axis-Log.txt

ubuntu:/MTConnect_Agent_Simulator_DIR/agent_startup_DIR# more start_agent_debug_mode
#!/bin/sh

#
#
./agent debug
    






ubuntu:/MTConnect_Agent_Simulator_DIR/simulator# ./start_simulator
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
Waiting on 0.0.0.0 7878
Client connected


./start_agent_debug_mode
MTConnect Agent Version 1.2.0.14 - built on Mon Jul 30 09:41:08 2012
2013-01-27T15:57:13.055418Z: INFO  [0] init.config: Starting agent on port 5000
2013-01-27T15:57:13.060496Z: INFO  [0] init.config: Adding adapter for VMC-3Axis on localhost:7878
2013-01-27T15:57:13.061009Z: DEBUG [1] input.connector: Connecting to data source: localhost on port: 7878
2013-01-27T15:57:13.069044Z: DEBUG [1] input.connector: Sending initial PING
2013-01-27T15:57:13.108968Z: DEBUG [1] input.connector: Received PONG, starting heartbeats every 10000ms

I love how Will sends out a ping and then gets a pong back :-)

Friday, January 25, 2013

Four Year Anniversary of Thanks and Goodbye Evie....

Thanks and Goodbye Evie.

This is the four year anniversary of the passing of my Aunt Evie which was initially posted on Jan 25, 2009

My Aunt Evie passed away on Friday January 16th, 2009 in her home in Zumbrota, Minnesota.

Evelyn Gloria Irene Husbyn was born March 10, 1929, in Minneola Township, Goodhue County.    She grew up on the family farm, attended country school, and graduated from Zumbrota High School in 1947.   On Jan. 17, 1948, she married Stanley "Tat" Thompson in Zumbrota.

Below is Evie and me at my sister's Ph.D. graduation at George Mason University in 2006.  Evie is the lady in the white hair second from the left.



They owned their own businesses and were extremely successful.  I remember working at their Skelly Gas Station in Zumbrota, Minnesota with my cousin Richard Franklin while our Grandpa (Melvin Thompson) would oversee our duties. My Grandpa would give discounts to all customers when they filled up their cars or trucks, but it was a total to mystery to me on his percentage discount logic.    When I asked Tat and Evie on what math logic that Grandpa was using they just laughed.  They told me, "Dave, Pa does not have any logic, he simply makes it up as he goes."   Neither Tat nor Evie would tell my Grandpa to stop, because they knew that it made Grandpa feel good to give the people of Zumbrota a discount on their gas.

Tat and Evie epitomized the smart, caring and cool couple.  
Tat and Evie always had the coolest cars.  There was a time in 1970 when Tat owned a 1969 Dodge Charger R/T that had  7.2 litre engine at 375hp, 0-60 in 6 seconds, 0-100 in 13.3 seconds and top speed of 150mph.  That year and model car was voted the best muscle car of all time.   Evie had a 1970 Ford Torino Cobra Jet that had the 429 cubic inch engine with 370hp, 0-60 in 6 seconds and was Motor Trend's Car of the Year in 1970.   Tat and Evie's love of cars, trucks and motorcycles (Tat owned Harley-Davidson's long before it was fashionable to do so) really created a love of cars, trucks and motorcycles in everyone's lives they touched.   One of my life goals was to have a car faster than anything that Tat or Evie owned.  Finally, at age 42, I bought a Corvette that as faster than anything Tat or Evie owned.  But, Tat and Evie had more cool in their little fingers than I have in my whole body :-)  You can not buy cool.
 My family moved around lot growing up.   When Tat and Evie would come visit us, the excitement level was palpable.  Tat always had a big wad of cash in his pocket.   No one on planet earth knew more jokes or stories than Tat Thompson.  What always amazed me about Evie is that no matter how many times she heard Tat tell a story, Evie would always laugh out loud like it was the first time.  One time when Tat and Evie came to visit I was in the process of buying a 1972 240Z and need to pay cash to the owner so I had $2,100 on me.   After Tat and Evie were there for awhile, I said to Tat, "Tat, I don't have any clue on how much money I have in my wallet right now, but I will bet you $100 that I have more than you do."   Tat said, "well, I don't want to bet you, but let's find out."   Tat had about $700 or so.  After I got to about $1,000 Evie just started laughing.  It was like that MasterCard commercial - pricelesss.

 Evie was extremely smart in dealing with people and had a level of common sense that was unmatched.  Evie's mother, Ida, was the same way.   I remember when I was 18, I was giving Ida a hard time because she had (literally) $3,000 in a freezer in Tat and Evie's cellar.   When I told her that she was not making any interest by doing that, she simply responded with two sentences that put me in my place and I am reminded of that conversation today.

Ida asked me, "Dave, let me ask you one question.  If you went to the bank to get your money and that bank was closed down and you lost all of your money, how long will you remember that day?" With our economy in the toilet and getting worse, I think of Ida's advice often....

Evie will be greatly missed among all who knew and loved her....