Supersonic Man

March 12, 2015


Filed under: Hobbyism and Nerdry — Supersonic Man @ 8:16 pm

Well I guess there’s one category of post I can still put here: nerd notes that none of my friends care about.  These may end up being little more than notes to myself.

I’ve been looking at the Javascript property window.devicePixelRatio.  It’s a way to compensate for the way that browsers more and more often separate the definition of a CSS “px” from a physical device pixel.  It started with Apple’s “retina” iPhones, which had twice the pixel density but didn’t want to display web pages half as big because of it.  So they set up the browser so that one “px” would be two physical pixels.  As phone displays got denser, a bunch of other manufacturers followed suit: on my HTC One, for instance, it’s three physical pixels per “px”.  And this value is reflected in the Javascript API with the property window.devicePixelRatio.

So far, no problem — everybody gets a display that works pretty well on their mobile device regardless of its density.  Where things get awkward is when this comes back to the desktop browser.  Chrome and Firefox now support devicePixelRatio in Javascript.  But unlike the mobile browsers, the value is changeable: it varies depending on the zoom selected by the user, whereas on a phone, zooming means just changing your area of view over a layout that mostly remains fixed.  In Chrome, it starts as 1.0, but if you hit ctrl-plus, it becomes 1.1, then 1.25, then 1.5, then 1.75, and so on.  In Firefox, it goes from 1.0 to 1.25 to 1.5 to 1.76470589 (don’t ask me to explain that last one).

What bugs me is that Firefox does not start out at 1.0.  Since a year or two ago, they take the initial ratio from the host operating system’s monitor pixel density setting, which in Windows is controlled by the desktop text size setting.  When you pick “smaller”, the ratio is 1.0, for “medium” it’s 1.25, and for “larger” it’s 1.5… and like a lot of people, I use “medium”.  So Firefox starts out at 125% zoom on every website, unless you install an add-on to change that behavior.

And mostly, this larger zoom is a good thing.  It makes the website look about the size it was intended to look.  But there’s one situation where this zoom ratio is bad, and that’s when viewing images at full size.  See, the browser has to resize the image in much the same way that you’d do in a program like Photoshop, and if you’ve messed around with resizing in such programs, you’ve likely noticed that the results are worst when the amount of change in size is small.  Cut a picture to half size or blow it up triple, and the results are no worse than you’d expect, but magnify or shrink it just a little and you get a ton of extra blurriness.  (Or pixelated graininess, depending on the type of size-changing you select.)  This is because changing sizes by a small ratio, such as 1.25, combines the imprecision of both formats.  Each image’s pixelization process involves a roundoff error in where a given picture detail is located, and resizing adds together the roundoff error of both scales.  When you change by a large ratio, the amount of detail in the picture is nearly identical to what you could see in the smaller of the two sizes, but with a small fractional ratio, the result is not much better than half as sharp as it would be if it were created originally in either of the two sizes.

So, when my website hosts large images and I don’t want them fuzzified, I’d like to find a way to fool browsers into showing the image at exactly a 1.0 pixel ratio, if it’s attempting to use an awkward ratio like 1.25.  If the ratio gets to 1.5 or higher, fine, resize it, but if you’re trying to resize it a little bit, I’d much rather have 1.0.  That’s why I’m investigating window.devicePixelRatio: so I can make a Javascript hack that will change the sizing of images so that, should I so desire, they look their best and sharpest rather than looking correctly proportioned to the text and stuff around them.  Sometimes the proportion doesn’t matter.

Unfortunately, IE 10 also looks at the Windows desktop size setting, and starts out with an initial zoom of 125%… but it does not support the devicePixelRatio property.  So for now, if I make such a fix, it’ll basically be for Firefox only.

…Unless, that is, I make a separate CSS media query for each individual pixel ratio.  There probably aren’t that many to be found out in the wild: 1.1, 1.25, and 1.33 are probably about it for common cases.  But on the other hand, I don’t want these rules to snap in and out of action as the user zooms through the different ratios. JavaScript would be better because it could change the picture’s size once, and then any zooming done after that has no unexpected effect.

March 1, 2015

winding down

Filed under: life,the future!,thoughtful handwaving — Supersonic Man @ 7:26 pm

Nobody reads this blog. Even the index page of my personal website gets a lot more interest than this blog does. Even my secondary website for superhero movies does.  The only time I get a noticeable number of readers here is when I link a post from social media.

And yet, some of my most serious recent writing is here, because today’s social media sites — the ones with people you know on them, anyway — generally suck for long-form writing.  So what I’m doing is extracting the major posts from this blog, and putting them onto my main website as permanent pages.  This makes sense because some of them were already being subjected to repeated revisions.

Since many of these posts were about topics having to do with the future, or at least with science, the new website section where they’re being put is called The Future!.  Check it out.  Back here, meanwhile, a number of posts are now just one line pointers to the website.

There are still some longer posts that haven’t been moved, mainly political ones.  Maybe I’ll grab some of those in a second wave, or maybe not.  Also, lots of bird pictures — I have never updated the ancient photography section of my website to include my current bird photography.  That needs doing someday.

In any case, the point is that I’m no longer going to be investing effort in this blog.  The number of new posts will be significantly reduced and at some point will probably cease.

February 19, 2015

reactionless drives

Filed under: Hobbyism and Nerdry — Supersonic Man @ 8:37 am

This post has been promoted to a permanent location on my website, here.

January 23, 2015

Old fears of consumerism

Filed under: Uncategorized — Supersonic Man @ 7:56 am

Do you remember how, back in the fifties and sixties and seventies, everyone was worrying about how consumerism and advertising and keeping-up-with-the-Joneses-ism was going to be bad for society, because it would push everyone to constantly spend all their money on useless stuff they didn’t need, to benefit manufacturers and advertisers more than themselves?  I wonder why it never occurred to us back then that the Powers that Be could easily cut out the middleman, and get that money with a lot less effort by simply not paying decent wages anymore.

January 3, 2015

Organics meet Robotics

Filed under: the future!,thoughtful handwaving — Supersonic Man @ 11:21 am

This post has been promoted to a permanent page on my website, located here.

December 14, 2014

stages of accumulation of wealth

Filed under: Uncategorized — Supersonic Man @ 10:42 am

In the first stage, people work hard and prosper, and a few of them become rich.

In the second stage, the rich become an established class, able to grow their wealth through investment, or waste it in idleness.  Successful working people rise up to replenish this class, while its less competent members drop out.

In the third stage, the class has political power and sets the terms for how working people can prosper.  They control, and take a big cut from, most means by which it’s possible to rise through hard work.  Both the upper and the middle classes still have growth, but moving between classes becomes rare.

In the fourth stage, the upper class convinces itself that the wealth produced by labor is actually generated by capital, and that therefore they are entitled to it.  Now the ruling class’s wealth grows while working people make no gains at all, and are reduced to just struggling to stay above their less fortunate neighbors.

In the final stage, the ruling class decides it’s entitled to not just the new wealth produced by working people, but to their existing assets as well.  They try to take all money from everyone and reduce everyone but themselves to poverty.  To succeed fully would, of course, collapse the whole system, or at least reduce it to something no more advanced than feudalism, but they try to cut it as close as possible while keeping everyone still toiling. This stage usually only reaches its complete form when the target people live far away from their masters, after they’ve been conquered or colonized.

We’re solidly in the fourth stage now and some are recklessly trying to push us toward the fifth.  But the good news is, we can turn back at any time.  We’ve done it before.

November 24, 2014

what is liberalism?

Filed under: Rantation and Politicizing — Supersonic Man @ 12:06 pm

I’ve talked a number of times about conservatism here and elsewhere, but rather little about liberalism.  If I’m a liberal, what does that mean?  I think I now have a clear description of what I think it means to be a liberal.  If I were to try to state what I think liberalism stands for in one sentence, giving it a sort of mission statement, I’d say this:

We the people have the right and the responsibility to manage our social institutions so that they work to our benefit.

In other words, if our political and economic systems are not serving us, we have the right to choose ones which do.  We have every right to modify, adjust, debug, or even wholly replace our laws and public institutions in order to improve their outcomes.  They are ours.  We created them, and their purpose is to serve us, and not vice versa.  And when an institution is working badly, we don’t just have a right to adjust it, but a duty.  Neglect and inattention to problems with them are irresponsible.

When I listen to conservative critiques of liberal ideas, it seems to me that no matter what kind of conservative perspective it comes from — whether feudal or theocratic or law-n-order or laissez-faire capitalist or even anarcho-libertarian — what they have in common is a refusal to admit this right to choose.  They may claim that it’s impossible, that it’s unworkable, that it’s immoral, or that it’s just too risky… but all come down to someone with power telling you that you need to accept and embrace and surrender to the system as it is, or as they would like to make it.  They all agree that for you to change the system to your taste is unacceptable — that it’s wrong and harmful for you to try.  They expect society to work by certain rules, and once those rules are established, they get treated as sacrosanct. And in the end, they see themselves as having the moral authority to decree what is right for society, while you lack that authority unless you happen to agree with them.

Even those who boast of seeking to lift the burden of law from you as much as possible, in the name of liberty, follow this same pattern: they treat their no-rules metarule as morally inviolable.  And if the consequences of living within their system turn out to be harmful or limiting to you, that’s your problem, not theirs.  You should have worked harder to make the best of the hand you were dealt.  And if you ask whether the people as a whole are better off with these rules, their answer is either propaganda that says “of course they are” with no data to back it up, or to tell you that your question is the wrong one to ask. Their goal in this is to exclude discussion of alternate choices — to pretend their way is the only real alternative.

Any system will develop problems if you leave it running long enough without adjustment.  Rules that seem balanced and fair at first start to produce uneven rewards for those who have a chance to take advantage of loopholes or artificial opportunities, or they start encouraging unhelpful behaviors that weren’t intended by the drafters of the laws.  The way to handle these problems is to dynamically adjust the system as you go along.  By responding actively to issues and problems, you can keep imbalances and flaws from blowing up to catastrophic size.  Liberalism is not just the recognition that we have the right to drastically rewrite the social order if necessary: it’s also a recognition that we have a responsibility, once we have a good system, to constantly make small tweaks and adjustments to keep it running well.  Policy has to be active and responsive, not static holy writ.  In other words, we need to govern.  We do this ongoing adjustment of policy on the basis of whether the system is producing desirable outcomes, not by whether it embodies desirable moral virtues on paper.  Antigovernment ideology basically says we should let problems run their course unabated, instead of allowing ourselves to catch them small — they’re telling us that to actively fix things is not a job we can be trusted wth.

One common way — possibly the most common way — that a social problem can grow out of control is the development of a privileged ruling class.  In the end, what system you pick initially almost doesn’t matter: whether it’s tribal anarchy, warlordism, feudal aristocracy, theocracy, corporatism, anarcho-capitalism, socialism, or communism, they’ll all eventually produce a minority group which has large and increasing power, while the power remaining with the majority decreases.  This is because whatever allows one person to get a little bit ahead of those around him will then allow him, once he’s gained that ground, to improve his advantage further.  Any system will have some tendency to be pulled toward this outcome, no matter what principle it starts with!  The only way history has shown that this growing advantage for a few can be held back, is when the people have the agency to make countermoves to check the growth of excess power and privilege, in whichever particular areas it starts to crop up.  This is why we have things like banking regulations — because they were needed in order to counteract the concentration of wealth and power into places where they no longer benefit society.  They were a pragmatic empirical response to an observed problem that was undermining the working of capitalism. When such regulations are repealed, that undue concentration comes right back, so we need to keep them.

Antiregulatory demagogues like to warn of slippery slopes, where overregulation will produce terrible stifling results.  But when regulation is dynamic and active and based on outcomes, this becomes a non-problem: when things start to have a bad effect, they’re corrected.  I believe that application of this dynamic approach is what’s responsible for every historical success at producing free and prosperous societies with widespread opportunity.  Every society that has provided real liberty and opportunity for average citizens has been essentially liberal. There has never been another way to do it.  Of all the ways that people have tried to produce a thriving society, only the ones that allow this kind of responsiveness have worked well.  Nobody can plan a social order that will, a priori, support widespread opportunity and a large middle class (or whatever other definition of a successful society you wish to use) over indefinite time.  You can only keep that going by reacting to imbalances that undercut your desired outcome.

I think this definition clarifies some things that might otherwise be confusing, such as the paradox of Soviet communism: the Russian Revolution was clearly liberal, yet the Soviet Union which arose from it was not at all liberal, even though they were both based on the same values and rhetoric.  This definition clarifies that the ideology is not what matters.  What matters is responsiveness to the public. One allowed the people to make changes and the other did not.

It also helps explain how Russian democracy fell apart after the fall of the USSR. America’s ruling class largely assumed that once they could vote and buy Coca-Cola, the job was done and democracy had triumphed, so they left the Russians to sink or swim on their own. They forgot that it takes ongoing effort and skill to maintain a functioning free society, and that people without working institutions in place would need some help.

Speaking of outcomes, of course, raises the question of how we decide what outcomes are desirable.  You can be liberal by my above definition without necessarily being just or democratic.  Consider the Austro-Hungarian emperor Joseph II: he was very liberal compared to other Emperors, in that he reformed many dysfunctional old feudal institutions in order to improve opportunity for ordinary people, but when it came to his own power, he was still an unapologetic centrist authoritarian.  Conservatives tend to worry that this is what liberalism could lead to.  Will liberal forces get caught up in some enthusiasm that makes them forget the “we the people” part?  In theory, it’s certainly possible.

But I’m not nearly as worried about the question of deciding which outcomes are desirable as you might think.  I see that the people, when given a true choice, can mostly be counted on to support liberty over slavery, equality over privilege, and prudence over recklessness or indulgence.  Different conservative movements have widely varying ideas of what kind of society everyone should have to live under, and liberal people’s ideas of what they’d like to see also have lots of variety.  But when you put everyone together, basic fairness and justice are concepts that almost everyone supports.  And if they occasionally forget that, they will remember it when reminded.  So I consider the question of exactly what outcomes to pursue to be a secondary issue.  Given a true choice in the matter, the people can normally be depended upon choose fairly well.  The important thing is just that they are really able to have that choice — the opportunity to notice when something isn’t working, or when they’re being taken advantage of, and do something about it.

But now that I’ve written all that, it occurs to me that there’s a simpler and more familiar way to define liberalism: it is government of the people, by the people, and for the people.  Any form of conservatism or other illiberality amounts to trying to oppose one of those three phrases.  Anarchists oppose government of the people, preferring to be ungoverned.  Monarchists and theocrats and anyone else who favors a ruling class opposes government by the people.  But most important for defining liberalism is the idea of government for the people.  What today’s antigovernment right wingers and their corporatist leaders oppose is the idea of a government that is actively on our side.  Their vision of government is, at best, that it should be neutral and passive.  For libertarians, this neutrality is ideal.  But being “for the people” does not just mean that the government isn’t corrupted to serve the few over the many; it also means that it isn’t indifferent.  Our government should be on our side, actively supporting us in striving for success — it should be “for” us like a sports fan is “for” his team.  That is the crux of what liberals favor and conservatives oppose.

July 19, 2014

Freedom and Christianity

Filed under: Rantation and Politicizing — Supersonic Man @ 7:49 am

Why do so many people who believe strongly in freedom also believe strongly in the Christian bible? The two aren’t particularly compatible. In the old testament, slavery is endorsed and its victims are told to know their place. (There is one exception: Deuteronomy forbids sending escaped slaves back.) And the new testament isn’t really any better: its spiritual virtues are all about humility and submission, not just to God but to earthly masters as well.

Small wonder that some would decide that the divine figure who represents liberty is not Christ or Yahweh, but Satan. He’s all about letting you make your own choices and live with the results. But is the Satanic approach any better? That’s where you can do whatever you want, not just for yourself, but against anyone else. Take from your neighbor if he’s weaker than you, rape anyone you can catch, or despoil things that other people depend on — it’s all good with Big Red. He’s even less oppposed to slavery than Jesus was.

Neither offers any concept of human rights. Those are a strictly secular invention. And without them, there’s no way for a society that values freedom to preserve it in practice.

June 19, 2014

the Swift programming language(s)

Filed under: Hobbyism and Nerdry,thoughtful handwaving — Supersonic Man @ 9:52 pm

So Apple is regretting the corner they painted themselves into by having their core development language be Objective-C.  This language is a horrid mashup made half of Smalltalk and half of traditional unreconstructed C.  Compared to C++, the modern half is more modern, but the primitive half is more primitive.  Steve Jobs used it for NeXT during his time away from Apple, and brought it back with him.  But what looked cool and exciting in 1986 is looking awfully outdated today.

The trend in the industry is clearly moving away from these half-and-half languages, toward stuff that doesn’t inherit primitive baggage from the previous century.  Microsoft has had great success by stripping all the old C-isms out of C++ to make C#, and Java — the oldest and crudest of this new generation of programming languages — may still be the world’s most widely used language, even though most people probably now see it as something that’s had its day and is not the place to invest future effort.

Now Apple has announced a nu-school language of their own, to replace Objectionable-C.  They’re calling it Swift.  It’s even more hep and now and with-it than C#. There’s just one problem: there’s already another computer language using the name.  It’s a scripting language for parallel computing.  Its purpose is to make it easy to spread work over many computers at once.  And this, to me, is far more interesting than Apple’s new me-too language.  (Or any of the other new contenders coming up, like Google’s Go or the Mozilla foundation’s Rust.)

See, massive parallelism is where the future of computing lies.  If you haven’t noticed, desktop CPUs aren’t improving by leaps and bounds anymore like they used to.  Speeds and capacities are showing a much flatter growth curve than they did five years ago.  You can’t keep making the same old CPUs faster and smaller… you run into physical limits.

And this means that if we want tomorrow’s computers to be capable of feats qualitatively beyond what today’s can do — stuff like understanding natural language, or running a realistic VR simulation, or making robots capable of general-purpose labor — the only way to get there is through massive parallelism.  I think that in a decade or two, we’ll mainly compare computer performance specs not with gigahertz or teraflops, but with kilocores or megacores.  That is, by the degree of parallelism.

One problem is that 95% of programming is still done in a single-tasking form.  Most programmers have little idea of how to really organize computing tasks in parallel rather than in series. There’s very little teaching and training being directed toward unlearning that traditional approach, which soon is going to be far too limiting.  Promulgating a new language built around the idea — especially one that makes it as simple and easy as possible — strikes me as a very positive and helpful step to take.  I’m really disappointed that Apple has chosen to dump on that helpful effort by trying to steal its name.

June 12, 2014

getting through the Dumb Layer

Filed under: Rantation and Politicizing,thoughtful handwaving — Supersonic Man @ 1:38 pm

I am defining a new term, “the dumb layer”.  What I mean by the term is, any layer of human interface which is designed to deal quickly, or at low cost, with simple issues and questions that do not (or which someone assumes should not) require an intelligent response.  Some examples of Dumb Layers are:

  • voice menu systems that answer telephones, which you have to navigate through (or even actively outwit) in order to speak to a live person
  • software user interfaces which hide their more complex features behind some kind of gateway where you have to select “advanced settings” or “expert mode”
  • scripts which tell customer service workers to answer all incoming queries initially with a canned response covering basic common issues, so that you never get a relevant or thoughtful reply until you send in a followup query
  • bureaucracies which routinely reject legitimate requests for action until you show persistence in nagging them, or which ignore you until you submit lots of “required” paperwork
  • software which has a simple GUI to make it easy to use, but also a command-line or script-based interface which is more powerful
  • anything that appears when you click a Help button
  • anything that provides premade style templates as an alternative to manual styling
  • the Check Engine light in your car

There are lots more types.  A lot of times, a Dumb Layer is a feature of a machine, with the goal being ease of use for the majority, but there are lots of human institutions that also have a Dumb Layer, implemented formally as a set of rules that employees are instructed to follow in dealing with the public, or informally as an attitude of lackadaisicalness toward anyone who they think they can safely ignore.

Dumb Layer design wasn’t very common when I was young.  Nowadays, Dumb Layers seem to be everywhere.  And if you want good service, getting it depends on how adroit one becomes at penetrating through the Dumb Layer to reach someone who is empowered to think about what they’re doing.  This becomes annoying if one has to have an extended back-and-forth over several days, particularly over the phone, as you may have to redundantly re-navigate the Dumb Layer on each new call.

Sometime, designers and authorities are seduced into believing that the Dumb Layer should be able to do everything, and there’s no need to let anyone through to anything smarter.  This makes economic sense if you’re providing some service at a super low price and can’t afford to give interactive support.  But it can also afflict systems and institutions that really don’t have any excuse.  Such systems can gradually become acutely dysfunctional, even as superficially most business goes on normally with no problems.

Note: sometimes what appears to be a Dumb Layer is actually a security layer, and needs to be there to limit unauthorized access.  And sometimes it’s a safety feature, like traction control and antilock brakes.  (A Harley-Davidson has no dumb layer.)

I wrote a post here a while back about how Google and other search engines seem to actually be getting less useful as they “improve”.  I think this is an instance of the dumb layer taking over.  The smart layer of Google is getting more and more inaccessible, and Bing and the others don’t seem to be any better.

Lastly, I just want to applaud some organizations which have chosen to have no Dumb Layer.  Wikipedia is one: you search for advanced quantum mechanics or unsolved problems in mathematics, and you get the whole enchilada plopped down right in front of you, not filtered or simplified in any way — just as the ability to add new content is right there with no filter, as long as you don’t abuse it.  To me, this makes it not just the largest and most accessible encyclopedia ever assembled, but also the most genuinely useful.  People may put in facetious stuff, such as describing Solange Knowles as “Jay-Z’s 100th problem”, but every other encyclopedia loses far more value because of all the detail that the editors decide has to be left out as not of broad enough interest.

I don’t use Photoshop, but as I understand it, it has no dumb layer.  This is one reason people consider it the definitive tool.  (I use less expensive competing software such as DxO, which does have a bit of a dumb layer, but you can quickly un-hide all the smart bits.) Photoshop is an example of something common in many fields: the cheap products have thick dumb layers, and the expensive elite products lack them. Cameras, for instance: the more you pay, the fewer controls and options are hidden in “helpful” menus. The same applies to music gear: keyboards and mixers and production software get de-dumbed as you pay more. The ultimate undumb musical tool is, like, a Stradivarius violin: pay millions and it doesn’t even come with a chinrest.

One reason people often prefer Android to iOS is because its dumb layer is more permeable.

Anything that is shared as “open source” is a counterstrike against dumb layers.

Next Page »

The Rubric Theme. Create a free website or blog at


Get every new post delivered to your Inbox.