Tuesday, February 25, 2014

What would be my responsibilities as the CTO of your business?

What would be my responsibilities as the CTO of your business?

I see the primary responsibility of the Chief Technology Officer of a business to be that of education through communication. Technology is of little use to a business without education in its proper use within a business.

Education and communication of technology begins with knowing and conveying. A CTO must know how their company works, how products are developed and sold to their customers through company channels, how goods and services are obtained from vendors and how the business thrives within its own community of both workers and investors.

Technology ranges from a benefit to a curse on businesses in that it involves change. Change causes disturbances in business process. Change causes work to be interrupted, communications to be broken and costs to rise. Too much change will damage a business so severely as to not be able to recover from the changes. Change brought on by technology is often feared by those who are not educated as to the benefits of the technology and left only to become suspicious of how technology will harm them in their business.

Educations starts with communication between the CTO and all teams the technological changes will impact. A CTO must communicate honestly with all parties on how they will affected by changes in technology used by the business.

A CTO’s own education does not stop when hired. A CTO needs to understand the business environments in which technology will be used. How technology will improve and harm the business, its investors, workers, management, suppliers, customers and its local community.

First a CTO must know the business so as to act as part leader, executive, advocate and just a bit the mad genius to bring the benefits of technology. As leader the CTO must lead teams to better understand how technology will benefit them. As an executive the CTO must be able to make good business decisions on which technologies will be bring to the company advantages. A CTO must be an advocate for the right changes in technology for a business. Finally the CTO will need to be part mad genius to assist company teams on their voyages of discovery to profit from the use of available technology.

Contrary to popular thinking I do not belief that a CTO should be the owner of the technology in the business rather the caretaker of the technology. As a caretaker the CTO can see that good choices are made as to interoperability between teams is maintained. As caretaker the CTO should maintain the relationships with vendors and suppliers of technology for the company. Individual teams within the company should be responsible for use of the technology they need. 

Being CTO does not mean centralizing the power of technology within the business rather it means expanding the power of teams to use technology do their work better in their own way. If you put control over the Sales departments servers under the CTO then every problem or failure in sales will become a failure of the CTO. Giving support to but control over their own technology to the Sales team needs to do it job means the people who know the problem best will take responsibility for the problem. While the equipment and the services might be owned by the CTO, to maintain interoperability,  the running of the equipment and software must be owned by the Sales department. The sales DBA must work for the Sales department so they will become part of the team and exist only as an intruder, some would say spy, from the office of the CTO.

Communications systems, networks and telephony, fall under the prevue of the CTO in that the technology updates often and interoperability needs to be maintained across the business. But is there one single telephone that is best for the entire company or a single telephone service that can work for the factory floor and the mobile sales force. No, there is none. 

Voice communications have changed greatly of late in that the cost and quality of voice telephony has wavered much. A poor quality codec in a noisy environment is a safety hazard. Poor quality VoIP compression when making a sales call causes confusion in the customer.

Secure network communications, Internet, email, web presence, voice, video, file transfers need to be maintained. Internal networks must be secured from threats from both inside and outside the business. Again each department’s needs are specific to that department such that they must be able to define, control and support their needs within their department. How can this be done while maintaining security and interoperability in a business which moves physical resources and personnel about to fit either the needs of the business or the physical plant? Does the CTO allow web surfing on the same network which handles billing transactions and VoIP because it is convenient or simply too difficult to figure out a better way?


The CTO must be able to balance the costs of security, opportunity and complexity against the ability of the business to be successful. Security is the responsibility of every team within a business.

What would be my first steps as Chief Technology Officer in your business

What would be my first steps as Chief Technology Officer in your business.

I would begin by communicating through listening to management and board as to what the business of your business is now and what it would like to be in the future.

Communication begins with listening. Through listening one can learn much more than facts. Listening first allows others to communicate their needs and wants directly to the listeners. By listening I would gain an inventory of the desires of management. I would not begin the process deciding on technology until all of my inventories had been completed.

Next I would continue to take inventory of the needs and wants of the business by expanding with a physical and personnel inventory of the business. A physical inventory would reveal the current state of the business equipment belong both to technological and non technological aspects of the business. A personnel inventory would divulge information as to engine of the business as knowing the strengths and weaknesses of the staff reveals the strength of the business itself.

Next I would conduct an inventory of investors, customers,vendors and the local community as a company does not exist alone in the business universe. A business’s customers and vendors are partners who need to be kept in trust. Customers purchase products they need. The business is the customer of vendors. Investors are the owners of a business thought not necessarily the management. The local community is impacted by the acts of the business through providing worthwhile work, commerce, taxes and value. A business is in partnership with

A business cannot prosper without the goodwill of the community it serves. From Taxes to Planning and Permits boards, from an educated local work force to cooperative labor force, from the health of consumers of the business products both public and private a business is part of the community and should cooperate to betterment of its community.

As the CTO I would need to know the community’s technology needs and wants. If the business needed increased Internet bandwidth capacity how would increasing that capacity affect the community. Would wires and towers be unwelcome in the scenery. Could the community be enhanced by cooperation to expand assistive technology.

A conversation with vendors is needed to know what impediments could be removed from the supply cycle. Is our business up to date and aligned with the latest vendor delivery and invoicing methods. What are the vendor’s plans to improve their own uses of technology to reduce costs and improve services to the business. How can our business improve communications with our vendors to reduce costs on both sides.

To our customers our business is only one of their vendors. So how can our choice and use of technology improve our relationship with our customers. Are the business’s communications channels synchronized with our customers needs and capacities. Are we costing our customers time and resources to do business with us because of our lack of technology or need to improve their technology. Our customers are part of our community in that what we do with technology must not do harm to our customers just as we would not harm our own environment. We are in partnership with our customers to do business that benefits our customers, our business and our respective communities.

My purpose in meeting with investors is to establish a rapport as to which technologies they would be willing to invest in to improve our business. Investors fund companies to improve their investment. No investor is going to pour money down a drain on a fad. No investors is going to fund technology that is going to do them harm in other ways. Knowing the needs of investors leads to better partnerships across the business.

The physical assets inventory would allow me to begin formulating an plan to improve or modify the physical plant. Does it have enough power capacity to expand operations, will the infrastructure need replacement to handle the new business loads or is the physical plant underutilized to the point of begin wasteful and costly to the business. Knowing the physical plant allows for better planning to be considered.

An inventory of the current skills of the workforce would assist in determining what technology could be added to aid the teams to improve their business value. Technology, new or old, good or bad, can be frightening to many in both management and the working teams. Forcing technology that is seen as not needed on a team is a recipe for business disaster as is the cart before the horse.

Technology must be used as the servant of teams and not their master. Forcing technology on teams is a waste as it will cause revolt, both silent and open. It is the business of the team to decide which technologies they need to succeed at their tasks. It is the responsibility of the CTO to assist and guide teams in choosing the best technology given the restraints of the business. Teams that take the responsibility to choose their own tools can work better as they have a stake in the success of the business. Teams that chafe at the bit when technology if perceived to have been forced on them. Teams that control their own destiny will choose better.

Knowing the skills of the entire workforce beyond those skills they use at the business can go a long way in better shaping of technology within the business. As a CTO knowing who can do electrical or construction trades within the accounting department means a resource that can assisting in expanding the accounting departments technology. Such resources, for example, would probably be aware of infrastructure needs of their department though no one ever asked their opinion on what could be done to improve accounting teams. Inclusion, looking within first, knowing the strengths of personnel throughout the business, builds interdepartmental teams and lessens quarreling when changes that affect departments are needed.

Knowing leads to understanding and cooperation with the sharing of responsibility. Business are only cooperative groups of people.

Once the inventories are complete a plan for any needed changes would be create if needed. There is a difference between needed change and change for the sake of change.  The latter often leads to waste while the former only comes from knowing the true needs of the business. Adding more bandwidth because the Internet is slow does not change the waste of employees. Changes in technologies should pay for themselves through lessening of waste or improvement in process. Technological changes are not free of costs. Changes in technology are costly in time, work effort and opportunities.

Once plans are complete they will need to be reviewed the parties they will affect. Each party needs to speak their peace before implementation of the technology begins. Not everyone needs vote on what is to be done but they must be kept informed as to why decisions are being made. Denying parties to express their views on change encourages them to be closed and hidden on future change. To deny them expression is not fair to their value to the company. Though there will be times when decisions will need to be made that will not fully satisfy all parties. Such is business. Through allowing all parties to express their views they will know that their voice is being heard and they are part of the process.

Change cannot be done in secret if all are to trust the changes to benefit them. Technology cannot be seen controlling the companies decisions on change. People must know that technological changes are their choice.

Once I have information I can begin to affect changes to the technology of business teams to the better.

Friday, January 31, 2014

The Computer has the Paperwork, No, Really.

I sent a package to Canada this week. Sending this package took several tries because of paper work the package needed. While it took four tries to send this package was remained how far the computer has come and how small thinks humans still are in the age of ubiquitous computers. Paperwork still trumps computers in far too many places.

My trouble was sending a box of shoes to Canada from the USA via Fedex. Simple to do. Go to Fedex site, enter information about billing and address, print label, attach label to box and then drop off at the pickup location. Being in a rural area that is 30 miles from a FedEx Kinko's we just drop off at the local packaging store.

The trouble began when the the driver felt the package needed five copies of a commercial invoice form. Hmmm, the FedEx site made not mention of needing to do this in the label work flow. So home I went to do such. I went back to the label, explored the label work flow, followed along as best I could, and the site told me that "No, this destination and contents do not require extra paper forms". Okay, good, but I create a form to print anyway. Back to drop off site only to be sent home for more forms.

So back home, make more forms which I feel are not necessary to ship some shoes to Canada to placate the driver. Forms that I am pretty sure now that no one will ever see.

Why do I believe the forms will never be seen? 'Cause no one in Canada is really going to take the time to look at them. Why? Cause Canada is just going to Scan the Barcodes on the label then look at the form on a computer display and go, "Okay, weight and size and forms are all good" and off my package goes to Quebec.

What, what about the papers I printed out for a human to look at and file and store for years? Well, I am pretty sure neither FedEx nor Canada wants to pay to file paper work, store paper worked, preserve paper work, move paper work and then destroy paperwork and fill holes in Canada with boxes of shredded paper work. That is why Canada and FedEx bought Computers.

They bought themselves computers to eliminate paperwork not generate more paperwork.

In my second commercial software gig I worked at Reynolds & Reynolds which is a company that produces paper forms for Automobile Dealerships. Yep, they are in the business of making paperwork. My job was to create a work flow for a product. The system would have a user input data and then have the user print out the data to be then reentered by another person as data from the printout. This step was done about six times. Type in stuff, print out stuff, hand stuff to another person who then typed in the printout to print it out for another person to type back in.

After doing this cycle filled with data entry errors three times I had had enough. I raised my hand and suggested that since we had computers and were programmers perhaps we could automate the process to eliminate the printing and data entry errors. The response was that I was interfering with the process and a heretic for saying change was good. After defending my position my boss's boss took my challenge, handed me a copy of Turbo C 1.0 and said you got three weeks or your out. Oh and I had to still do my regular job.

Well, after three weeks I did my showcase with my friend and assistant Brent. We showcased our findings, design and plan to reduce 40 man hours of work down to about three minutes. My boss was not happy saying the plan was unworkable, stupid and would never work. She was not happy when we should here all of the next six months work had been completed by the new program the day before with plans to convert more of the workflow to a computer program soon. It was then I learned to be a bit more skilled at setting expectations.

But now 25 years later people are still using computers to print out forms to give to others input into more computers. Beyond frustrating me it costs money ( imagine if Amazon could eliminate the cost of labels and boxes) Paper is bad and some of us just don't get that.

In conclusion I fully realize that FedEx has removed the unnecessary paperwork by improving its processes using barcodes and putting computers at the boundaries and gateways. I am also pretty sure they do not want to would love to run their company with no physical paperwork to store, to file, to secure, to shred and then dispose of in a hole in Canada.


Thursday, January 16, 2014

Give us Better Computer Games. Take a step up to Three Dimensional thinking instead of pellet machines.

End Game in both EVE and WoW needs more game play and less button pushing or dailies.

The stream of surprise rewards for pushing the button like a trained caged monkey still holds me in the game but I need more thinking content.

The quests, crafting, farming and dungeons are still to much about being able to comply with the rules of the dance and less to do with solving the problem.

I sail. I like sailing because while you might be sailing over the same water the conditions are always different. Where in WoW the fights are all the same to a great degree. No better than being graded by the Judges on Dancing with People who believe themselves to be Stars.

Wow is like driving to store, same road, same store, same items located in the same aisles. WoW should be much more like fishing or sailing in that while you might be in the same location the experience is different every time. The weather affects the winds, the Moon the tides, the temperature the fish, the Winds the waves.

Give me adventure. Give the thrill. Give me tension. Give me emotions in my gaming. Make the leap to three dimensional game programming and less Tom Cruise playing Tom Cruise in a movie game programming because it gets boring after the third time.

I need better, I am paying you Blizzard now make it better.

Computer Controlled Horse and Buggy or why can't my rental car meet me curbside.

A horse is smarter than any computer or robot. How can I write that with a straight face? Show me a robot that can feed itself, eliminate its own waste, and replicate. If you hitch a wagon to horse the horse will be able to find its way home or two work without GPS, road signs nor computers.

So why start with a horse and buggy thinking in the Second Machine Age, the grand computer era? Even with computers in front of every student most of them still cannot or will not read well nor do math well. And that is the problem in that we are trying to solve problems using computers instead of solving problems and then using computers.

Take the driverless automobile of today as the horse and cart of the last machine age. Our approach has been take a horse and buggy, eliminate the horse but retain the controls of the horse and buggy.

I see two approaches currently being taken to bring about self driving cars. The first approach is the computer driving a car in which your team of researchers purchase a car and then begin to strap computers on to the car to make the car find its way to work and home. The research team spends time researching which car to use, then the computers to use then the switches and actuators to use to computer control the car. All of these choices are then bolted on to the car and constant changes are made to software, settings and solenoids to get the car to do its job of driving itself safely. This I believe is the incorrect (read wrong) approach to the problem.

The automobile and the airplane of today are not 100 years old. Rather they are a few years old. The driving and flight controls of cars and airplanes from the past were very complicated and non-intuitive. The Wright Brothers planes had flight controls that were the reverse of todays steering controls. There first planes dove when you pulled back on the stick or banked and turned right when you push the control stick to the left. Early automobiles did not have the current two or three pedal arrangement we have now in our cars. Gone are the levers and hand throttles, multiple pedals that made driving a car complicated and dangerous because of distractions of just trying to operate the car. Cars and planes were sold that were easy to manufacture and design not so much that they should be easy to operate.

The second approach to the driverless car is to build a car that can drive itself. There is a subtle difference here. I am saying is to design and build a car built to work without the need of a human driver or pilot first then add the human back as the override control. Similar to how airplanes become remote controlled, or pilotless, in that they tried to strap devices into a human cockpit. They tried to make the computer use the human flight interface and yoke which required first making the computer act like a human.

I believe the better approach is to build a vehicle that can drive itself first. The controls, steering, braking, acceleration would all be first built to be controlled entirely by the computers and software. This decoupling of the Human Interface to the control of the vehicle would be similar to software design paradigms such as Model View Control or OOD where the implementation of the code is removed and hidden from both user and other parts of the software.

The entire design of automobile would be different in that the current arrangement of two seats behind or astride the engine and transmission. The design of the driver behind the wheel with the controls arranged within reach of the driver would not longer be needed. The need for controls where they are now because of the physical needs of the driver and passenger to be able to control the vehicle through rods, pedals and levers would be removed. Don't think it can be done? How many of you still walk to the television to rotate a knob connected to a radio tuner to receive stations?

So which is it going to be then? Strapping computers to cars is not a solution rather it is exasperating the problem. In the years of work done by Google to build a driverless car by glue computers to the car the could have just designed and built a new type of driverless vehicle with a passenger module that looks like a car from the outside. (I will leave the exercise of extrapolating the driverless [pilot-less, sans chauffeur voiture] vehicle with snap on modules for passengers, cargo, security and such to the reader.)

(rant continues from here, no real need to continue reading if you get the point)

Give us a vehicle we can purchase that we can sit inside and not have to occupy our minds with the safe operation of the vehicle on dangerous roads. No more having to train or make emotional decisions about about traffic and weather. We just need a device that can transport us as needed to where we want to go.

Eliminate the standard model of the passenger car with the steering wheel, the pedals, the levers and you get a transportation robot. This eliminates the problem of the Soccer Mom in that the vehicle is delivering passengers instead of the mom driving kids to school and ball practice. We would no could eliminate multiple trips to drop off a person, return home, then return to pick up the person. I just see so much time being spent driving about to retrieve people. Because I need the car while my wife is traveling I have drive her to the airport, then return home, then return to the airport to pick her up again then drive home. While a taxi system would be more efficient it is not the economic reality. To get my wife to the airport I have to be occupied driving at least 50% of the sequence. This is wasted driving when I could be studying or working.

Design a vehicle that can be told where I need to go, plan the most efficient route, get me there on time and then be there when I need it again.  Think of the simple task of parking a car in garage where I approach the garage in the vehicle, open the door with the remote, park inside, squeeze out of the car because of the tight fit with the walls. Or the reverse in which I open the overhead door, get in the vehicle, start it, carefully back it out and so on. The first problem again is the vehicle is not where I need it when I want it. I should be able to tell the car I need it to be sitting in the driveway ready to go just by clicking the remote.

Same goes for parking my car at the airport, or renting a car for that matter. Currently I have to get my luggage, then take a bus or walk to the rental counter to get to the car. It takes a while and is unnecessary burden. Why can't my car, or the rental car, just come to my location outside the terminal? I have the key remote. I can know my current location curbside at the airport. I press button, car removes itself from parking space and drives to me standing at curbside pickup.

Don't give me crap about how is going to work with traffic as that is merely a simple queuing problem that can be fixed with all the fewer cars either clogging curbside pickup or circling the airport waiting for passengers. Fix the problem and profits will roll in.

Friday, October 25, 2013

The Status Quo is for Fools

Many business problems start with the phrase "but this is the way we have always done it here." Once a problem become the Status Quo it requires a Force to be Reckoned with to fix the problem. Entropy in business is a heavy tax on profits.

I am not here because I want you to like me or to praise me. I am here solely to solve the problems. I do not like unsolved problems though I do enjoy rectifying them. Solving problems means breaking with the current methods, procedures and materials to make new ones. Breaking the routine is a function of change management which can cause pain for those groups that fight change to embrace the Status Quo.

I am a catalyst in that I cause reactions to develop. Reactions are either Endothermic or Exothermic but the involved change that leads to improvement. Both involve heat which is either expelled or gathered in the process.

So if you are in need of change then do something. React to the norm for the better.

Monday, September 9, 2013

Functional versus Procedural Stream Programming. My browser, your Choice.

I am a C and C++ developer from way back. I learned C when Turbo C 1.x came out in the Spring of 1987. Tom Yohe handed me a copy saying "if you are so smart then use this." And I did. I built a program to process Chrysler Dodge sales ordering tapes (streams of data) to turn out a script that would run a LaserDisc kiosk. I cut the processing time down from one man week, with mistakes, per vehicle to about 5 minutes of 80186 processing per vehicle.

I did that by processing the manufacturer's sales data file as stream of data rather than just reading in the entire file and trying to process the entire contents once loaded as a blob seeking back and forth for information. I processed the information as it arrived. Acting only on what I knew at that point and trying to predict or decide what to later in the stream and run back to previous data which was then the normal spaghetti code method

In 1990 Turbo C++ was released and I bought my second PC, a 80286 12 Mhz and a 40 MB hard drive, to run and learn it because most of the team I worked with stated that "C++ was too fat and slow to be viable for real programming." 

I purchased Bjarne Stroustrup's book on "The C++ Programming Language" version 1.  Next  The Annotated C++ Reference Manual. Then version 2. Eventually version 3 and the special edition at some point. Along with The C++ Standard Template Library book.

From fully reading Stroustrup I learned one basic premiss of programming in C++. To paraphrase Bjarne, "If you cannot express your Object Orient Design in trees (I still prefer to use the term tries) and streams then you are doing it wrong." 

I used this principle to guide my work in Multi-Media messaging to design and then program several networking applications that lead to my being award three US patents for my work on networked objects and streaming data. I was assisted my research and design by Steve Teale's "C++ Iostreams Handbook". Ever since then I have looked at every problem from a Stream and Tree design mentality.

As an example of how this works think of a simple HTML web page with its element tags. I created a simple browser for a set top box by looking at each HTML tag in the file stream to create an instance of an Object. The class of the object created knew how to read and parse the next level of HTML elements. As each object was created it formed a tree of objects. 

Then by querying the tree of instantiated objects the browser could act as needed to display information or react to requests. In this particular instance the browser and subsequent HTML object tree was built to read and process file streams from Music Choice. This allowed displaying information and photographs held in the Music Choice data stream on the television via the set top box. This browser allowed Music Choice to transmit data streams that could change the look of the Music Choice music channel on TV. 

So instead of the set top box having a static application that had to be updated and downloaded to all set top boxes in the Cable Operator's (MSO) system each time Music Choice changed their format the box had a browser that could download a HTML style or format page in the data stream. Thus I had created a functional programming system using stream information instead of a static procedural method.

Now as a continuation of this research and development I have begun work on MPEG video streams to do some Machine Vision thinking. I am going to design a set of classes to examine RTP streams of Video and Audio to determine objects within the video streams.

---
As an aside I used a similar method to create the Email to Voicemail to Email (EVE) system in the late 90's. The original system had a network of voicemail servers connected via PSTN style lines. Voicemail messages were passed between geographically dispersed voicemail servers by dialing and playback to record over the PSTN lines in real time. It took hours, even over a private ATM network, to move and synchronize user messages. 

I had each voicemail server email their recorded messages as attachments to a central mail server.  The email server would then route the attachments through a set of mail queues in which each recording was processed by queue rules.  This eliminated the real time delays of playback across the private network. Allowed message to be transferred within seconds instead of hours. Cut the required voice bandwidth significantly. And gave users a copy of their voicemail messages in the email inbox.

The reverse was also done in that email messages forwarded to the EVE system were converted to sound via Text to Speech (TTS) so that in the pre-smart phone era users could receive email on their cell phones.

But that is another post to come.