A notch above a monkey

Ownership

As a person with a somewhat unusual fondness for measuring and modelling my own behavior I should be a happy buyer of gadgets for collecting data about myself and my environment. Yet so far I bought none, because they don’t seem to work well without (occasional) data sync with producer’s servers.

I really shouldn’t have to explain privacy standpoint of this. Describing my life and immediate environment in detail to a bunch of people I have never met, some of whom don’t even work for the company yet and trusting all of them that they will not compromise it for as long as they will keep it is to me self-evidently moronic.

But I also avoid such hardware even when data in question might not be particularly sensitive. If I am paying for something to be manufactured, then I expect to own it. If a gadget depends on an external service to be useful, then I am really only leasing it. Services disappear for many reasons and it doesn’t make much sense to rely on their availability unless you can host them yourself. I loath ads, but paying for a service is not a guarantee for its continuing presence either.

I am not against functionality that reasonably requires at least occasional connection to grid. Most social features probably do. Products like phones don’t even make sense without network. Web interfaces certainly do make these devices cheaper and more quickly evolving. So there are certainly good reasons beyond roping you in to make them partially off-loaded on web.

However I don’t want to use those features and I certainly don’t want to give up data I care about for features I don’t. What I expect from devices I buy is my control of data and purchased functionality without others meddling or peeking over my shoulders.

On ubiquitousness of 3D printing

As a proponent of a view that 3D printing will radically change our society I read with great interest a bunch of articles with a less enthusiastic outlook written by people who obviously have more relevant experience and knowledge than me. They don’t quite reach a consensus, but have a fairly uniform sentiment I would like to address. While I do agree with most of their arguments and conclusions, I don’t with all and more importantly I think they are kind of missing the point.

The above linked articles are really worth reading, but hopefully I won’t do them too much of disservice if I sum them up with: 3D printing will be too costly, too difficult, not useful enough and of too low general quality to have the same pattern of adoption as 2D printers which means they won’t end up in every home (with some type of computer).

Each of these points is true right now. It costs more to print an otherwise mass produced item (especially if you need to also buy a 3D printer). Of course this becomes less relevant if you want to create things that are not mass produced ( or at all ), but even then you would be better off using an existing printing service (as I did). However cost of printers and materials have come down tremendously in last few years and it’s not difficult for me to imagine that at some point they will become accessible enough to become an impulsive buy. If we only bought stuff we need when it makes rational economic sense, we would own far fewer things than we do. Often they just have to become cheap enough and as cars attest that doesn’t even mean cheap.

It is also true that preparing models for printing is not easy. However it is much easier than it used to be and I don’t see why it wouldn’t become even more so in the same way as have tools for other once specialist tasks (like photo editing). I am old enough to remember word processing of mid 80-ies and as much as incanting commands was unappealing then, you don’t see many people needing to struggle with this today. And there could be even more help in form of existing downloadable designs or 3D scanners which could reduce burden of design from scratch to making small corrections instead.

Will we need printers often enough? No idea. I print on paper only before traveling and would likely use 3D printer more often, but I suspect I represent mostly me. I don’t know why anyone would still need a printer, but enough of them do that there is no shortage of models aimed at home owners. I did notice how my brush with 3D printing changed the way I perceive plasticity of my environment and while it is hard to tell how my view and use would be shaped if printing was even more accessible (I expect more things would get fixed instead of replaced), it is even harder to imagine that they wouldn’t. I am sure this would be even more true for kids growing in environment which is more pliable than today’s.

An often repeated argument is that quality of printed stuff is not high enough. This may well be in most cases, but I expect will be less so over time. I don’t expect cheap printers or materials to catch up with expensive brethren or other options anytime soon if ever, but they may not need to. Illuminated manuscripts were supplanted by printed books even though they never achieved their quality. Books simply became good enough. As millions of Instagram photos prove deficiencies can also lead to its own esthetic (but I wouldn’t count on this).

It is difficult if not foolish to predict future of a particular technology, but when I do attempt it, I try to do two things. One is to list all its current limitations and try to imagine a future without them. If technology is not interesting enough without them, then it’s really hopeless. The other thing I do is to look at development so far and try to extrapolate what will happen to those limitations and how soon from technological and wider social context stand point.

I don’t expect 3D printing to follow an adoption curve of some other technology as this rarely happens. There is indeed a fundamental difference best captured by Jon Evans’ observation that we print on paper to convey information and use 3D printers to produce stuff. I do believe home 3D printers will eventually be at least as prevalent as paper printers if for no other reason because our appetite for stuff won’t go away as much as our need to use paper as a transport medium. However I also expect them to be present in houses void of geeks.

But my real point is that this doesn’t really matter. It seems there is an agreement that this technology together with others will radically transform our society and that bespoke manufacturing for individuals will again become more prevalent. Unless your business model absolutely depends on pushing millions of these printers in every home, does it really matter if I will print my designs on my printer or at a nearby corner shop?

I don’t think it does as I don’t care if additive approach of printers wins over subtractive one of mills (however I find grinding inherently less appealing). In any case I do expect personal manufacturing to influence but not eradicate manufacturing industry and it will be interesting to see how much of it will see it as a threat needed to be countered.

Subtracting sets to get non-referenced rows in table.

I had a problem today. Given two database tables with first having a foreign key pointing to second, find those rows in second table, which are not pointed to from first. Well, it was slightly more complicated than this, but this was the tricky part.

I tried to solve my problem using SQL , but I could not. I am not saying it can’t be done, but with my limited knowledge of SQL I could not produce a query that would not perform horribly. Working on production database under heavy use made this a real no-go.

After trying to come up with pure solution I finally gave up and decided to solve this problem pragmatically with some scripting. Turns out that too was more complicated than necessary. Unix shell tools are all you actually need, provided your dataset is not too big for your computer limitations (mostly memory).

Instead of searching for those rows directly, I changed my plan to create two sets of rows, first containing all possible candidates and second containing those from first set which are pointed to from first table. Subtracting second set from first would therefore give me exactly those rows which aren’t pointed to.

If file all contains a row-per-line list of all candidates and linked a similar list of those that are linked to, then you can get non-linked by running following command:

cat all linked | sort | uniq -u > non_linked

What this does is following. Sort will put duplicated rows together and -u option of uniq will display only unique lines which are those that can be found only in all . Problem solved.