Wherein The Internet Once Again Fails its Economics Course

| categories: politics, economics | View Comments

This shit needs to stop. For my health if no other reason. Learning about economics has thus far served me about like learning about kerning. My education is merely serving to render me acutely sensitive to a new and shockingly pervasive kind of ignorance.

It's somewhat my fault this time, since nothing but morbid curiosity could keep you going past the first few sentences. "What is the difference between selling and sharing?" the article offers up. I think it's playing devil's advocate or something, but the stage has been set: we're debating a pile of crunchy-granola distinctions between some nebulously-distinct forms of exchange.

Let's take it bit by bit:

For the past few years, the “sharing economy” has characterized itself
as a revolution.

Yes it has, and, to get right to what's being begged: no, it isn't. Social media has increased information exchange. More information means better-informed purchases, which reduces arbitrage, and faster, finer resource allocation, which may increase arbitrage if someone is in the right place to add a bit of friction.

But we're being set up for the big reveal, so try to act surprised.

While other cities fight back, California has attempted to codify new
“sharing” business models with new regulations. While San Francisco has
recently cracked down on some particularly high-volume Airbnb
renter-hosts, Chiu and other “sharing” advocates are trying to pass
legislation to make the practice legal.

So the entrenched business models have been less-than-successful in regulatory capture? Am I supposed to be upset? Still waiting for that big reveal...

Across the U.S., high costs of living are driving more of the employed
toward “side hustles,” i.e. unprotected freelance work, the kind
fostered by the sharing economy. Where workers don’t have the start-up
investments necessary to participate — the cars, homes, kitchens to
rent — then they can just rent those too.

So in a tough U.S economy, a system has arisen where people strapped for cash can find more work than they otherwise would, and have access to housing, vehicles, et cetera?

Still looking for a punch line...

But sharing businesses aren’t just creating new income streams from
nothing. In “disrupting” even troubled markets — the taxi industry has
had this coming for a long time — the glory of the peer economy comes
at the expense of other workers’ livelihoods.

Oh the humanity! New business models compete with old business models! And it's all because those mean venture capitalists are giving them money. Of course the west coast startup scene devours far more companies than survive, but we can't possibly take that as a sign that this change of guard represents a meaningful improvement in the market.

And besides, these new workers are unprotected! Clearly we can't let a new business model disrupt our sacred right to buy and sell labor under contracts structured exactly the way our fathers' and mothers' were. A cab company can change its business model, but that we the labor provider should also be required to update our business model? Scandalous! Surely the purpose of a market is to ensure the livelihood of its sellers, not to efficiently reallocate the resource exchanged upon it. The market is a tool to ensure social welfare, and if it isn't, I don't like it and it should go away!

But our society is not returning to a past utopia of collective social
confidence and equality because this utopia never existed. The sharing
economy doesn’t build trust — it trades on cultural homogeneity and
established social networks both online and in real life. Where it
builds new connections, it often replicates old patterns of privileged
access for some, and denial for others.

It's as if the author has never heard the words "efficient exchange." What do the poor have to gain by us preventing them from engaging in these new economic opportunities? You want the poor fed, and someone has offered them a means to get fed. Lives are getting better. Where's your complaint?

Interestingly we've made them rentiers over their few blessings; their income is now arbitrage based just like the very rich. I'd not be surprised if there was an equalizing effect to that, though I'm out of my depth now.

The best performers in Airbnb are white women, and the worst performers
are black men.

Awesome. Let's let corporations vote for us too! Then there will be no racism in the economy or the government!

Read and Post Comments

Side project update

| categories: luftballons, tech, libason | View Comments

Consider this the obligatory "sorry I don't post more" post.

I have a couple of econ/political rants brewing, and I'll get to one of those in a minute, but for today let's talk about software.


Making a game engine is hard.

I knew this, of course, and I planned for it. There's a reason that despite being little more than a messy OpenGL demo, Luftballons arrived on the net with a website, a mailing list, an IRC channel (#luftengine on Freenode), and a big list of lofty goals. I never thought I could do it alone, and, not being terribly sure how to promote a project that wasn't going to have any usable form for quite some time, I just put as much community infrastructure in place as I was able to and made some noise.

I have taken a single patch.

The internet is littered with the remains of game engines that never took off. If this just ends up being an ever-unfinished personal tinkering project, I've hit par for the course.

That said, a couple of personal friends have shown interest in poking around in the code lately, and I worked up the energy to dust the code off and look it over.

It no longer worked.

It seems one of the libraries I used to parse a certain thing I hate not only managed to change APIs in the gap, but introduce a fatal bug in the process. Bug filed. I've exercised some neighboring open source code, the project has done good in the world. Plus the experiment the developer had me try seems to work, so the demo works again on my laptop at least. Hopefully there will be a consumable patch soon.


Databases? New forms of algebra? Also hard.

Since release, the biggest thing that's shown up in libason is a disk B-tree file format which was intended to be the beginning of persistent storage. I'm a big believer in the "write one to throw away" software approach, and I will probably throw most of this away. I still don't know what I was thinking. I'm sorry. It's all wrong.

I'm still finding bugs in how we reduce values to simplest form too. That code is due for some major renovation soon. It's way too intricate for steady maintenance.

And that's it. See you in six months for my next apology.

Read and Post Comments

Complete Idiot's Guide to Bitcoin

| categories: tech, bitcoin | View Comments

Bitcoin is trickling into the mainstream, and the mainstream response is that they don't understand a lick of it.

The tech crowd perennially runs in to this trouble of explaining what the hell they just invented and why people want it. In industry settings there's usually a marketing department to help along. With more grass roots, open-sourcey movements there's often no such luck.

I think the problem, at least in Bitcoin's case, comes from three places:

  1. We can't seem to explain Bitcoin without explaining distributed computing, cryptography, or some other such complicated thing that the listener doesn't need to hear about.
  2. If we manage to get past the technical stuff, we somehow end up in some mind-bending philosophical macro-economics discussion. Turns out "what is currency?" has a very strange answer for a lot of people.
  3. When we do manage to clear out the theoretical cruft, we feel like the result is insulting to the listener's intelligence.

I've been thinking a lot on how I'd explain Bitcoin to the uninitiated, and I think I've figured out where to gloss over to take care of 1 and 2, and what calculated risks I'm willing to take on 3.

Disclaimer: Like I said, I'm glossing over. Hard. Really hard. For the technically inclined folks reading this, I'm going to come forth right now and say that there are some little things below that are just flat out incorrect. I know it feels strange; you're feeling point 3 right now, but to all of your corrections, I say: SHHHH! We're keeping this simple. Some facts are going to go missing.

So without further ado, here's my explanation of Bitcoin:

Let's start by talking about your debit card. Most of you probably have one, and have used it for some sort of over-the-counter purchase. As an example, we'll say your local coffee shop.

When you walk up to the counter and order your latte, the barista is standing in front of a computer connected to the internet. It may look like a little console with a keypad on it, it may be a normal desktop like you have at home with a big drawer underneath, or if you're at a newer, trendier coffee shop, it may well be an iPad with a small white square doohickey sticking out the side. All of these things are computers, and all of them need to be connected to the internet to do what they're about to do.

Now you hand over your card. The card gives the computer some information:

  1. Your name and bank account number.
  2. Where on the internet to contact your bank.
  3. Some security stuff to prove that this really is your card.

The little computer then connects to a big computer at your bank and says "Please transfer $4 from Pat Clemson's account to The Feisty Bean's account. Here's that security stuff to prove we have his debit card, and some other security stuff to prove that we really are The Feisty Bean."

That big computer at the bank has a list of all of the bank accounts, and how much money is in each, so it finds your bank account on the list, subtracts $4 from your balance, then finds The Feisty Bean and adds $4 to its balance.

And that's it. The numbers on the list changed, money has moved. There's nothing else to it. If that feels insubstantial just try not to think about it too hard.

So Bitcoin, like so many amusing things, begins with crazy libertarians.

One day a crazy libertarian says: "I don't like banks. They're big and central and everyone depends on them and the government is involved and it's scary and I hate it. I want to keep my own bank account."

So he puts a little file on his computer that says "Rand Atlas Taggart has $300." Then he calls his bank and, after an awkward conversation, convinces them to simply obliterate his account record. Now his $300 is only recorded in one place: on his computer, in a file he calls his "wallet file."

After a bunch of calls to all his crazy libertarian friends, wherein he convinces them to do the same thing, Rand goes out for coffee.

Like all great coffee shops, The Feisty Bean is owned by an ex-hippie, who totally digs Rand's style on the whole challenging the bank establishment thing. With some computer help from Rand, he puts all of The Feisty Bean's assets into a little file on the cash register computer's hard drive. Now, when Rand buys a cup of coffee, he tells the cashier some information about his computer and a password, and the cash register logs into his computer at home, reduces the amount of money in his wallet file by $4, and increases the amount of money in the wallet file on the cash register by $4. All of Rand's libertarian friends buy their coffee the same way.

And by now you've noticed the big problem:

"What if Rand just changes his file to make himself a millionaire? Can't he just open it and change how much money is in his account?"

Yep. He could, couldn't he? All he has to do is open that file again and change it to say "Rand Atlas Taggart has $300,000,000" and he's supposedly a millionaire. Basically, The Feisty Bean only knows Rand has enough money for his coffee because Rand's computer says so. With the old debit card system, they knew he had the money because the bank said so, and the bank has all sorts of regulation and monitoring from the government to keep them honest (don't get Rand started about whether or not that's actually working. Whoo boy).

Enter Bitcoin.

Are you ready for this? Bitcoin is a magic trick that keeps the crazy libertarians from editing their own bank files. You can pretty much stop there. You understand the core of Bitcoin now.

The way it works is each of the crazy libertarians, and The Feisty Bean, all run a little program on their computer that makes it talk to all the other computers and make sure they aren't modifying their wallet files. It's sort of a neighborhood watch program. This is the biggest gloss-over of them all so far, and if it feels shaky, you'll just have to take the leap of faith. It works, and it works really, really well. If Rand modifies his wallet file, not only will The Feisty Bean's cash register know it, but it will know exactly how much fake money he added. The more suspicious my explanation seems, the more impressed you should be with Bitcoin; it really was quite a feat to make it work and make it as reliable as it is.

That's basically the technical portion of it, now for the economics. In our example, Rand stored dollars in his wallet file. If he'd been Japanese, you might imagine he'd use Yen, or if he were Italian his wallet file might reference Euros. In reality, Bitcoin wallet files always store Bitcoins, which are a new currency that is separate from any country. This comes to a niggle in our original problem: so you can't modify your wallet file to give yourself money, but what about when it's created. How do we know you had that conversation with your bank? The reality is that was a bit of a lie; Rand would never be able to talk to his bank into destroying the money in his account. And his wallet? Our Bitcoin magic trick makes a new wallet start at zero.

So how do you get Bitcoins? Two ways. One is to simply buy some. This is the obvious way. You give someone your American Dollars or whatever have you and they put Bitcoins in your wallet in return.

The second way is called mining. Mining is a way you can create new Bitcoins from scratch. If all wallets started at zero, there had to be a process to make some initial Bitcoins, and mining is it. Mining is very hard; it involves solving a very complicated math problem, which requires specialized computers and takes a long time. This is on purpose; obviously you don't want anybody to be able to create a bunch of money out of thin air. Making it very hard, but still possible, means there's a place for new Bitcoins to come from, but since it takes work, you won't do it unless you think it's worth the work. Since mining actually gets harder and harder over time, less and less people should find it worth it. At present it usually requires special custom computing devices, and some experts calculate that the electricity to power the computer costs more than the money you can make doing it. Note that since mining gets harder over time, we can assume that it used to be much easier. The founders of Bitcoin mined the first coins, and were able to do it much more quickly. While some of them are now very hard to find (paranoid libertarians) we do know that many of them became very rich once people started being willing to pay real money to get Bitcoins.

Now let's talk about the controversies. First there's the economic issue. As mentioned, Bitcoins are created by mining. Mining seems to happen at a pretty steady rate, and as it gets harder, it's expected to slow down and eventually stop. Even if it doesn't there's a limit on how many Bitcoins can exist ever. By contrast, the U.S. Dollar is created and destroyed when the Federal Reserve decides it should be, which they do based on all sorts of factors, usually to try to keep the economy working well. Economists are arguing a lot right now over whether Bitcoins will work right given the way mining works. So far there's a little evidence to prove them right: there's been two incidents where the price of a Bitcoin was cut in half over night.

Then there's the legal issues. Governments like being in charge of currencies; so much so that they usually make it illegal for anyone else to do it. The U.S. Constitution forbids people from using other currencies. So far Bitcoin hasn't been tested in court in this country, but there's some worry that the whole enterprise could be outlawed.

And that's it. Maybe I've clarified something, or maybe I've just thrown another entry onto the "explain Bitcoin to me" pile. Here's hoping.

Read and Post Comments

Introducing ASON, and announcing libason 0.0.1

| categories: tech, libason | View Comments

I never much liked SQL.

I don't think it's a terribly controversial opinion. Apart from being pretty much the only option in its space, SQL doesn't have much to recommend it. It has confusing pretensions to natural language, it expects us to nest its expressions despite being incredibly verbose, it can't seem to shake a gross affection for capital letters, every single implementation is piled high with custom features, missing features, and strange voodoo, and it's got almost an entire imperative language built in to it, despite seeing most of its use from inside of other imperative languages. I like relational calculus well enough (it's the sort of crunchy, smarty-pants, pretensions-to-high-mathematics kind of comp sci I've always been in to), but its usual "business implementation" has never gotten along with me.

At the same time, I've always liked table-less databases. Designing and maintaining a schema is always more work than you expect, so a "just dump your dictionaries here" approach has instant appeal for the lazy and impatient, not to mention being simpler to reconcile with most modern imperative programming languages. Migrate-on-read also seems more engineer-friendly than trying to maintain migrations. I even prefer the atomicity model of some of the newer NoSQL databases like CouchDB to transactions, though I've yet to find an ORM that exposes it well.

It was my dislike of SQL and my preference for table-less that led me to look for an alternative to SQLite. I wanted a light, file-backed data store that could store table-less data (preferably JSON) and index it. I found tokyocabinet early, but while the author is being vague about it, it seems to be obsolete. kyotocabinet is the author's replacement, written in C++, and packaged for Fedora by yours truly, but it drops the table-less storage for simpler key-value stores, and the code quality leaves a lot to be desired. I will probably drop the package soon if nobody else is interested.

Then I started thinking about rolling my own. It was a problem that dealt in a lot of areas I happen to find fun (data structures, parsing, getting information through the VM to the disk without using O_DIRECT like an idiot), and while almost certainly a yak shave, I kept running in to this same yak, and I'd never once liked its haircut.

So, since formalism is how I personally drum up that froth of false confidence that precedes the birth of all great open source software, I set about formalizing a data model. I wanted to lend a semantic to JSON, which has some popularity already as a data format for table-less databases, and also extend it so I could reflect queries. I wanted to be able to describe not just a JSON value, but a set of such values, and from that set a subset, or a revision of that set with an item updated or removed.

And in this way was born Algebraic Serialized Object Notation, and a lengthy, crunchy whitepaper explaining how it works. Intimidating, perhaps, but at some point in the process I must have hit on some luck, because while specifying ASON is complicated, using it is simple.

Here is an ASON object:

{ "foo": 6, "bar": 7, "baz": "Cookies 'n' Cream" }

Just like JSON. Here is a collection of three ASON objects:

{ "type": "Student", "name": "Joe Thompson", "GPA": 3.5 } |
{ "type": "Student", "name": "Jeff Foxworthy", "GPA": 3.7 } |
{ "type": "Student", "name": "Smythe Littlesmythe", "GPA": 3.5 }

Here is a query to find all students with a GPA of 3.5:

{ "type": "Student", "GPA": 3.5, * }

Here is how to apply that query to the records above:

(   { "type": "Student", "name": "Joe Thompson", "GPA": 3.5 } |
    { "type": "Student", "name": "Jeff Foxworthy", "GPA": 3.7 } |
    { "type": "Student", "name": "Smythe Littlesmythe", "GPA": 3.5 }
) & { "type": "Student", "GPA": 3.5, * }

And here's the results:

{ "type": "Student", "name": "Joe Thompson", "GPA": 3.5 } |
{ "type": "Student", "name": "Smythe Littlesmythe", "GPA": 3.5 }

ASON's extensions should be apparent: we've basically allowed JSON patterns to be expressed as well as single values. While my intent was to specify a query language for a table-less database, using ASON much like regex to validate JSON values as you would strings is an obvious application.

For the database case, I opt to use the conjunction operation to join entries in a table. For example, that set of student values above could literally be read as "Joe Thompson or Jeff Foxworthy or Smythe Littlesmythe" if we interpreted it as a pattern rather than as a data set. The "&" operator calculates "pattern intersections," which effectively returns our matches (intersecting patterns is possible for regular expressions as well, though few practical syntaxes implement this).

This is all well and good, but a cute formalization is little more than cute. Without an implementation to play with, there's not much use in it.

And thus the point of this post. I would like to announce the first early alpha release of libason, version 0.0.1. Download here. This is a more-or-less complete implementation of ASON as it is today, in the form of a very, very slow in-memory database (what do you want? it's an early alpha). It comes with a handy REPL program called asonq, which will let you play around with the syntax, and a full C API for parsing and manipulating ASON values (python bindings to come soon... I hope). I intend for this to grow an on-disk database module, thus fulfilling my needs, and possibly have a proper DB server built over it, much like tokyotyrant sat atop tokyocabinet. There's also some more syntax to specify, mostly around updating values.

For now, I have something roughly complete, and interesting. The API documentation is shipped as the manpage ason_values(3) and some others which should be linked by association. Hopefully I can persuade a few curious souls to play around with it. Drop your bugs at github.

Read and Post Comments

Abuse of Privilege

| categories: politics | View Comments

I did a tour as a Capital-R Republican in high school. Combative as I was and still am, I've heard just about every line of argument and reasoning one would expect to be slung at a Capital-R Republican, and I feel like I developed a pretty decent command of the vocabulary. So while I'm sure the term must be older than it seems, it feels like "privilege" has recently been elevated in the popular lexicon. I feel like I first heard it only a few years ago, and now it's nearly a third of the words on my Facebook wall. As a visual aid, here's the always-excellent Bob Chipman bringing it out against South Park.

I'll grant it's taken some of the venom out of the rhetoric. It used to be you could ask someone what they had against rich/white/male/cis/straight people and, if you caught a person with weak resolve in a sufficiently agitated state, they'd probably mix enough frustration in with their response to commit some moderate-to-serious ad hominem. Point to the bitter crazy person, offer calm snark, argument over. With most of the U.S. population in a perpetual state of "weak and sufficiently agitated," progressive rhetoric was pretty sorely lacking in vessels capable of conveying the progressive gospel without being tripped into a conniption fit.

Privilege seems to emerge as a kind of stand-in answer to these usually-inflammatory questions. It is in short a statement of exactly what's wrong with all those demographics, constructed in a way that's neutral and blameless: you can't help that you have privilege, but you should acknowledge it and let that knowledge influence your opinions. What privilege constitutes, how it should influence your opinions, etc. tends to mutate, and we'll get to that in a moment, but the fact that it packages a (usually) non-attacking argument for a rhetorical situation many have trouble navigating is what gives it its value.

Of course there's a couple of problems with packaging arguments in single words: you can use them without understanding them, and you can use them without making your opponents understand. Preventing privilege from turning in to a rhetorical pleestop is exactly the sort of task that broad, decentralized political movements are bad at. People generally aren't much interested in correcting people on their own side for bad rhetorical form, and deciding who is and is not proxy to the central authority on a given ideology is a hard problem for both the speakers and the audience. Meanwhile the listener isn't necessarily much educated by the assertion. If he hears "privilege" and understands "shut up and take it because you're white," who's to tell him he's wrong? Our naive progressive is the one that should be making him understand what privilege means, but they dropped the mic and went on to their adoring fans. Is this a "just fucking Google it" moment? Is there no fallacy in "go figure out why you're wrong?" I'd say as-is, our naive progressive is as guilty as if they had said exactly what our listener understood, but then I have these radical, new-fangled ideas about words meaning nothing beyond what they successfully communicate.

But I don't think privilege's weakness stops here. The bigger problem is that, while neatly packaged, the evidence and context don't come in the box, and often even when expanded privilege ends up constituting a weaker argument. People don't just fail to understand or explain privilege, they fail to explain how and why it applies. Let's go down a few examples of how privilege is used in arguments, and see if, as I suspect, the arguments can be made stronger by doing without privilege as a concept.

Privilege as lack of empathy

This is the weakest use of privilege, and also the one most distant from what I would assume was its original intended meaning. Here the word privilege basically condenses the traditional "bleeding heart" argument. It cites the opponent's failure to "walk a mile in another's shoes."

Argumentum ad misercordiam has been wrong for long enough to have a Latin name. As I've discussed before it's probably also worth noting that the opposite premise is built into our legal system. More empathetic does not equate to more correct. I can be quivering in mortification at the plight of the starving, but it doesn't make spending two thirds of GDP to buy the lot of them a can of soup to share between them a good idea. We don't need to go much further with this one, but it is related to another, stronger form.

Privilege as isolation

This use of privilege asserts that we don't know the hardships of the oppressed class, in the literal sense. It's a subtle distinction, and it's often quickly corrupted into the previous form (you don't know, and you can't "really know") but the subtle difference is enough to render it technically valid. In its highest form, it's essentially another statement of the fallacy of anecdote: use of a single instance (in this case your own privileged experience) where a broader representative sample is required.

So why not just call it that?

The irony here is that this use of privilege becomes more bitter and nonobjective precisely because it points to a real problem. You're pointing out a common fallacy, emphasizing a mistake people make all the time, and you're choosing an inherently class-loaded way of doing it. Why not just point out the rhetorical flaw and leave out the feather-rustling categorization of your opponent? Argument from anecdote doesn't need a new name, let alone a demographically targeted one.

Privilege as a correction of rule utilitarianism

Ah, now we're really getting somewhere. This is the most structurally sound meaning of privilege: the rules governing moral behavior are violated in ways that disproportionately affect the happiness of certain groups, therefore adding corrective rules that disproportionately affect those groups yields a practical benefit to net happiness. Put another way: the rules shouldn't apply the same way to everyone because the rule-breakers don't hurt everyone to the same degree.

It's an intriguing point. The problem is it's rarely backed up. I heard a proponent of affirmative action respond to the idea that anyone found the policies unjust with simply "remember your privilege!" No further discussion. But privilege in this form doesn't necessarily justify affirmative action. What degree of alteration is appropriate given the degree of oppression the groups in question are experiencing? Is the policy self-scaling so it fades naturally with the oppression it combats, or are we trusting lawmakers to make continuous adjustments? How are you measuring the net happiness gain versus the happiness lost to injustice? Is there a more efficient way? Did you even ask the economics department to look over your notes?

Without all of these questions answered, and answered very carefully, it's not entirely reasonable to expect people to allow adjustments to their rights. In stead we see appeals to the previous forms. Privilege is something you should feel guilty about. You should be thrilled at the opportunity to atone! Now stop asking all these silly questions. But rigor doesn't step out of the way of anything, even good intentions.

Privilege as "shut up and take it"

I was out drinking one night in the company of someone I'd known for quite some time. He was a homosexual, which I knew and which we had discussed before. He certainly new I was not. There was never the slightest bit of tension between us in that regard, but for whatever reason he decided to come on to me that night, with a level of inappropriateness that included putting his hands on me.

So I remembered my privilege.

It must be my homophobia that's making me uncomfortable I thought. This felt like a violation of my rights, but... no... that happens to women and minorities and others at the hands of privileged power-holding people like me. Surely I couldn't be the victim here.

So I sat in stunned silence until something, my own tortured body language or the bartender's growing discomfort, convinced him to lay off.

This is the damage that haphazard application of privilege does. It's a cry to suspend the conventional notion of rights wherever progressives find it complicates their argument, and the internalization of that idea is poisonous. It may be useful when applied by people with strong arguments, but for now I'm convinced that the academics that coined the term need to revoke the general public's "privilege" privileges.

Read and Post Comments

« Previous Page -- Next Page »