Ready player one…

Okay gang, this is it. We’ve got a fight on our hands and a lot of work to do. The good people of the world need our love, aid, support, kindness, and protection now, more than ever. It’s time to gear up, stand for what’s right, and speak the truth. And let me just say: I’m with you brother.

But here’s a mistake that I’ve made in the past and so I’m sharing so you don’t make it (and so that I don’t make it again). You can’t help the world unless you are fully committed, fully grounded, and fully caring for yourself. Exhausting yourself on externals will only put you out of the fight sooner.

So breathe. Focus. Make sure that your immediate family is protected. Get a good night’s sleep, drink enough water, and wear comfortable clothes because those little things will make a big difference. Here’s a mantra: soldiers don’t go in to battle with sore feet.

And brother — I got your back. Always.

The new year post…

I heard a political analyst on NPR give this analogy: Imagine that there is a magic box that, when handled carefully, can bring about peace and prosperity to the entire world. But if it’s mishandled in any way, it can totally destroy everything. Most of us, if offered stewardship of the box, wouldn’t be foolish enough to take it. And if we absolutely had to, we’d do it with the utmost care.

Politicians are those sociopaths that, every four years, come out of the woodwork and scream, “Gimmie the goddamn box!”

So this year, we ALL have to become the insecticide to the four-year locust, in whatever way that we can. Here’s a hint: I’ve heard that they don’t know how to deal with compassion, humanity, and art. Just an FYI.

And then there’s that one guy…

Doing the monthly cleaning of the comments for this blog. You may notice that there are almost none. Most of the ones that I get are trying to sell me something. But then there’s always that one… So I write about science things. And every time I do, I get a comment saying that I’m going to hell, that the only truth is in the Bible, that kind of thing. Okay, guy. This post is for you.

Science is not really the sort of thing that requires belief. But admittedly, the basis of science is. So here’s what I believe (in no particular order):

  • There is an objective reality. I’m not saying that I live there, or that anyone lives there, just that there is such a thing. We can agree that the sky is blue, that the sun comes up in the morning, that the moon hangs in the sky, things like that.
  • That aforementioned objective reality can be described. Yep, we use metaphor to do it. The moon is round and usually kinda silvery looking. And make no mistakes, the language of mathematics and logic are, themselves, metaphor. An equation is a statement saying that this thing behaves like this in these circumstances.
  • The rules of logic are valid in this objective reality that I believe in. Once we agree on what the words “bright” and “dim” mean, we can also agree that the sun is not “bright” and “dim” at the same time.

There are things that I know to be true because I have witnessed them. I’ve seen (with my own eyes) the curvature of the earth from a research airplane flying at 60,000 feet. Yep, it really is round, and the sky is pretty dark up there. I’ve performed experiments that show both light and matter as being a particle and a wave. I’ve seen the glow of a nuclear reactor — yep, radioactivity is real. So I do have a lot of personal experience from which to draw upon, all of which corroborates the modern ideas of physics. I can say with confidence that I also believe my own experience.

And that’s about it. If you are going to try to tell me that you “don’t believe in science”, that’s fine. Just let me know where you think that scientific thought went wrong. Was it all good up to Aristotle? Up to Newton and Copernicus? If your worldview does not include Einstein, can you tell me how it is that GPS works (because Einstein’s general theory of relativity is integral to that)?

It’s also cool if you think that the world is only 4000 (or however many) years old and that all of the so-called “scientific evidence” was placed by god in order to test faith. But please, let me know how that helps solve a problem. Not because I want to ridicule your beliefs, but because I really want to know.

What’s next? (part 1 of N)

The world is in for a serious shake-up over the next couple of decades. Here are a few of my (and many others’) predictions:

  • Catastrophic job loss. Essentially all manual jobs are going to go away due to cheap automation.
  • Bio-terrorism. With CRISPR, anyone can make a virus in their garage with a thousand dollars of equipment and chemicals
  • Environmental collapse. When it comes to climate change, we ain’t seen nothing yet.
  • Nuclear disaster. I think that we have at least one more Chernobyl-level event ahead of us.
  • Human rights abuses. This will get worse before it gets better.
  • The rise of the police state. This too will just get worse.

Scared yet? Well there are good possibilities on the horizon, too.

  • World peace. Seriously, it’s a thing that can happen.
  • Universal health care. It’s about time that we caught up to the rest of the civilized world.
  • Universal basic income. In light of the aforementioned catastrophic job loss, this is the only rational option.

There is a lot more to all of these, of course. And much more to add to the list. As I figure it out for myself, I’ll post more in the series.

How to piss off a programmer…

This is me, venting about programming. If you’re not a coder, feel free to stop reading here.

I’m fantasizing about strangling one of my client’s programmers. I’ve no idea who he or she is, but I really wish that I could re-write all of their code from scratch. Some of their sins:

  • No comments. None. At all. Zero.
  • No parameter passing. They used over a thousand global variables instead.
  • Typecasting when there is no need. NOT typecasting when there is.
  • Apparently they skipped the coding-for-dummies chapter on state machines.
  • Using arrays to handle single values. Yep, literally defining arrays of one element.
  • Never ever accounting for garbage collection. Pointers are saved to globals and not checked.
  • Duplicating large blocks of code many times, changing just one value for each copy.

Overall, this system works by luck and not design. So I’ve just one message for this anonymous coder:

I don’t know who you are. I don’t know what you want. If you are looking for a working system, I can tell you I don’t have the time to fix everything. But what I do have are a very particular set of skills, skills I have acquired over a very long career. Skills that make me a nightmare for people like you. If you document your code now, that’ll be the end of it. I will not look for you, I will not pursue you. But if you don’t, I will look for you, I will find you, and I will kill you.

Deep breath…

So it seems like the world is ending. We now have the worst possible pick for president, an ultra-right congress, a soon-to-be conservative judiciary, and a cabinet filled with more of the worst of the worst. Which is horrible, but not impossible. It just means that the good people of the world need to work all the harder. In order to wrap my head around the problem, here’s where I can see us going off the rails (in no particular order):

  • Institutionalized profiling (arrests, deportations, etc.)
  • Normalization of racism, sexism, etc.
  • A chilling of free speech, free assembly, etc.
  • People dying from being denied healthcare
  • An undoing of environmental regulations
  • Selling off public lands to unregulated industry
  • Initiation of global hostilities

Despite all of the awful potentialities, the biggest danger is that we give up.

How to destroy the world’s economy in two, simple (and inevitable) steps…

There are just a couple of things that need to be invented. The first is a cheap and reliable synthetic vision system. This is already in work by the likes of Google, Nvidia, and IBM. If object recognition (which also implies distance and orientation recognition) can be had for under a couple of hundred dollars, then we need…

The second thing: cheap, reliable, efficient, and fast-acting artificial muscles. The power-to-weight and response time needs to be on par with human muscle fibers. And conversion efficiency (electrical power to mechanical power) needs to be at least fifty percent. These are also in work. Cheap options include muscles made from shape-memory alloy and even fishing line. Both are very inexpensive, but not terribly efficient and with a horrible response time. But better is certainly coming. And then we’ll have the ability to…

Replace pretty much every manual task with a robot. It won’t even make sense to keep sweatshops around when the factory owner can pick up something for a thousand dollars that works without error, 24-7. Sure, they may consume a kilowatt or so of electricity, but in most places that’s less than twenty cents an hour.

In about fifteen years’ time, self-driving cars will become available. Fifteen years after that, normal. Right now, the most common job in the United States is “driver”, be it trucker, cabbie, delivery driver, or bus driver. Those are going to go away. Add in vision systems and artificial muscles with the aforementioned parameters, and every manual labor task will also fall away. If technology continues on its current path (and there’s no real reason that it should not), then this is an inevitability. So the end result will be cutting off the lower two-thirds of employment. Most of the jobs on the global market are those that could be automated, but currently are not due to a lack of robot hands and artificial vision.

Unfortunately, we’re planning our economy as though none of these will ever exist. All throughout this election cycle, I’ve heard calls to “bring manufacturing back to America!” But the sad truth is that it never actually left. It’s just done by automation and, soon enough, will be done everywhere by automation. We as a society have to start planning for this, or we’ll wake up wondering why unemployment is at eighty percent.

Here are a few links to give you something to think about:

Google Self-driving Car project
The Autonomous Tractor Corporation
Fruit-picking robot could replace seasonal contractors
AI Driving the Fourth Industrial Revolution

There are a couple of ways to deal with this (okay, really more than a couple, but I’ll consider the two extremes). First, we can decide that a person’s livelihood is entirely up to them. If they cannot find a job, well that’s just tough. Sort of like how we’ve been doing it for the last few thousand years, and particularly throughout the current industrial revolution.

Or we can take a socialistic approach and say that everyone owns “shares” of collected resources. In that case, you wouldn’t have to work (or work as much, if you liked your job) because the output of the robots would be collectively owned. The automated farm would produce food for everyone, equally. Automated factories would produce goods that people could “purchase” with their collective resource shares. This latter option is much more humane, but our economic system is not at all set up to manage that.

So I’m not offering solutions here. Just something to think about.

The not-so-wonderful world of textbook editing

For the last month and a half or so, I’ve been a staff writer and editor for a major K-12 textbook company. And let me tell you, this process is horrific. It consists of passing around MS Word documents that cannot deviate in the slightest from a particular format, and commenters that give such helpful suggestions as, “You need to rewrite the chapter. We don’t feel that you are properly targeting the intended audience.” Please, can you be any more vague?

As a science and engineering consultant, I work on large projects for a living. And I’m talking “space shuttle” large. Textbooks are microscopic by comparison. And so here’s what I think the textbook industry needs to do.

1) Adopt a version control system. You have multiple people editing a thousand single-page Word documents. This is horribly inefficient. Everyone should always have access to all of the pages, at least for reading. And then they should be able to check-out for editing, with merging at the end. The software industry solved this problem a long time ago, and it’s about time that publishers adopted it.

2) Adopt a CSS-style system for templates. You want the book to have a consistent look and feel — I get that. But insisting that everyone conform to writing with the same (very messy) template in the same version of Word is stupid. Content should not care about look and feel, and the textbook artists should be able to change that without having to go back and edit every single page. Again, this is a solved-problem in the software development community. Maybe look in to that.

3) Adopt a requirements management system. Engineering projects have tens of thousands of requirements. This keeps everyone on the “same page” with respect to things like module inputs and outputs, screw sizes, and the like. It ensures that all of the pieces fit together at the end. A textbook has a lot of requirements too. Common core dictates that these things be taught in this order, and a finished text can have over a hundred sections. But again, this is a much smaller number of requirements than even a medium-sized engineering project. And again, this is a solved problem, whose solution should be adopted.

These three pieces can (and often are) integrated in to a single package in the engineering world. ClearCase/Doors is a good example of just such a package. If publishers were to adopt such systems, they’d get all of these benefits:

  • Authors and artists could use whatever tools they like to edit pages.
  • If an editor wants to change the look and feel, they can just do so without having to change every page.
  • It’s easy to see what previous people did to a page, and a page can be reverted if need be.
  • Multiple people can edit the same page at the same time without stepping on each other.
  • It can be seen at a glance, which requirements have been fulfilled and which need work.
  • A single “builder” can be used to “compile” the textbook in to a single file for printing, or ebook publishing, or web delivery, without changing any of the content or editing any page.
  • Since it’s easy to see who worked on what and did how much, individual authors and artists could easily get the credit (and payment) that they deserve.

So come on publishers — get with the 21st century and start using the tools that are already out there!

Hacking aircraft for fun and profit

Modern commercial jets make use of AFDX networks for sending and receiving control and sensor data. The AFDX protocol is based on Ethernet, and (if you’re familiar with the OSI model) is identical up to layer 2. This means two things. First, that AFDX traffic can be (mostly) routed by standard Ethernet hardware. And second, that Ethernet software tools can (sometimes) be used to troubleshoot and hack AFDX networks.

The problem is that such tools are not designed to handle a number of the things that AFDX does. AFDX is deterministic, redundant, and more fault-tolerant than standard Ethernet. And so you generally need specialized hardware and software to interface with AFDX.

But it doesn’t have to be that way. A laptop’s Ethernet port should be able to read and write AFDX traffic just fine. The only reason that it cannot is that it doesn’t understand the upper level protocols. There have been a few projects to rectify this, and they have made use of the WinPcap libraries for low-level traffic reads and writes. And then they stopped there, because those involved were happy to leave it at the C-code level and lock it away behind corporate-secrecy firewalls.

I was somewhat less than happy with this, and so I’ve written a suite of LabVIEW libraries that can hijack a PC’s Ethernet port [note to the NSA: when I say “hijack”, I’m talking about taking control of an Ethernet port, not an airplane] and read, write, and otherwise manipulate AFDX traffic. If I get clearance to do so from my client, I’ll open source these libraries. And maybe write an article on it. I’m really hoping that I can share this with the world in some way because it’s a really neat thing and fills an as-of-yet-unfilled niche.

Stay tuned for details!

A delicate balancing act…

There is so much that I do that I would want to write about. Much of the work that I do would make for some fantastic conference or journal articles. And some it would’ve even made a great master’s or doctorate’s thesis. BUT… the reality of the situation is that I am almost constantly under some non-disclosure agreement or other. Not that the work I do is terribly secretive. There’s no national security issue (usually) and no chance of any disclosure actually hurting whatever company I’m working for.

But the knee-jerk reaction nowadays is to hide everything that everyone does, all the time. Just in case. As though my obscure bit of network queuing code would sink the company were it ever revealed. From the standpoint of furthering the art, this is not a wise policy. From the standpoint of furthering my career, it’s damned annoying.

As always, XKCD said it best…

https://xkcd.com/664/