2015-05-06

Get off my lawn.



"We need to get some young programmers with fresh ideas", my friend told me.  And since he is a fairly cerebral fellow who occasionally has ideas I could have come up with myself, and thus confirm my secret suspicion that I am an undiscovered genius, I said "sure, that sounds like a good idea".

In retrospect I am not 100% sure if I said it because I felt I had used up my daily quota of being dismissive of other people's ideas and needed to say something positive, or if I really believed him.  But to delegate the miserable suffering of turning flimsy ideas into running code had a definite appeal.  I told myself it would free up my time to focus on important stuff.

At first, wearing the rosy-tinted glasses of confirmation bias, I figured that this was a good decision.  That the younger generations were indeed better than my generation at the same age and that these kids were born into a world of easy access to everything they needed to learn.  I stood by, watching as they toiled away at the code.

Sure, much of the time they'd end up in unproductive dead ends like a Roomba getting caught in some unfortunate configuration of furniture, but they got things done once you discretely nudged them.  And often it wasn't as clunky as the underlying code might suggest.

As programmers we often needlessly fret over the fact that our stuff is pretty bad.  Hidden behind a nice opaque surface, nobody can actually see our code. I remember the first time I shipped real production code in a hurry before it was done.  I remember the salesperson praising our work in front of the customer and tried to imagine what elaborate torture they would come up with for him once they figured out that the code had no business working.

Because they would understand it was HIS fault, right?

I figured that, unlike a Roomba, the kids would eventually learn.  I mean, how many times can you fuck up the same way without that pink lump of biomass in your head identifying that you have a pattern going?

Turns out, most people do not learn on their own.  Most people are not capable of taking a step back and drawing conclusions from their own failings.  And we programmers are the worst.

Unless someone told you something at a conference or you read it in a book hip people have told you to read (preferably from the stage at a conference), it isn't real.

Normal people are not allowed to have thoughts or to draw conclusions. That's for people with book-deals and speaking engagements.  We proudly say that we believe in science -- that something isn't true merely because someone says so, but because we can confirm it.  And then we go on doing exactly that: believing in some authority and disregard our own experience.

There are innumerable examples of this.  But I'm going to leave it up to you to find some yourself, because in giving you an example I would probably call someone you worship an arrogant, ignorant ass.  At least indirectly.  And that would just be, well, mean and arrogant.

I've been arrogant all day today and I need to be nice.

Of course, there were signs.  Code that so severely under-performed I started wondering if they had stopped teaching kids about algorithmic complexity.

There was the inevitable "performance isn't important -- we'll just throw more hardware at it".  And then the realization that you're faced with one of those hard cases where nine women can't make one baby in one month.

Because that's the problem they chose to solve.

Because making sure that the problems you end up having to solve are good problems to have is "premature optimization".

Of course, not a single idiot who yammers about premature optimization has bothered reading the text where the "idea" comes from -- or even understanding the context of it.  Some authority said it and so it has to be true.  And applicable to anything that might be construed as "optimization". Premature or otherwise.   (Again, if you don't know what I'm on about, you have some reading to do.)

I'm starting to realize that young programmers are no better than I was at their age.  And it is mostly my fear of sounding like a tiresome old fart that prevents me from saying that out loud on a daily basis. Nobody wants to be that stereotype;  the old fart that talks about "at your age I had to do X, Y and Z myself.  Barefoot.  In the snow".

Sure, you can ruthlessly exploit young kids to put in more hours of work since they are too young to understand the value of time.  But just because they have a more elaborate vocabulary with which to express their lack of instinct, you should remind yourself that occasionally you might have something to contribute to the mix. 

These kids are just about as dumb as you were at that age.

Now, get off my lawn!

2015-01-17

Printing using PVAc glue on the build plate.

Doing my first 3D print with glue on the build plate instead of painter's tape.  I got tired of poor adhesion for the first few lines and then too much adhesion when you want to pull the part off -- resulting in parts that have fragments of painter's tape stuck to them.

I mixed 1 part Polyvinyl Acetate (PVAc) to 4 parts water in a jar, shook it until the glue dissolved and then painted the mix onto the build plate while keeping the build plate at about 50 degrees celsius.  The water evaporates, leaving a thin residue of glue on the surface.   I put down layers of this, letting each layer dry before putting on the next.  After about 3 layers the surface gets a slightly milky look.

I probably should have allowed it to dry completely.  The surface was a tad sticky when I started printing.  But this didn't seem to matter.  The initial lines of the skirt (a line the software draws around the part in order to get good filament flow before starting to print the actual part) stuck beautifully.


I decided to try PVAc glue since this weekend I am bulk-printing enclosures for a camera prototype. It is a simple, low cost GSM connected webcam to explore what we can accomplish using cheap off-the-shelf parts.  I designed a very simple enclosure for it and next week we are going to put together a bunch of these devices.  We've tried to keep things as simple as possible,  but we still have to solder some wires to the board to hook up a switch and an LED.


2014-11-23

Reviewing 3D printers

I've read quite a few 3D printer reviews over the last months and now that I have had the opportunity to collect two months worth of practical experience with a well known 3D printer, I have to conclude that most 3D printer reviews are worthless.

In general, you can disregard magazine reviews.  These are the worst.  The problem with these is that they are usually performed under time pressure and it seems more important for magazines to have a review of 3D printers than to do it well.

Magazine 3D printer reviews at this point are nothing more than glorified unboxing videos in text form and you should probably not take them seriously.   I say "probably", because sooner or later I guess some magazine will start applying serious evaluation methodology.  So far though, I have not seen this.

You will find the most useful reviews in blog postings and forums.  People who own the device and who have used it for at least a few months.   For example Nick Lievendag is pretty good at reviewing 3D printers since he actually uses them to do work.

Here is a brief list of what a proper review should minimally involve:

  • Test the machine for at least a couple of months.  It should have at least 350-500 hours of printing on it before you conclude anything.  If you think this is a lot: this is rather typical load when you do a project.  Prints take a long time so you try to minimize the idle time so that you can get more done per day.  50-60 hours of printing time per week is a relatively moderate load during a project.  You can easily double that if you time things properly and you have 24/7 access to the machine.
  • Test it until something breaks.  Some machines have weak parts.  You need to know which parts fail first and you need to know what it will take to repair the machine.  What is covered by warranty is really not interesting.  Breakdowns cause downtime and if you have to return parts and wait for new parts to turn up, that will cost you valuable time.  Also calculate the cost of running the machine over time given the cost of repairs.  (Some 3D printers need spare parts that add up to more than the printer costs within a year.  I have yet to see a single magazine review that addresses this rather important aspect of 3D printer ownership).
  • Take the machine apart and have someone with technical insight analyze the design and the parts used.  Down to looking at what chips have been used for stepper control, what CPU it uses, what kind of firmware, PSU, technology used for calibration etc.  Also get someone who knows about mechanical design to look at the mechanical design.  Precision, durability etc.  If you are squeamish about taking printers apart because you are afraid to piss off manufacturers, reviewing hardware is not for you.  If they try to make you sign NDA agreements you are, of course, disqualified from reviewing the product.
Taking the product apart is more or less a requirement for a serious Magazine review at this point. For privately owned 3D printers this may not be feasible, so it would be unreasonable to expect this from owners.  But people who make a living reviewing stuff:  if you don't you are not serious about what you do.

If you want to learn about tearing down products, I suggest you watch videos by Dave Jones.  He routinely reviews equipment and a standard part of a thorough review is him taking the product apart and analyzing what is inside.  Here's an example of Dave having a look at the GoPro Hero 2.

And if you are a manufacturer and worry about teardowns:  you need to learn how you can benefit from this.  Dave Jones tore apart a Rigol bench lab power supply a while back.  Which uncovered some design errors in the thermal handling of the product.  Rigol responded to this by fixing the problem, and guess what:  since they have fixed it and since Dave has had a thorough look at the product: people now feel safe when buying it.  Because they know it is a good product and that Rigol deals with problems.

PS: I'm in the process of trying to resolve problems with a 3D printer I use for work.  No magazine review I have read correctly reflects what I am experiencing and what other users I have met through forums are experiencing.  I am giving the manufacturer time to resolve issues.  At the end of my current project I plan to write a blog posting or an article about the product and whether or not the issues got resolved.  If the problems with the machine cannot be resolved and if we can't return it for a refund I hope I'll have time to tear it down and possibly rebuild the machine using different 3D printer components.  We'll see what I have time for.

2014-11-14

An open letter to Bayerische Motoren Werke AG

Dear Assorted Doctors and Otherwise Scientifically Certified Ladies and Gentlemen of Bayerische Motoren Werke AG,

I would like to humbly submit my suggestion for extensions of your current automotive control platform:  the Behavioral Adjustment System.

Now, first things first.  The acronym BAS might easily be confused with that of the Biblical Archeology Society and Bulgarian Academy of Sciences, both of which are organizations not to be trifled with, so I would hereby like to propose the marketing brand Bellendtronic for this system.

Well then, let's get into the details without further ado.  What I propose is a system that after three consecutive failures on part of the vehicle operator to engage the appropriate turn signal before commencing a turn, the car will initiate a Behaviour Correction Event.   A Behavior Correction Event seems best implemented by deploying the primary automatic occupant restraint system on the driver side.  In colloquial terms also known as "the airbag at the center of the steering wheel".

In order to not interfere with the safe operation of the vehicle (if safe operation of your vehicles is indeed within the operational envelope of your customer base), I further propose that the Behavior Correction Event not be initiated until the next time the car has come to a full stop.

Should the driver attempt premature egress to avoid the Behavior Correction Event upon bringing the vehicle to a full stop, I recommend the appropriate supplemental occupant restraint system be deployed.  Or, again, in colloquial terms: "punch the miscreant in the ribs with one of the side airbags".

Then deploy the primary occupant restraint system once the operator is forcibly realigned into the deployment zone of the aforementioned primary occupant restraint system.

I strongly believe that an addition of this system, as a non-optional extension of your vehicle control systems, will go far towards reforming your current customer base so as to make your fine automobiles a more attractive alternative to those who labor under the misconception that your automobiles do not include an operable indicator stalk.

(I have made careful field observations over three decades and according to my notes, which by now comprise a mere 5.9 metric tons of cellulose-based storage medium, indicator stalks are either present or have at some point in time been present in all of your automobiles.  Thus any statement to the contrary is obviously vicious slander).

I will have you know I have conducted extensive research into the feasability of this system.  Both the fellow I usually see making weak tea at the office caffeination station AND a local authority on extraterrestrial life forms (who is also behind innovations such as shaving off his eyebrows and drawing dual eyebrows in their stead using a 3mm sharpie) agreed that this was indeed a most worthwhile idea worthy of your diligent pursuit.  I can, of course, produce notarised statements from the aforementioned gentlemen should this in any way help speed your decision process along.

I would also like to inform you that I have no claims to the proposed trademark Bellendtronic, though I would urge you to secure the trademark swiftly as Audi have a gearbox operation system for which the same trademark would be eminently applicable.

Thank you for your serious consideration.  I look forward to the enthusiasm with which you will no doubt embrace my foolproof and, if I may say so myself, obviously brilliant idea.

-Bjørn Borud, inventor of society-changing things.  Well, at least up to the point where they make a sharp noise and emit festively colored sparks followed by voluminous puffs of acrid smoke.

2014-10-28

Breaking the patent system by making liberal use of patents.

It is no secret that I am no fan of patents.  Although the original idea was a good one (make sure inventions were shared), people tend to forget that the patent system was created a long time ago.  A very, very long time ago.  It is hardly relevant for the pace at which all industries move at today.

In fact, if you can still find an industry that doesn't have a high innovation pace:  that industry is likely to experience disruption in the near future.

Innovation- and development/iteration speed are just two underlying parameters that look nothing like they did hundreds of years ago.   But the most important parameter that has changed is that the nature of the predators that prey on those who want to make things.

It is now a legitimate business proposition to do absolutely nothing but collect patents and then extort companies and people without the necessary funds to defend themselves.

The top-of-the-foodchain-predator is today is either a solidly funded, large corporation with an army of patent lawyers, ready to unleash a heavily skewed justice system upon you -- or the patent troll.  Which is usually ditto well funded since they pick on the weak first to bankroll taking on bigger fish later.  People like Nathan Myhrvold, who already has more money than Croesus, but still takes time out of his busy schedule to shake down the weak and defenseless for money.

Despite having written a brilliant book on Modernist Cuisine (which I own), he is still a villain and I still think he epitomizes what is standing in the way of innovation today. (Funny how Microsoft bred so many, for lack of a better word, assholes among the top brass, yet the founder appears to focus on allowing his wealth to do the maximum amount of good...).

So one question that has been on my mind lately is "how can we help make patents more obviously irrelevant faster?".

I got the idea from a friend of mine who routinely studies patents to come up with solutions for his own, personal projects.

Personally, I try not to read patents if I can help it.  I'm shaped by working for companies like Google, where knowledge of a non-company patent is seen as a huge risk.  Were I to come up with something clever, I don't want there to be reason to believe that I was informed by existing patents.  I have thus far treated patents like I would treat seepage from a nuclear facility:  I have stayed far, far away.

But I think it may be time to re-evaluate that approach.  I think it might be time to encourage hobbyists and makers to make as liberal use of patents in their own personal projects as possible. And to freely share any information that may help other people implement patented technologies.

Like 3D models that can be turned into product.  I'm not sure you can be legally faulted for reproducing an interpretive work of a document, though I may be wrong.  And even if I am not wrong, the courts where patent predators do their litigation have a very strong bias towards the patent holder.

There are technologies that makes this feasible.  Like 3D printing.  And I am not talking about the current crop of hot-snot-dispensing FDM-printers, but stuff that you can use to print metal parts.   The stuff that a lot of startups are scrambling to get into the hands of consumers in not that many years.   If something is covered by a patent,  and if enough people manufacture the object themselves:  you might be able to put a big dent in the patent industry because it would be financially infeasible to go after the infringers.

Just look at the price of mechanical parts for cars.  Within short you should be able to print these at prices affordable to private citizens.  And eventually:  cheaper than the part sells for today.

A typical name brand turbo (which is a pretty hairy component to make) costs about $1500.  How long before you can print a turbo below that cost in the privacy of your home? 10 years?

The idea is to de-value patents by making it financially infeasible to take would-be infringers to court.   Both because they are so many and because most of them will have no assets worth going after.  For several classes of patents this is now possible.   Within short, this will be possible for more classes of patents.

Waiting around for (corrupt) politicians to sensibly reform, or better yet:  abolish patents altogether, is not a winning strategy.  It won't happen without significant pressure.  It is high time that pressure was applied.

And of course, lobbyists will attack the enablers for massive scale patent infringement -- by demanding whole technologies be subject to stringent regulation.  Well, good luck with that.