Archive for June, 2012

Look Ma — No More Bending!

Saturday, June 30th, 2012

Seems like things might be going downhill if you need this thing. But if you do, I suppose it’s a good option. After all, how often in life are you presented with the question – should I not bend, and let my feet stay dirty, or do I bend and wash my feet? Never again though – here comes EasyFeet to save the day – now you can wash your feet without bending!

With eye catching packaging, this product practically begs – buy me, you need me, you want me! Sporting an easy-on-the-eyes color scheme of bright green, white and light blue, the box lures its prey to the point of decision.

Good thing there was a little note in the upper left corner – “New!” This a relief to find out it’s new. Otherwise I’d blame myself for being out of touch if I’d somehow missed such a life-changing product had it been on the market for a while already. As it is, credit me with being on cusp of the wave for personal care product innovation! Yay for me!

The most prominent copy just about says it all – No More Bending to Clean Your Feet! Can I have an amen? Just when I thought I’d have to ignore my feet forever, all for the lack of bending, here comes EasyFeet to save the day. There’s more though, according to the copy. EasyFeet also exfoliates – “it smooths heels with pumice stone.” I’d worry though, if a person’s heels hadn’t been “smoothed” for a while – remember we can’t bend – is there only so much a pumice stone can do!

Good thing it has built-in ‘suction cups’ so as to be ‘secure in any tub or shower.’ I say good choice, because, anyone stupid enough to buy… uh, err, I mean, the ‘target audience’ might otherwise be tempted to double-duty these things as street wear.

What more can be said in praise of EasyFeet? Nothing. Tune in next time though when I review another godsend for the modern consumer. You can bet I’ll have a lot to say about ArmlessBrush –for those who, still want to brush their teeth, but can’t seem to muster the energy to bend at the elbow.

Top Down Robot Car!

Friday, June 29th, 2012


So with a title like Top Down Robot Car I bet you think I’m talking about a convertible version of a robot car. Sorry, not this time, although the reason a robot might want to implement the feature of ‘roof retract-ability’  could be an intriguing question – improved chances of picking up robot-girls perhaps?

In this case I’ll be talking about the design process for specifying and modelling a robot car using a top-down approach.

Disclaimer: I have never built a robot car before, in fact, I am just learning about artificial intelligence in my current Udacity class (cs373) which uses a robot car as the sample problem. I am however a systems engineer with experience in the aerospace industry. As such I thought it might be beneficial to compare and contrast a method familiar to me (top down) with the approach being used in the class (bottom up).

In my previous post, I essentially captured a bit of the bottom up approach being used to teach the class. One of the lowest level questions possible, was the first one asked; from the robot perspective – where am I? That question, and its answer in implementation, embodies the function of ‘localization’. The Data Flow Diagram in that post described the input-process-output for localization in functional analysis notation.

Here I will sketch out a top down design wherein localization but one of a number of lower level functions. Note that part of this approach is similar to the problem solving method taught by Peter Norvig in Udacity, cs212, the Design of Computer Programs.

The top level requirements of a car might be – provide point to point transportation over a road network while observing driving rules and avoiding collisions with other objects in the environment.

A simple concept inventory then might be:

  • transport (the car, or platform)
    • location
    • speed
  • environment (the network of roads, traffic signals, etc.)
  • points (different locations along the path of the car, starting with the origin, ending with the destination)
  • sensors (detect environment, state, and objects)
  • guidance (what is the next point along the path?)
  • control (what speed and steering commands will get to the car to the next point on its path?)
  • rules (constraints on how car moves in environment)
  • objects (anything that enters the car’s area of concern)

Upon translation of these concepts to a data flow diagram format several important distinctions have been made as described below.

a simple data flow diagram

a rough draft, likely to need revisiting as class proceeds

Things external to the system are abstracted as rectangular shapes. Functions internal to the system are enclosed in ovals, and information that must be shared is represented by a data store symbol, two parallel lines. Data flows are represented by directional arrows.

One other important note about abstraction. The class is about artificial intelligence as applied to cars; it is not about cars themselves – cars are mundane. As such the car is simplified into the ‘transport’ function. At the end of the class we’d just buy a car and bolt on all the required sensors, and associated AI componentry, as an appliance. Important functions like sense, guide, control are isolated and shown to interact with the car (or ‘platform’) via data flow. Understanding of these is germaine to the class and warrant standing alone for the purposes of functional analysis.

This crude model will have to be revisited as we go, but for now it suffices as a good starting point, and provides a reasonable introduction to top down design principles.

Will Robots Rule the Road?

Thursday, June 28th, 2012

Robot cars are a reality, having already proven themselves in desert and urban road settings, accumulating thousands of miles of travel in the process. Sebastian Thrun was the leader of a Stanford University team whose entrant, Stanley, won the DARPA Grand Challenge in 2005. Sebastian is also the co-founder of the online university Udacity.com. Fortunately I will benefit from both of these facts because, as of yesterday I enrolled in Udacity’s class, cs373, Artificial Intelligence (Programming a Robotic Car), as taught by Sebastian himself. That’s kind of like being asked to land on the moon with Neil Armstrong as pilot.

Only one lecture in, but I can tell already it is going to be a great course. Taught using python, it seems to be a perfect extension of what I’ve learned in my two preceding Udacity classes, cs101 and cs212. Look for my ‘udacious’ impressions in an earlier post.

Robotic driving necessarily involves the application of artificial intelligence insofar as the car has to make autonomous decisions continuously based on it’s perception of its environment using onboard sensors. It also has to effect correct guidance and control commands using its mechanical actuators. Much of this type of command and control is commonplace in other applications, but what makes this different is the need to inform those commands based on real-time application of probabilistic modeling and decision-making.

To digest, and check my understanding, I will reflect on it herein.

a Data Flow Diagram for a simple localization function

The first function is called localization; the robot has to accurately know where is compared to where it has been told it might be. Note that the image embedded above is a Data Flow Diagram in which I will capture my interpretation of this concept using a model notation familiar to the practice of functional analysis.

The map of where the robot might be has several components. The first is represented by a base probability that is equal to 1 divided by the number or possible locations. If however some of the locations have distinguishing features that can be sensed by the robot then another product can be introduced. Detection of a sensed value representative of the feature indicates a higher likelihood that the robot is next to that feature. However there may be more than one instance of that feature. As such a probabilistic signature has to be formed. The overall map is representable by the product of the feature map as multiplied by the base probability.

The robot sensing of a location feature can be simulated in code and then provides the basis for a probability equation that allows to robot to say to itself, if I sense this type of feature, when compared to the input location map, then I am at any given location with a particular probabilistic certainty.

The requisite math, and its implementation in python, were covered in the lecture. To me it was gratifying that what I have been learning in cs101 and cs212 enables techniques required to solve AI problems. Furthermore I welcome this class because, despite five semesters of math for my aerospace engineering degree, I was not deeply exposed to probability theory in that curriculum.

As an aside, and in the spirit of “synthesis,” which is part of the system engineer job description, I was struck by the similarity between localization and the “orientation” part of the OODA Loop. I have discussed the OODA Loop in a different context, for my own decision-making purposes, in an earlier post. So for different reasons I am exposed to similar concepts once again. I should not be surprised though. The OODA Loop represents a command and control mechanism that in fact includes a localization component. A component which is carried out real-time by a pilot for effective decision-making in combat. As such combat piloting and robotic driving are more similar than you might think at first glance.

I don’t know what’s next in the class, but if continues to be as interesting as localization was, I’ll be a happy student.

A Brief Introduction to Systems Engineering

Wednesday, June 27th, 2012


Systems engineering is a specialized set of skills that deal with how large and complex projects are acquired for customers like the US Government. Often applied to the development of weapon systems by the defense industry, this approach was also applied for a time in the software development community.

The benefit of the approach, when practiced properly, is that large acquisitions will be more efficient during their development, they will be more likely to be delivered within their cost and schedule constraints, and they will more likely function as required once deployed.

Introduced in the late 1970’s the approach relies on use of diagrammatic models as a means of understanding the context of the systems, its interfaces and its functional requirements. A seminal textbook on the underlying modeling technique was Structured Analysis and System Specification, written by Tom DeMarco.

The goal for a system, as a prerequisite to full-scale development is to have a complete, correct, and executable specification. To do that, the system’s context, boundary, external entities, interfaces, functions, and data needs are defined throughout the process of modeling the system.

The method uses the power of abstraction to define each level appropriate to its implementation. Abstraction means that only the level of detail required is dealt with at that level, and subordinate details are abstracted and pushed down to the correct level where they are meaning full. For example if the system is military airlift, the highest specification only speaks to the distance, volume, frequency and reliability of transport that is required. The fact fact there may be a new airplane as part of the acquisition, or a ground transportation infrastructure, those are to be considered as lower level components and are separately modeled and specified.

Once potential problems are identified and solved in a process called functional analysis, the resulting models can be converted to a common language set of specification that represent each applicable level of implementation.

Realities of the modern economy, changes in acquisition, including likely reductions in defense funding will affect, and possibility displace, many in the workforce. Even though not in vogue outside of defense, the method still has merit. It simply remains as a challenge to the engineer in transition (from defense to commercial) to discover what concepts and portions of the method are reusable and will complement current commercial development techniques. Understanding these systems engineering concepts will be helpful in preparing for that transition. Although specific techniques may have evolved, the need for correctness in understanding the system being built has not.

Functional Programming Defined by Consensus

Tuesday, June 26th, 2012


Learning computer science is part of what I am up to currently. Through two classes at Udacity.com I’ve been introduced to basic programming in cs101, and then to functional programming in cs212. Both used the python which is known for its power, ease of learning, and suitability for application to a broad spectrum of problems.

The first course introduced basic concepts such as creating, assigning and storing data in memory, defining functions as blocks of code, program flow control structures, argument passing and data return, program execution and data output.

Building on that foundation, the second courses introduced additional powerful capabilities. List comprehensions, regular expressions, generator expressions, search algorithms and recursion were covered, all at breakneck speed. Fundamental to this second class though was a concept that challenged the understanding and assumptions of the students new to computer science; that was the power of the function within functional programming. The essential distinction is that, beyond merely defining a function, it thereafter can be treated as any other object that the language accommodates. This is such a powerful idea, and its implications so far reaching that there is a pedagogical imperative by which students are are first intentionally shielded from this knowledge. Computer Science professors slowly feed their students regurgitated worms until the time that their little birds are ready to be pushed from the nest; until such time in the course that students are properly prepared to absorb the full impact, utility, and implications of functional programming. Lovely image, won’t you agree? I just threw that in to see if anyone was paying attention.

For me, the concept was rather elusive at first, and still remains somewhat mysterious. So much so that it bears revisiting. So now, before my next round of online classes start, I will as an exercise attempt to define functional programming by digesting an two existing StackOverflow threads (first,second). My theory is that if I shine a light on a subject from many different directions a better understanding will emerge. This will be my first, but probably not my last attempt to reinforce my conceptual understanding of functional programming.

As gleaned from the referenced threads the following is one composite definition of functional programming, or “FP” hereafter. FP is well suited for a wide variety of problems but especially so when mathematics are involved. Because of the mathematical emphasis FP is more flexible in terms of abstraction and composition. Here abstraction means the ability to simplify problems by using FP constructs to model the problem. Composition refers to the ability to extend the power of functions by combining, nesting and extending them as permitted by the FP language of choice.

A key distinction, referring to that first mentioned above in my introduction is that FP promotes functions to first class variables. Here is where, if the professor said that on the first day of class, I would have likely said, “hey, I want to go back to my regurgitated worms.” Sorry, I could not resist.

One feature of an FP approach is to limit the use of global variables, or variables that are visible to the full scope of the program. This facilitates the ability to employ parallel execution. Typical usage of this would include graphic modeling and ray-tracing. The latter figures prominently in computer animation.

FP also implements powerful data structure capabilities. A benefit of this allows for more efficient algorithms and code than non-FP approaches. Similarly, with list comprehensions, such as provided in python, FP promotes brevity by allowing the collapse of very complex loop mechanisms into a single line list comprehension.

Generator expression in python also promote efficient memory utilization in that elements in a large set of data can be referenced by their place in the set, as if generated on demand, rather than consuming a large array as with in imperative programming.

Finally FP encourages modularity as a result of a more decouple approach than imperative programming; this enables reusability of code and improves testability as well.

This concludes my experiment in FP concept reinforcement. I have benefited from the exercise, and I hope you were not overly traumatized by the worm reference. I promise to try not to use such a revolting literary device ever again.

Obamacare, Explained as if to a 5 year old

Monday, June 25th, 2012

Check out Zejoop for all your casual event planning needs!


Recently I caught an Obamacare discussion on the Explain it to Me Like I’m 5 forum at reddit.com. The original post asked “What exactly is Obamacare and what did it change?” Because I differ with the most popular response, I will offer a brief rebuttal here on my own blog. That works out just fine because, not only am I chief cook and bottle wash, but I am also judge, jury and executioner. Aside from that I think I do have a legitimate point to make.

Regarding the original thread, and quoting from posting guidelines, ELI5 is “A friendly place to ask questions and get elementary school-level answers, without fear of judgement.” There are two rules and guidelines for answers most relevant: [1] no bias…, and [2] “Keep your answers simple! We’re shooting for elementary-school age answers…”

While I credit CaspianX2 with a fair and comprehensive response, I think it is significantly flawed in two regards. First, although reasonably fair, citing some arguments on both sides, it nonetheless reads as a extended defense of the bill and therefor fails the “no bias” test. Second it so far exceeds the guideline of “elementary-school age answers” that it outright fails the criteria. Specifically, most of the response, which is over 2000 words far exceeds the vocabulary, attention-span and comprehension level of all but the most sophisticated elementary school students.

Because it is such an important topic, and it should be reducible to the level a 5 year can understand, I am going to give it a try. However, I will take the other side of the argument, and will describe why Obamacare is wrong.

Even while just a child, the first thing I remember about the formation of my identity as an American citizen was that I had freedom. In particular, I had freedom of speech, and I knew at the time that it was an important concept. I also knew that this was insured by our US Constitution which was the basis for our government. I did not know much else about my others rights and responsibilities, but as a typical kid I did a lot of talking. As such, the “free speech” aspect appealed to me a lot. More than just being able to talk when I wanted, I also knew that I was free to speak my ideas. My ideas at the time where not that sophisticated, however I did understand these things when I was five; I was taught about our flag, the pledge of allegiance, the US Constitution and about freedom.

So, here is what I’d say to my five year old self, or any five year old for that matter: Obamacare is a law with many parts, that is intended to improve your ability to get care from your Doctor. Our country is considering if the law is valid, or whether it should be overturned. A very important part of the law is that the US Government says it needs to force your parents to buy something called health insurance, even if they do not want to buy it. The originator of the law, our President Obama himself, has said that the law can’t work if the US Government is not able to force your parents to buy that health insurance. The problem is that the government can only force your parents to buy something by taking away from their freedom. Obamacare is wrong because it takes away from freedom that is promised in our Constitution.

I will concede that a few of these words might be hard for a five year old, but not so much that any difficulties could not be addressed by a simple re-phrasing in more understandable terms. My premise though is that the concepts are basic enough that a child could understand them.

That’s why I’d be comfortable explaining to a young person that Obamacare is wrong, and that it should be overturned, because it takes away from freedom that is guaranteed in our Constitution.

It really is just that simple; even a five year old can understand.

What Happened to That Feeling?

Sunday, June 24th, 2012


There was a feeling I knew in a different time. I do not know what happened to it, or where it went. Surely a feeling abundant in my youth. No else has told me that they’ve had this specific feeling, it is possible that it was mine alone; I doubt it, but it is possible, I suppose.

It is the summer, hot, and humid – midday. The sprinkler runs, watering the lawn, billowing white clouds dot the still sunny sky. A suburban front yard, seemingly perched high on the top of a hill, but maybe that’s just how I remember, not how it actually was. Thick luxurious grass, bursting with chlorophyll, thirsty for its water, which rains down, in undulating sheets, as the sprinkler oscillates.

The day’s gentle breeze lifts a bough of mist, tossing it in the air, and just for a second, a rainbow. Ever so temporarily, shimmering saturated colors, those colors. Then just as quickly, it’s gone.

Not a care in the world, fully alive running at full speed, leaping though the water as it undulates, side to side, thin jets fanning out. The grass when whetted is slippery and forgiving. A skidding on the knees, that would tear and burn on dry grass, instead, yields easily, slick, causing no harm.

The person waters, the grass drinks, the children run about gleefully – taking in the day, enjoying, just being, alive. Shorts, no shirts, sunburn certain; it would be hard to fall asleep that night, for the hot, tightened red skin, but, not so, because of sheer exhaustion – sleep will come, and will be welcomed. Dreams of what wonders tomorrow will hold may fill the mind.

I don’t know what happened to that feeling. Is it gone forever? Can it be recovered, or is it the sole possession of the youth. They own it fully in their moment, when it is truly and rightfully theirs, however, not knowing, if it will last.

As sad as that may sound, I am buoyed, however briefly, with transient flashes of this distantly remembered feeling reoccurring now – sometimes. It has come, however temporarily, when I am immersed in some activity – maybe drawing, or while playing my guitar, sometimes when swimming a long distance, gliding through the water, as if for my life.

It’s there like a ghost, the feeling – my chest filled with some ephemeral incarnation of awe. Gone, though, as quickly as it came, like that temporary rainbow… but at least I know, it’s within reach, if only for a moment.

That sensation is the feeling of being alive… and it is worth living for.

 

New Access to Knowledge Delivery for Everyone!

Saturday, June 23rd, 2012

Here’s a bold assertion – any person, anywhere in the world, who is seeking to learn computer science, and who has access to the internet need look no further than Udacity.com. Enrolling in a class will allow any person free college level education, taught by world-class professors using coursework comparable to that at America’s premier technical universities.

So named by combining ‘U’ for ‘University’ with ‘-dacity’ as the root of the word ‘audacious’, Udacity.com represents a revolution in how knowledge is being delivered.

Frustrated by the limitations of teaching a relative handful of elite students at a time, at exclusive schools like Stanford and MIT, pioneers like Sebastion Thrun are promising, and delivering disruptive innovation in education.

At a time when our traditional university system is showing its limitations in terms of limited access, declining funding, rising tuition and crushing student debt, the prospect of FREE, WORLD-CLASS education is supremely appealing.

The world needs this, and thanks to visionaries like Thrun and others (many from Silicon Valley) it is ready resource, available to one and all.

If it sounds like am a convert, I am guilty as charged. I’ve had the good fortune to discover this right at its inception, in April 2012, and I have already completed two classes – cs101 How to Build a Search Engine (an introduction to computer science using Python programming language) and cs212, The Design of Computer Programs. The latter class was taught by Dr Peter Norvig, who is not only director of research at Google, but he is a recognized world leader in the field of artificial intelligence.

One undeniable benefit of this approach is that each class, which is delivered online in video format, has its own student support forum. All students can interact, one another, the teaching assistants and the professor himself. In fact I have posted questions on the forum to which have been directly answered by Dr. Norvig. When is the last time you got direct interaction with a pioneer and leading authority in the field of artificial intelligence?

By completing a class student get, in addition to the knowledge received, a certificate that indicates a varying measure of mastery, but oddly enough, no grade. This tends to rattle some students who, by habit, think only in traditional terms of grade-based feedback. To think that way is to miss out on the beauty of the concept of Udacity.com; what good is a grade, in a class where every exam is ‘take-home’ and the main purpose is the acquisition of knowledge?

There is speculation that their business model will evolve to include paid-for certifications where exams are somehow monitored and results verified, but Udacity.com has pledged that all their courses will always be available for free. This suits my needs perfectly; I don’t need the grade, I need the knowledge, and the price is right!

To deal with the stresses of our current economic despair and to be sufficiently prepared for our individual and collective futures I believe each person has to become a better version of themselves in all ways. What Udacity.com has to offer to me fits perfectly with this belief and is part of my personal plan forward. I’d invite you to consider for yourself whether this, or something similar could help you become a better version of you. The next offering of classes starts on June 26th, 2012.


That’s my OODA Loop, and Yes, I am Happy to See You!

Friday, June 22nd, 2012

Having introduced the OODA Loop yesterday it’s now time to examine how its application is relevant in my life currently.

Traditionally associated with military tactics in aerial combat, this recurring decision-making cycle consists of these steps – Observe, Orient, Decide and Act. Information from each step feeds forward into successive steps. Similarly, results of each increment feed back directly to the Observe step since they represent significant changes in the overall situation.

This has proven effective in the stress of combat because correctly applied it allows the pilot to respond effectively to the environment and to his opponent. He will defeat the enemy and perhaps most importantly, he will likely survive the encounter.

While I am not engaged in aerial combat presently, I do find myself in a rather stressful situation. I am currently unemployed; my economic survival and readiness for my future are in question. As such, it occurred to me to revisit the OODA Loop with the following question in mind – could I apply it to my present circumstances?

Here’s what’s going on with my OODA Loop, mid-cycle:

Observe – Relevant aspects of my observable environment include, [1] a US economy in a deep and severe recession, with sparse, if any at all, indications of near-term improvement, [2] an aerospace industry that is stagnant with no major US government acquisitions on the horizon, [3] a personal economy that includes mortgage commitments, and retirement savings which, although “above average” will not be sufficient on their own, especially in light of likely Social Security and Medicare reform.

Without making my age an inordinately large part of this conversation I will say that I am too young to take early retirement, but I’ve been around long enough to become vulnerable in terms of age and wage discrimination in my former industry.

If the preceding observations seems overly negative, I will assert that I do have useful skills accrued over my undergraduate education and professional career. These are reusable skills that can be leveraged and repurposed.

Orient – A large part of my orientation step depends on the quality of, and my interactions with my immediate and extended network, and with friends, one of whom has assisted me in a role as my mentor. The interim result of my orientation step is an awareness that [1] software solutions are ubiquitous with little prospect that software’s role in our lives will diminish, [2] modern personal computers are incredibly capable and can be leveraged to host powerful development environments, [3] the open source software movement has produced vast volumes of free software, [4] delivery systems, most notably cloud-based computing have revolutionized how software can be distributed, [5] the internet itself stores expansive resources to learn many things, including software development, [6] new means of “knowledge delivery” are beginning to emerge, most notably Udacity.com, a free, online university taught by world-class professors, from institutions such as MIT and Stanford. Did I mention it was free, and world-class?

Decide – Based on my observe and orient steps I have decided on this path: I will prepare myself to become a hybrid of a systems engineer and a software developer, by following a jointly determined (by myself and my mentor) learning curriculum, using my “powerful laptop” along with open source software development tools fashioned to implement a linux-python-java-groovy-grails-MySQL ramp in order to develop value-added solutions to customers ranging from small business to large-scale aerospace, delivered whenever possible as a hardware/software appliance bundle, or as software-as-a-service (SaaS).

Act – Based on the above plan I will learn specific software skills through [1] self-directed study using borrowed books and the internet, and through [2] successive classes at Udacity.com. Associated actions, on a parallel path to the software learning include, learning the basics of business, and business development through interaction with my network, and by attendance at various meetups and user’s groups. In addition I will be revisiting selected liberal arts educational objectives that weren’t part of my aerospace engineering eduction.

As a result of actions, taken above, more feedback is directed to the Observe step and the cycle repeats.

Note, to tell this story, it has been streamlined. In reality I have already been doing this over the course of a year. I have been through roughly four complete cycles, and this post represents a distillation. At this point I am effectively entering a new Act step which will include enrollment and completion of several Udacity.com courses for the next hexamester that starts Monday the 26th of June. Having completed Dr Peter Norvig’s most recent class, cs212, the Design of Computer Programs I have Observed, Oriented, and then I Decided on the next classes. Note that the classes I will take are different than what I might have expected to take prior to the last cycle through the OODA Loop.

This is an experiment-in-progress, but so far, I’d say it has been effective for me. In my opinion it is a flexible, agile approach. With current economic stresses and uncertainties, combined with concerns over the long term prospects for traditional employment models in corporate America, I believe that this kind of method is as applicable, now, to people in my situation, as it was when first formulated by John Boyd for application to aerial combat.

Is there an OODA Loop in your Future?

Thursday, June 21st, 2012

Being out and about in today's dismal economyJohn Boyd’s OODA Loop as Data Flow Diagram by Michael LaRue presents an array of opportunities and challenges. Since the word displaced is a euphemism for laid-off/unemployed, let's face it, restoring an income stream is one of the most important of those challenges. One way or another, doing that will require some situational assessment and decision-making.

Regardless of how well an aerospace engineering degree and decades of professional experience may equip a person, there is no silver bullet solution, or natural growth path towards a comfortable future, once displaced. A person in this position has to be resourceful and purposeful in moving forward.

Presented with this exact situation myself, I wondered what decision-making framework from my prior experience might serve well? Fortunately for me, something came to mind pretty quickly, the famous OODA loop!

My exposure to this concept came while working on an enhanced threat assessment feature of the Space-Based Space Surveillance system. Don't worry, it's unclassified, or at least it was at the time.

Briefly, OODA is a method for effective decision-making which is composed of a recurring cycle of the following steps: Observe – Orient – Decide – Act. This loop was created by Air Force Colonel John Boyd for application to military tactics in aerial combat. To paraphrase, the objective is to defeat an enemy in combat, and survive, by operating at a tempo faster than their ability to effectively make their own decisions. An excellent introduction to the subject can be found within this wikipedia entry.

For a person in my position, this seems like useful strategy to employ. If you are in a similar situation and don't think it's good, then perhaps you married rich, are already otherwise financially independent, or you've got a better idea yourself. If that's the case I'd love to hear from you; let me in on your secret, please!

To illustrate the OODA Loop I've created a Data Flow Diagram. This is a notation by Tom DeMarco in his excellent book, Structured Analysis and System Specification. I've used this notation frequently, to great effect in my aerospace engineering days. Most other times I've seen it presented though, it's been in a classical flowchart style. Rather than just regurgitate that form, I thought a fresh look might be helpful.

In my next post I will outline how I've applied, and will continue to apply, this approach, to the ongoing process of recreating myself for my future.

Until then, if you've lacking for something constructive to do, at least start doing the first of the two O's – start observing your environment and your circumstances. What could be more important that being aware of where you're at?