2019 Could Be A Boring Year For Space Enthusiasts

SpaceX only has about 19 launches on its manifest in 2019, significantly fewer than in 2018, as most satellite concerns will have recently replaced their satellites in orbit. This was forecast, as there was a lack of new satellite orders for manufacturing in 2015, and build-to-launch is a 2-year cycle.

During 2019, SpaceX will not be ready to launch their own Starlink network, and will probably not be ready to do test launches of the first or second stages of their new, larger rocket. There will probably be some test flights of Dragon 2.

Gee, maybe the satellite market is as inelastic as some people forecast, at least until prices fall even more.

In 2019 we might start to see Blue Origin’s New Glenn, and Stratolaunch might fly. ULA might fly a new version of the same old expendable rocket. ULA’s “Smart Reuse” – a scheme to eject and recover the engines while expending the rest of the rocket – is years away if it ever happens, and seems unambitious.  SpaceX is already at the point of a rocket that can re-fly 10 times without significant refurbishment, while Smart Reuse would have ULA rebuild the rocket for each launch.

Ariane’s CEO whines about SpaceX’s low costs and proposes nothing new. The Chinese and Russians are still far from reuse. India makes baby steps into a space program.

Hoping for some exciting news for 2019.

It’s Impossible To Explain Safety Rules to Some People

If you are an RV enthusiast and handle technical questions, every once in a while you’ll get someone who just can’t understand that basic safety rules should apply to him. Let’s take a simple one, like “don’t put your generator right outside of your RV window, because you’ll die of carbon monoxide poisoning.” These are actual answers from a user of an online RV user group. After these, I asked this person not to take anyone I knew camping with him.

“I don’t believe I have ever run the generator much over an hour at any one time and never while sleeping.”

“I can’t imagine trying to sleep with the racket of the A/C on a hot summer night in Oregon’s central valley!”

“The reason I am short cording the generator to charger at the front and to the 30 amp plug at the rear is the removal of the long shore power cord which I never use. Gives me storage and saves weight.”

“I also like to run silent and deep during the quiet hours. That’s how I avoid the voodoo chickens hanging from the doorknob in the morning.”

Also see How an Amateur Electrician Can Easily Create Lethal Hot-Skin on an RV. I’ve met the same sort of guy while discussing that one.

What if Elon Musk Wanted To Create A Short Squeeze on Tesla Stock?

Tesla is the most shorted stock on the market, with short positions covering more than 30% of the total stock available for trading. Tesla stock has been kited to a high price by its previous short squeezes. When the commitments on short positions came due, the holders had to buy Tesla stock at the prevailing price to fulfil their obligations. They had no choice. There weren’t lots of Tesla shares available to cover the short positions, and thus the price of the stock was driven up.

What if Elon Musk was out to further kite the value of Tesla on a short squeeze, at the expense of all of the Tesla-doubters? He might act exactly as he has been: he’d divert attention from good news, and act like a flake. He’d be confident in doing this, nobody could prove it was deliberate manipulation of the stock without reading his mind. Eventually, those short positions would come due, and there would be no stock to cover them, and Tesla shares would go astronomical.

Short positions like this are called “widow makers”. They can wipe out investors. Elon Musk made his fortune, and continues to, by taking risky actions that other people wouldn’t dare. He obviously has an ego, and pauperizing the shorts would fit that.

Attention Lonely Men: The Reason Women Don’t Like You Is You

Along with all of the other nasty reasons for people killing each other, we now have the “Incels” or “Involuntary Celibates”. This is not really a new phenomenon, when I was young we had the “Son of Sam” who made a habit of killing couples who were making out in cars.

There are many young men who gravitate to programming and gaming who have trouble relating to women. I’ve previously written about why this happens. You might see yourself in that essay, or not.

So, as a person of some stature in the computer nerd community, I am embarrassed that I need to explain this to our community, but I do. Here goes. Continue reading “Attention Lonely Men: The Reason Women Don’t Like You Is You”

Companies Just Really Stink at Compliance – Training Is Usually The Problem

HIPAA is a law that is supposed to prevent medical professionals from inappropriately disclosing your medical information to anyone not involved with your treatement and insurance, so that your medical status can not be used against you – for example by an employer who wishes to discriminate against people who are HIV positive. HIPAA compliance is a big deal – it’s likely your personal doctor has given you disclosures related to it, and has had you sign releases regarding your medical data. Penalties for not complying with HIPAA have been as large as 75 Million dollars.

Not too long ago, a major medical manufacturer and their partner, a research hospital, ran a program in which they sent some crucial medical equipment to patients in a large soft rolling padded suitcase. At some point the suitcases became surplus to operations, and they sold them to an online store known for its military surplus. As it happens, I needed a soft padded suitcase to store a ham radio in my trailer, and thus found myself the new owner of one of these cases.

The case came with a patient identification card neatly mounted in an identification window. This gave the patient’s name, birth-date, gender, and the name of a medical device that they were using. A FedEX waybill attached to the case’s handle gave the patient’s home address. Obviously this was a HIPAA violation. I notified the manufacturer and destroyed the patient data.

I’m involved in a different form of corporate compliance: Open Source license compliance by technology companies. But the problems are the same: dumb mistakes like failing to remove patient data before selling suitcases happen because the “little people” in the company – employees who get the assignment of getting the suitcases into a freight container and shipping them out, haven’t been adequately trained to identify a HIPAA issue while it’s happening and protect their employer. Similarly, violation of Open Source licenses happens because engineers and their managers have never had their first class in copyright, licenses, and technology law – it isn’t required for an electrical engineering or computer science degree. When I train such people, I find that they identify problems and bring them to legal when the problems start, rather than letting them happen until there is a development investment and products released to customers, and the intellectual property issues get expensive. Staff who have been properly trained feel in control, and become the first line of defense rather than where the mistakes happen. This saves companies many Millions.

Unfortunately, training people meets strong resistance in every company where I propose it, because the course as it should be taught would take every member of the staff out of production for a whole day. So, I’m always under pressure to cut the entirety of a Compliance 101 class down to two hours.

Somewhere in a medical company, the little people weren’t taught enough about HIPAA to be able to identify an obvious problem, or maybe they were that day’s temps. Managers were tasked to keep this sort of problem from happening. But as always, the managers weren’t the people at the front lines, who really do have brains and can use them if they’re just given some awareness of what’s important.

Someone who isn’t as nice as me could use the information that I saw to bring a class-action suit on behalf of the patients whose information was disclosed, perhaps costing this company tens of Millions. It’s only when that happens that the companies understand the value of training all of their staff.

Learning the Crystal langauge and Lucky web framework

Crystal is a rising programming language with the slogan “Fast as C, Slick as Ruby”.  It has some compelling features that make it more attractive than other modern language attempts like Go. You really can program in a Ruby-like language and achieve software that performs with the speed of a compiled language.

But the greatest advantage of Crystal, that I have experienced so far, is that it provides type-safety without excessive declarations as you would see in Java. It does this through program-wide type inference. So, if you write a function like this:

def add(a, b)
  a + b

add(1, 2) # => 3, and the returned type is Int32
add(1.0, 2) # => 3.0, and the returned type is Float64

You get type-safe duck-typing at compile-time. If a method isn’t available in a type, you’ll find out at compile-time. Similarly, the type of a variable can be inferred from what you assign to it, and does not have to be declared.

Now, let’s say you never want to see nil as a variable value. If you declare the type of a variable, the compiler will complain at compile-time if anything tries to assign another type to it. So, this catches all of those problems you might have in Ruby or Javascript with nil popping up unexpectedly as a value and your code breaking in production because nil doesn’t have the methods you expect.

There are union types. So, if you want to see nil, you can declare your variable this way:

a : String | Nil

a  : String? # Shorthand for the above.

Crystal handles metaprogramming in several ways. Type inference and duck typing gives functions and class methods parameterized types for free, without any declaration overhead. Then there are generics which allow you to declare a class with parameterized types. And there is an extremely powerful macro system. The macro system gives access to AST nodes in the compiler, type inference, and a very rich set of operators. You can call shell commands at compile-time and incorporate their output into macros. Most of the methods of String are duplicated for macros, so you can do arbitrary textual transformations.

There is an excellent interface to cross-language calls, so you can incorporate C code, etc. There are pointers and structs, so systems programming (like device drivers) is possible. Pointers and cross-language calls are “unsafe” (can cause segmentation faults, buffer overflows, etc.) but most programmers would never go there.

What have I missed so far? Run-time debugging is at a very primitive state. The developers complain that LLVM and LLDB have changed their debugging data format several times recently. There’s no const and no frozen objects. The developers correctly point out that const is propagated through all of your code and doesn’t often result in code optimization. I actually like it from an error-catching perspective, and to store some constant data in a way that’s easily shareable across multiple threads. But Crystal already stores strings and some other data this way. And these are small issues compared to the benefits of the language.


Paul Smith of Thoughtbot (a company well-known for their Ruby on Rails expertise) is creating the Lucky web framework, written in Crystal and inspired by Rails, which has pervasive type-safety – and without the declaration overhead as in Java.

The point of all of this is that you can create a web application as you might using Ruby on Rails, but you won’t have to spend as much time writing tests, because some of the most common problems of Ruby code are taken care of by the type system. And the combination of exceptions and type-safety does an excellent job of getting rid of most of the function return error checking I’d have to write in other languages. When you want to check for a nil rather than catch an exception, there are method versions suffixed with a ? which provide that.

Learning Crystal and Lucky, since I’m already a Rubyist, wasn’t difficult, but I took about two days including finding some bugs in Lucky and learning some non-obvious things about the language. Like it’s better not to declare the types of things a lot of the time. Rather than look up that the type of something was Lucky::AdmittedField, I could just declare the name of an argument that used it and go on with my life, and the compiler would take care of things.

The biggest problem with Lucky right now, in its pre-1.0 state, is that there is no API documentation. There are tutorial guides that tell you how to do most things, but I found myself exploring the Lucky code several times.

I am porting an application I’d written in Ruby for a new startup to Crystal and Lucky, to see if I can have more comfortable development with fewer run-time errors. If this works, I’ll have a large production application to better evaluate the language and framework.

Somewhere in the world there is someone in love with Node who is asking why I don’t use that. Javascript isn’t a particularly elegant language. Attempts to pretty it up like Coffeescript fall short of what you really should see in a modern language.

The advantage of Node is that the native IO framework is non-blocking. Some Node enthusiasts don’t realize that almost every other web framework and server does non-blocking IO to handle the web requests, and you don’t have to concern yourselves with that. But you still have blocking by default for database queries, file I/O, and your calls to other services in the cloud. Crystal library authors could provide non-blocking I/O with promises for this, but the developers haven’t seen a good reason to do so. Crystal uses Fibers for concurrency (and will get multithreading). Fibers start with a 4K stack, and are so inexpensive that a 64-bit processor can realistically provide thousands of them per process. Having a straight-line logical flow through I/O rather than many event-handling blocks (probably nested) means more readable and maintainable code. The overhead of fibers seems a low cost for that.

And finally, one thing I won’t ever miss is a JIT compiler as in Java and Javascript, and its complexity. The architecture portability reasons elucidated when Java was created were never nearly so big an issue as expected – even on Android phones. It works to have it in browsers, but even there the future focus is on Webassembly, a bytecode that runs inside of the Javascript engine, which will be compiled from various other languages.

Open Source vs. Munitions Export Restrictions – Announcing Open Research Institute, Inc.

In the United States, some technologies are considered “munitions”. Space satellites, rocketry, digital voice encoding, and encryption are among them. Depending on the technology, they are regulated by the Department of State under ITAR, or the Department of Commerce under EAR.

The Open Source cryptography community worked out how to operate in compliance with ITAR and EAR a decade or more ago, filing several lawsuits against the U.S. Government on the way. Unfortunately, the Amateur Satellite and Space community hasn’t been as up-to-speed. It’s time for that to change.

In January, Michelle Thompson W5NYV and I decided to form a new non-profit corporation specifically structured for the purpose of operating international Open Source development of projects that might otherwise be considered to be munitions under ITAR and EAR. To do this, we make use of carve-outs in ITAR and EAR for published information.

Ben Hilburn (of GNU Radio fame) joined Michelle and I on the board of directors.

Michelle is leading the Phase 4 Ground Station project, an Open Source project to create a digital space communications system. Phase 4 Ground and my Open Cars research will be the first projects under our new organization, Open Research Institute, Inc.

We are now incorporated in California and are filing our registration with the State as a charitable organization today. We have contracted a firm to prepare our 501(c)3 tax-exempt non-profit application with the Internal Revenue Service.

Read about Open Research Institute.