US space industrial base – trends and obstacles

This is a very brief overview I wrote in preparation for a test a few years ago.  The UND Space Studies alumni dinner I went to this past weekend made me look back at what little research I had done on the space industry and I found this.   Just throwin’ it out there, comments are always appreciated.


The space industry can be thought of as consisting of four major elements: satellite manufacture, the launch industry, satellite services, and ground equipment manufacturing (United States Dept. of Commerce). In 2100, total world-wide revenue was approximately $168B (SIA, 2011) with private sector employment (2007) of approximately 729,000, including indirect employment  (Krepon and Black, 2009).

The space industry is very tightly coupled to the defense industry, and shares many of the same challenges: Customer demands are unstable; the skills and facilities of most suppliers are highly specialized; many of the large contractors–known as the “primes”– produce defense-related products only.  (Boezer, Gutmanis. 1997)

Historical Background

The post-Cold War period, starting in the early 1990s, has been a period of substatial changes in the space industry.  The 1990s featured a reduction in demand due to reductions in military spending brought about by the end of the Cold War.  This, in turn, caused a reduction in the industry workforce and consolidations among the major actors within the industry with over 50 major mergers or acquisitions taking place. One additional significant result was an increase in the already tight coupling between the aerospace and defense industries. (Cornell, 2011) Interestingly, this consolidation was encouraged by the government, which adopted a policy that attempted to balance anti-trust concerns with anticipated cost reductions. (Deutch, 2001)

The largest segment of the space industry are those companies and interests within what could be called the “Old Space” segment.  These concerns primarily focus on government contracts and research [cititaion needed] and are predominately the “primes” mentioned above. Because of this reliance on government contracts, this segment underwent a series of consolidations and an overall contraction in the 1990s and early 2000s.  US government spending for space systems dropped 46% between1993 and 2001, and the segment saw the number of companies reduced by 17%, leaving only a handful of large defense contractors in control of the industry (Cornell, 2011).

There is, however, another segment of the space industry that is ascendant – companies like Space X, Virgin Galactic, Bigelow Aerospace, and many others.  The success of Space X in developing its Falcon series of launch vehicles and of Virgin Galactic in marketing its forthcoming sub-orbital tourism business has generated a considerable amount of excitement in this “New Space” segment (Mangu-Ward, 2007).

Policy Challenges

Both the traditional and New Space segments face some of the same challenges; policy changes, regulatory restrictions and engineering requirements for launch facilities, vehicles, and spacecraft. Additionally, due to a number of factors, such as the previously mentioned industry contraction and high level of regulation, there is a high barrier to entry in the industry.  One result of this is that many of the New Space businesses started (or still are) vanity projects of several high-tech billionaires.

The traditional industry is heavily dependent on government grants and contracts and thus is subjected to a great deal of uncertainty in long-term planning.  This uncertainty limits the risks that businesses within the Old Space segment will take. Similarly, the New Space businesses suffer from policy uncertainties – but of a slightly different type.

Whereas Old Space relies on a policy and political climate that increases – or at least maintains – Federal funding of programs, New Space relies on policies that maintain – or at least don’t increase – government intrusion into their markets or businesses.  New Space faces the temptation of government funding which would restrict the very independence that their nascent industry is built upon (Mangu-Ward, 2007). In short, Old Space faces the risk of losing government interest, while New Space faces the risk of attracting government interest.

One example related to New Space is that of NASA’s “Commercial Orbital Transportation Services” (COTS) program. Under the National Aeronautics and Space Administration Authorization Act of 2010 (Public Law 111–267)  NASA can apply funds to assist private companies in developing a “reliable means of launching cargo and supplies”.

From the regulatory standpoint, ITAR and other export controls regimes are perhaps the biggest challenges both segments face. Rick Tumlinson, co-founder of the Space Frontier Foundation has likened ITAR to the Iron Curtain (Mangu-Ward,2007), evoking images of the restrictions on international trade imposed by the Soviet bloc on its European satellite nations.  While this is a slightly provocative comparison, the impact is in some ways similar – the trade restrictions place on sharing space technology also restrict the growth on the space industry. [Todo: Summary of trade restrictions from Damast]


Boezer, G., and I. Gutmanis. “The Defense Technology and Industrial Base: Key Component of National Power.” Parameters 27 (1997): 26–51.

Cornell, Ariane. “Five key turning points in the American space industry in the past 20 years: Structure, innovation, and globalization shifts in the space sector.” Acta Astronautica 69, no. 11-12 (December 2011): 1123-1131.

Damast, David. “Export control reform and the space industry.” Georgetown Journal of International Law, 2010.

Deutch, J. “Consolidation of the US defense industrial base.” Acquisition Review Quarterly 8, no. 3 (2001): 137–150.

Fisher, W.O. US Space Policy and Space Industry Strangulation. Strategy Research Project. U.S. Army War College, 2010. DTIC Document.

Foust, J. “Emerging Opportunities for Low-Cost Small Satellites in Civil and Commercial Space” presented at the 24th Annual AIAA-USU Conference on Small Satellites, 2010.

Futron Corporation. State of the Satellite Industry Report. SIA, August 2011.

Krepon, M., and S. Black. Space Security or Anti-satellite Weapons? Space Security Project. Washington, DC: Stimson Center, 2009. Google Scholar.

Mangu-Ward, Katherine. “Space travel for fun and profit: the private space industry soars higher by lowering its sights.” Current (2007): 11+.

McAlister, Philip. “State of the Space Industry” presented at the US Chamber of Commerce Space Enterprise Council Policy Committee Meeting, January 8, 2004.

P.J., Blount. “Informed consent v. ITAR: Regulatory conflicts that could constrain commercial human space flight.” Acta Astronautica 66, no. 11-12 (June): 1608-1612.

“Space more than meets the eye: how big is space really? The industry is relatively small, but its economic and strategic importance may be as boundless as space itself.” OECD Observer (2007): 16+.

“Space tourism.” Science and Children, 2010.

“U.S. and Worldwide Commercial Space Industry Revenue, by Type”. US Census Bureau, 15 2010.

2nd UND Space Studies DC Alumni dinner recap

This past Saturday (18 Jan 13) there was a small gathering at the home of LtCol Todd and Migle Borzych to listen to LtCol Peter Garretson discuss “Planning for the long term: what is the space program about?”  This was the second DC aream alumni gathering – I had to miss the first since it fell on a National Guard drill weekend.

Pete’s presentation (essentially the same as his essay on Ray Kurzweil’s site) was really quite interesting.  And it really got me to start thinking beyond (or maybe outside) the generally accepted ideas of “Mars or bust” and purely scientific robotic science missions.

Todd and Migle were gracious hosts and a good time was had by all.  Michelle and I are both looking forward to next time!

A long-lost specialty programming language

Back in the mid-1990s I worked for a legal services firm named RSI (or more correctly, Reproduction Services Incorporated).  I was the Applications Development Manager, responsible for managing development for both internal software and custom applications for clients.

At the time RSI was one of the prime records collection for the law firms representing the tobacco industry.  We collected mainly health records on plaintiffs in the many lawsuits against big tobacco that were all the rage.  Which meant managing thousands of pages of scanned documents.

We also worked with other clients on document management and several off-the-shelf software products.  These products included Summation, Trial Director, and Concordance.   As part of my job I also conducted training for clients in the use of these products (for a time I was a certified Summation instructor).

As I said, we did custom applications for clients.  Concordance included a scripting language (Concordance Programming Language, or CPL) that allowed for even greater flexibility from that product.  In going through some old drives I came across a CPL script that I had saved off for some reason.  Here’s a part of that script:

  int hConv; /* Handle to Conversation */
  int NULL;
  text hszService; /* Service Name Handle */
  text hszTopic; /* Topic Name Handle */
  text hszDocName;
  int db, i, Rec;
  /* Make sure the database is open. */
  if (db.documents >= 0) 
    /* Initialize the strings used to communicate with the DDE program. */
    hszService = "DOCDIR";
    hszTopic = "DDIMAGE";
    /* Try to connect, do a WinExec() if it isn't running. */
    /* It will run DOCDIR if it is in the path. */
    if ((hConv = ddeConnect(hszService,hszTopic)) == NULL) 
      /* No connection, execute the display program, it may not be running. */
      /* Then try to connect to the server a second time. */
      spawn("d:\progra~1\Docdir\Docdir.exe", "");
      hConv = ddeConnect(hszService, hszTopic);

    /* Message("switch", 1); */
    switch(db.type[isfield(db, "REC")]) {
      case 'P':
      case 'T':
        hszDocName = "[SHOWIMAGE(" + db->DOCPREFIX + "-0001" + ")]"; 
      case 'N':
        hszDocName = "[SHOWIMAGE( " + rep("0",5-len(trim(str(db->REC)))) + str(db->REC) + "-0001" + ")]"; 
      default: beep(450,5);

    i = ddeExec(hConv, hszDocName );

You can see the strong C influence as well as the use of an early Windows inter-process messaging protocol called Dynamic Data Exchange.  The use of a C-style scripting language was a little unusual at the time (in my experience anyway).

In hindsight I wish I had saved more examples of CPL.  Note to self: make sure to keep examples of current projects.

Some Brief Notes on Histograms

To start, how about a simple definition: A histogram is a graphical representation of the distribution of data.

A histogram can be thought of as a collection of buckets or bins, each with a min, a max, a width (max – min), and a depth (the number of values in each bin).

Typically the number of bins is determined on a case-by-case basis by looking at the data.  When we create a histogram by hand (so to speak) that’s relatively easy to do.  But when writing software to create histograms, we need to estimate the optimal bin count.  There are several ways to do that, two which I use are:

Continue reading

An IsNear() method using C#

Earlier I wrote about finding the NearestPoint() in C# – a handy little function.  I also have a companion function – IsNear().  As with the previous function, IsNear() makes use of Lambda functions and is fairly simple in its approach.

How it works

Given a set of PointF, and a test distance, the function returns True/False for nearness, as well as the closest point and the index of that point.

Yes, I already have those last two things in my NearestPoint() function, but I liked that kitchen sink approach here (I guess).  Without further delay, here is the routine:

public static bool IsNear(List<PointF> f1, PointF pt1, double checkDist, out PointF nearPoint, out int nearIndex)
    double calcDist = f1.Select(n => new { n, distance = Math.Sqrt(Math.Pow((n.X - pt1.X), 2) + System.Math.Pow((n.Y - pt1.Y), 2)) }).OrderBy(p => p.distance).First().distance;
    nearPoint = f1.Select(n => new { n, distance = Math.Sqrt(Math.Pow((n.X - pt1.X), 2) + System.Math.Pow((n.Y - pt1.Y), 2)) }).OrderBy(p => p.distance).First().n;
    nearIndex = f1.IndexOf(nearPoint); 

    if (calcDist <= checkDist)
        return true;

    return false;

Questions? Comments? Let me know.

Saving an edited layer in GeoObjects

So we’ve extended the GeoObjects library, and seen how to edit an existing feature.  Next we’ll need to save those changes.  The GeoObjects SaveOverlayLayer() method does just what it says – it saves the Overlay Layer along with the two attributes that it carries – Id and Name.  Not so good if you are editing a feature with more attributes.

The Extension library I wrote includes a new method - SaveOverlayLayer2() .

How it works

GeoObjects saves the Overlay into a MapInfo TAB file.  SaveOverlayLayer2() builds on that as the TAB format has a very simple format.  Our first step is to do a standard SaveOverlayLayer call.  This will give us the geographic data in a MapInfo .map file.

Next, we create a temp file to hold the .tab file.  This is a simple text file that looks somthing like this very simple example:

!version 300
!charset Neutral
Definition Table
 Type NATIVE Charset "Neutral"
 Fields 4
 ID Char (35) ;
 Column0 Char (35) ;
 Column1 Char (35) ;
 Column2 Char (35) ;

The column definitions will come from our extended attributes and will be written using a .Net StreamWriter object. At the same time we’ll be building our .dat file, which is nothing more than a standard .dbf:

dbfWriter annoAttrib = new dbfWriter();

Dictionary<string, string>.KeyCollection featAttrs = attrDict[firstKey].Keys;
int firstKey = attrDict.Keys.First();

using (TextWriter streamWriter = new StreamWriter(s))
  streamWriter.WriteLine("!version 300");
  streamWriter.WriteLine("!charset Neutral");
  streamWriter.WriteLine("Definition Table");
  streamWriter.WriteLine("  Type NATIVE Charset \"Neutral\"");
  streamWriter.WriteLine("  Fields " + attrDict[firstKey].Keys.Count.ToString());

  foreach (string key in featAttrs)
    annoAttrib.AddField(key, "VARCHAR", 35);
    streamWriter.WriteLine("    " + key + " Char (35) ;");

Once that is done, we’ll close the stream and write the .dat/dbf file.

string shortFileName = "_attemp";
string baseFileName = Path.GetFileNameWithoutExtension(fileInfo.FullName);

annoAttrib.CreateDBF(shortFileName, true);

OverlayLayer overlay = (OverlayLayer)m.GetOverlayLayer(0);
int feat2Count = ((Features)overlay.Features).Count;

for (int i = 1; i <= feat2Count; i++)
    Feature2 copyFeat = (Feature2)((Features)overlay.Features).get_Item(i);
    Dictionary<string, string> featAttrs = new Dictionary<string, string>();
        featAttrs = attrDict[copyFeat.Id];

        foreach (KeyValuePair<string, string> kvp2 in featAttrs)
            annoAttrib.SetFieldValues(kvp2.Key, kvp2.Value);
    catch { }


Once that is done, I rename the .dbf to a .dat, and we’re done with the MapInfo file.  If we want to create a Shapefile, we use GeoConvert on the saved MapInfo TAB.