The Debt Ceiling is one of those things that seems entirely reasonable in theory, but in practice is utterly insane. Here's the problem.
The government is required to spend a certain amount of money. How much? That's up to Congress, which sets the budget. The executive can't reduce that amount of money unilaterally.
However, Congress also sets a "Debt limit" which means the executive may run out of money, be unable to borrow more, and find it cannot spend the money congress has told it to.
So what's the point? In practice, the only purpose the ceiling serves is to allow congress to create an artificial crisis whenever it wants. If Congress actually wants to reduce the amount of debt, or put a ceiling on it, it has always had the power to do so. The only purpose of the ceiling is to create a crisis and make it appear to be the executive's fault.
What's Obama doing about this? Answer: I don't know. Obama has ruled out taking the "constitutional option" by all accounts - basically saying "Screw you guys, you're telling me to break the law whatever happens, which by definition means your laws are unconstitutional, so I'm going to ignore the limit which appears to be the law that's the problem". Obama has a habit - public option, DADT, etc - of pretending his hands are tied when, in fact, he actually supports the outcome anyway, and his recent claim that this was a historic opportunity to cut social security makes me think that he, ultimately, wants to cut government spending.
Recently I read an article in the Washington Post which included a quote from Obama, in 2006, saying he was going to vote against an increase in the debt ceiling as a senator, which he and the democratic caucus ultimately did. While some protested this was a typical case of the MSM trying to be "balanced" using a "both sides do it" argument, the WP got this right. Yes, Obama was right that in 2006, when the economy was doing well, paying down the debt was the right approach. Virtually every mainstream, sane, economics system teaches you that in Econ 101. However, the only method to achieve this is to reduce the government's spending mandates. Obama didn't try to do that, he simply voted for something that would create a crisis.
The debt ceiling is not an effective method to reduce the debt. It does create uncertainty in the markets, and will cause lenders to demand higher interest rates for government borrowing in future, and it'll cause chaos if it's actually hit. It's a stupid idea, and it has to go.
Sunday, July 10, 2011
Saturday, July 9, 2011
Investing in the stock market
This week I finally bit the bullet and opened a trading account (TD Ameritrade, in case you're wondering, but that's neither an endorsement or a criticism.)
Why invest now? Well, why not? One thing I've realized after looking at the whole thing over the last few years is there's never a "right" or "wrong" time to start investing, you just have to be careful with your strategy and not expect to make a million dollars over night. The two major strategies I'm going with are:
The problem with the economy right now is that most businesses aren't seeing demand. The lack of demand means companies are sitting on cash they don't really know what to do with. Large companies are sitting on large piles of cash, and that cash pile is growing, but they see no reason to spend more because they're selling pretty much all they make.
(This, incidentally, is why that "encourage companies to bring money back from their overseas subsidiaries" thing is not as useful as it sounds. They may physically bring the money into the US, but at best they'll simply hand it over to their shareholders. It is emphatically not going to be used to create jobs.)
Now, this means a number of things, but critically it means that investing in stocks that pay dividends right now is a good idea, because dividends are high, and will continue to be so, even if the market crashes again.
So, anyway, that's what I invested in. And I'll continue to add to the portfolio for a few years, and see what happens to it. Now's the time, especially if, as seems likely, the economy starts to nosedive like it's 1937 all over again.
Why invest now? Well, why not? One thing I've realized after looking at the whole thing over the last few years is there's never a "right" or "wrong" time to start investing, you just have to be careful with your strategy and not expect to make a million dollars over night. The two major strategies I'm going with are:
- "Averaging" - invest a fixed amount every {fixed time period} rather than looking for some magical time to invest a lot of money. Averaging is pretty much the only way to play unstable markets. It works on the basis that when the market is down a certain percentage, you lose less money than you gain when it's up a similar percentage. eg: Invest $100 - market loses half its value, you lose $50. Invest $100, market doubles in value, you gain $100.
- Dividend stocks and ETFs only
The problem with the economy right now is that most businesses aren't seeing demand. The lack of demand means companies are sitting on cash they don't really know what to do with. Large companies are sitting on large piles of cash, and that cash pile is growing, but they see no reason to spend more because they're selling pretty much all they make.
(This, incidentally, is why that "encourage companies to bring money back from their overseas subsidiaries" thing is not as useful as it sounds. They may physically bring the money into the US, but at best they'll simply hand it over to their shareholders. It is emphatically not going to be used to create jobs.)
Now, this means a number of things, but critically it means that investing in stocks that pay dividends right now is a good idea, because dividends are high, and will continue to be so, even if the market crashes again.
So, anyway, that's what I invested in. And I'll continue to add to the portfolio for a few years, and see what happens to it. Now's the time, especially if, as seems likely, the economy starts to nosedive like it's 1937 all over again.
A night of tiredness
Was feeling tired when I got home last night, so decided to take a fifteen minute nap. When I woke up it was 11.30 at night and my wife was very gingerly trying to get into the bedroom without waking me. I felt terrible, L and I were going to make a dinner together. L had decided I needed my sleep and didn't want to wake me, and had been debating actually sleeping on the couch to avoid waking me.
Couldn't get back to sleep, so got up, got a take out (McD's saving grace is that they're the only restaurant here open 24 hours a day. The only one. Still, that Mango Pineapple Smoothie they do is nice.) I stayed up until I got tired, which in practice meant about 6am. Tried to go to bed without waking L, but alas, I did. And I still couldn't sleep.
Finally, at around 11.30, I tried to "nap" again and the next thing I knew it was 4.30pm.
So I'm guessing my sleep pattern is completely out of whack now.
Did "watch" Gigli last night, which I'd never seen before. I can't comment on how good or bad it is (reportedly it's the latter) because I watched it with the sound off, to avoid waking L. Oh well.
Couldn't get back to sleep, so got up, got a take out (McD's saving grace is that they're the only restaurant here open 24 hours a day. The only one. Still, that Mango Pineapple Smoothie they do is nice.) I stayed up until I got tired, which in practice meant about 6am. Tried to go to bed without waking L, but alas, I did. And I still couldn't sleep.
Finally, at around 11.30, I tried to "nap" again and the next thing I knew it was 4.30pm.
So I'm guessing my sleep pattern is completely out of whack now.
Did "watch" Gigli last night, which I'd never seen before. I can't comment on how good or bad it is (reportedly it's the latter) because I watched it with the sound off, to avoid waking L. Oh well.
Thursday, July 7, 2011
News of the Screws
One of Britain's worst newspapers is closing this Sunday. The News of the World a newspaper that's existed since the 1800s, but it's never had an ounce of respectability, trafficking - from the beginning - in salacious gossip and scandal. The NotW has always represented everything that's rotten in British "journalism".
Why is it closing? Because it committed crimes, repulsive, awful, crimes, while chasing various stories, and - critically - it got caught.
James Murdoch (yes, Murdoch's son, it's a family business) made some interesting claims concerning the paper:
The good things the News of the World does … have been sullied by behaviour that was wrong. Indeed, if recent allegations are true, it was inhuman and has no place in our company," he said."The News of the World is in the business of holding others to account. But it failed when it came to itself.
No, the News of the World has never been "in the business of holding others to account", or had any other deep, important, mission.
Of course, the NotW isn't really being closed. It's more of a renaming and reorganization. In real terms, the NotW has been the "Sunday Sun" for several decades now (or perhaps, given what came first, the Sun is the Daily News of the World), and by all accounts, Murdoch intends to turn the Sun into a 7 day operation. Because the label "The Sun" wasn't implicated in the scandal, this is apparently all OK, and nobody's going to object.
Goodbye News of the World. I'm not sorry to see you go. I wish you were really going though, both the edition that bares your name, and the daily edition that will continue to carry your torch.
Why is it closing? Because it committed crimes, repulsive, awful, crimes, while chasing various stories, and - critically - it got caught.
James Murdoch (yes, Murdoch's son, it's a family business) made some interesting claims concerning the paper:
The good things the News of the World does … have been sullied by behaviour that was wrong. Indeed, if recent allegations are true, it was inhuman and has no place in our company," he said."The News of the World is in the business of holding others to account. But it failed when it came to itself.
No, the News of the World has never been "in the business of holding others to account", or had any other deep, important, mission.
Of course, the NotW isn't really being closed. It's more of a renaming and reorganization. In real terms, the NotW has been the "Sunday Sun" for several decades now (or perhaps, given what came first, the Sun is the Daily News of the World), and by all accounts, Murdoch intends to turn the Sun into a 7 day operation. Because the label "The Sun" wasn't implicated in the scandal, this is apparently all OK, and nobody's going to object.
Goodbye News of the World. I'm not sorry to see you go. I wish you were really going though, both the edition that bares your name, and the daily edition that will continue to carry your torch.
Tuesday, July 5, 2011
A man and a woman walk into an elevator and...
There's a spat going on in the skeptic community concerning the reaction of Richard Dawkins to Rebecca Dawson's post about being propositioned in an elevator at four in the morning.
My 2c are:
But why, in 2011, are we still in a state where women are likely to feel vulnerable in this way? I ask this because... well, the violence statistics I've read suggest that women are relatively rarely the subject of any kind of violent attack - men are, by and large, much more likely to be physically assaulted.
Now, knowing this is true, you'd suppose that two men in an elevator would size one another up, and if one feels weaker than the other, for the weaker man to feel the danger in much the same way.
But I don't think that happens. It doesn't to me anyway. In fact, I put myself in positions frequently that women I know would never dare, despite not being, really, able to defend myself in any meaningful way. I don't carry weapons, and frankly, I don't know how to fight. I never did learn that on the playground. Got the shit beaten out of me every school day for years on end. That's not an exaggeration. And I still don't. But I'll be in a city, a real one I mean, with sidewalks and stuff, and it'll be one in the morning, and I'll think to myself "I should go for a walk."
And I'll go for a walk, and enjoy a city that's quiet and showing a side of itself you can't appreciate during the day.
You know what makes me nervous when I do that? When I see a cop. Because I get all paranoid and worry that he's going to wonder what I'm doing out at that time, and I'll get stopped, and arrested for some bullshit reason, even though it's never happened to me and no cop's going to make work for themselves if they don't have to.
If I got mugged, I wouldn't be able to defend myself. And yet I'm not nervous. I don't constrain my life with fear. I don't fear the guy walking towards me, even though he looks drunk and might be desperate for money or something.
And I think most men feel the same way. But a woman can't stand for a minute in an elevator with a lecherous drunk without being worried she's going to be assaulted.
My wife would never join me on that walk. In fact, if she has a say in it, she'll refuse to let me step out the door.
That's not right. We have to change that.
My 2c are:
- It's 2011, it's inappropriate to ask a complete stranger a very awkward question with sexual overtones in a confined space, and if the recipient of such attention is female, one can understand, in the current climate, that she'd feel somewhat nervous about it.
- But why is the climate like that? In 2011? Why should it be?
But why, in 2011, are we still in a state where women are likely to feel vulnerable in this way? I ask this because... well, the violence statistics I've read suggest that women are relatively rarely the subject of any kind of violent attack - men are, by and large, much more likely to be physically assaulted.
Now, knowing this is true, you'd suppose that two men in an elevator would size one another up, and if one feels weaker than the other, for the weaker man to feel the danger in much the same way.
But I don't think that happens. It doesn't to me anyway. In fact, I put myself in positions frequently that women I know would never dare, despite not being, really, able to defend myself in any meaningful way. I don't carry weapons, and frankly, I don't know how to fight. I never did learn that on the playground. Got the shit beaten out of me every school day for years on end. That's not an exaggeration. And I still don't. But I'll be in a city, a real one I mean, with sidewalks and stuff, and it'll be one in the morning, and I'll think to myself "I should go for a walk."
And I'll go for a walk, and enjoy a city that's quiet and showing a side of itself you can't appreciate during the day.
You know what makes me nervous when I do that? When I see a cop. Because I get all paranoid and worry that he's going to wonder what I'm doing out at that time, and I'll get stopped, and arrested for some bullshit reason, even though it's never happened to me and no cop's going to make work for themselves if they don't have to.
If I got mugged, I wouldn't be able to defend myself. And yet I'm not nervous. I don't constrain my life with fear. I don't fear the guy walking towards me, even though he looks drunk and might be desperate for money or something.
And I think most men feel the same way. But a woman can't stand for a minute in an elevator with a lecherous drunk without being worried she's going to be assaulted.
My wife would never join me on that walk. In fact, if she has a say in it, she'll refuse to let me step out the door.
That's not right. We have to change that.
Not guilty
I'm not going to spend a lot of time on the subject, but I'm surprised by the hysteria concerning the acquittal of Casey Anthony.
Ms Anthony didn't "aquitt" herself well, she's obviously a serial liar, but I also felt, from what I saw of the case, that the case against her was weaker than the media portrayed it as. Just being dishonest and a slimeball doesn't make you a child murderer, and while there certainly were pieces of circumstantial evidence that made things look bad, you certainly can't convict someone of first degree murder on that basis.
Especially when such a verdict would likely result in an irrevocable execution.
Perhaps that was something running through the minds of the jury when they made their decision. If so, that'd be one of the few times the existence of the Death Penalty has served the cause of justice.
Ms Anthony didn't "aquitt" herself well, she's obviously a serial liar, but I also felt, from what I saw of the case, that the case against her was weaker than the media portrayed it as. Just being dishonest and a slimeball doesn't make you a child murderer, and while there certainly were pieces of circumstantial evidence that made things look bad, you certainly can't convict someone of first degree murder on that basis.
Especially when such a verdict would likely result in an irrevocable execution.
Perhaps that was something running through the minds of the jury when they made their decision. If so, that'd be one of the few times the existence of the Death Penalty has served the cause of justice.
Monday, July 4, 2011
Why we tax the rich
It's extremely odd listening to the rhetoric at the moment where even the suggestion that a subsidy ("tax break") on what's ultimately very much a luxury item (corporate jets) might be closed is considered "class warfare". It doesn't make much sense on any level that this is "class warfare", but the label is repeated so often by many on the right that you have to wonder why they think that.
Virtually every modern democracy has a progressive tax rate. The term "progressive" here could be defined as having two meanings - on a technical level, it's progressive in that the more you earn, the progressively large a portion of your earnings you're supposed to pay back to society. And it's progressive in that it's considered a progressive ideal, a step towards a utopian society where a leveling of the playing field is a necessary goal to bring peace, prosperity, and freedom from want for all.
But let's forget about the latter aspect, and concentrate on whether a healthy society is better off with progressive tax systems. The arguments for and against can be summarized as follows:
For
The rich, pretty much by definition, benefit more from society than the poor, and therefore should pay more towards its upkeep.
I tend to think the above point is so self-evident that it barely deserves explanation, but it does have arguments against. The key word above is "society". The argument against is that taxes don't go to "society", they go to "government", and government spends disproportionately - through welfare, unemployment, social security, medicare, etc - on the poor. This ignores the fact though that the taxes that are collected to support those specific programs are taxes being raised to fund society, not government. It happens that we use the power of government to administer those social programs, but that doesn't change where the money is flowing.
Now, obviously, it's easy to see government programs that aren't social, such as the military, but even there, it's pretty obvious that the military is defending something of more value to someone when it's defending a large amount of property and/or an infrastructure to bring in a huge amount of income than it is when it's defending little infrastructure and a small house.
There's also a practical side to contributing one's fair share to the society one lives within: the rich also benefit from a stable society free of serious want. Nobody in their right mind wants to live in a country where a significant proportion of their neighbors are desperate. How many would argue that those self same people who want a stable society to live in, to protect the infrastructure that keeps them wealthy, shouldn't pay what needs to be paid to bring that stability into place?
The rich can afford higher taxes
Again, this is an argument that should be seen as self evident, and I suspect actually it is. Most arguments against this are usually by accident when a critic of higher taxes is actually arguing something else. As in "Oh yeah, let's have higher taxes, then rich people will be forced to send their money to Barbados."
That's not really a counter argument. Nobody's being forced to send their money to an off shore tax shelter - people who do so are trying to "protect" a class of living, not preventing themselves from going into bankruptcy - and, besides, tax shelters aren't as attractive as frequently claimed. The money that's sent into a tax shelter isn't easily accessible, and unless taxes are obscenely high (like the 90% rates we saw in Britain during the 1970s), the principle of diminishing returns certainly applies here.
There's a simple, unavoidable, practical argument here. If we take two people, one earning $20,000 a year, the other earning $250,000 a year (to use a figure many on the right claim is not a high wage), if I lose half my earnings (in taxes), will it cause immense hardship? For the person on $20k, the answer is "almost certainly". For the person on $250,000, the answer is "no way."
Now, there is one thing I'd like to add here. Obviously if someone has been taxed at 30% on their income all of their lives, and has entirely legitimately made long term financial decisions based upon an assumption they'll continue to have a similar net income for a while, then raising their taxes to, say, 50%, overnight, is obviously going to cause hardship. It might mean that a mortgage suddenly becomes difficult to pay, for example. But a small increase, or a series of small increases over a decade, are not going to cause that kind of problem. And I hear no-one arguing for a sudden doubling of income taxes for the very wealthy.
People will be encouraged to evaluate whether an increasingly minor rise in personal income is worth it if it has a disproportionate effect on the businesses they run.
This is one of the strongest arguments to be made in favor of higher taxes and yet I rarely hear anyone express it. Indeed, the exact opposite argument - that raising taxes will mean business people will have less money to invest - is more often the one that people hear.
One little bit of evidence of this can be seen in the disproportionate wage rises since the 1970s. As taxes on upper incomes were reduced, the gap between wage earners has massively increased. With no incentive to put their companies first, those with the power to set their own salaries have raced to the bottom to get as much money out of their companies, and into their bank accounts.
Was this wrong? It's hard to say, but it's also true that we're in the rather odd situation where we see people running companies into the ground - from the .com excesses during the 1990s to the banks in the last decade - being rewarded with ever higher salaries, with most outsides, quite legitimately, wondering if there are any incentives whatsoever to run a business for the benefit of its shareholders, customers, and employees.
What about the counter arguments?
Higher taxes are fair, even ignoring the fact they made their money within the society they're paying taxes for, because richer people are rarely worth what they're paid
This one's controversial in some quarters, but really large salaries come down to luck and not a lot else. I'm not arguing that everyone should be paid the same as everyone else, but there's clearly something wrong when someone's working six days a week, ten hours a day, and barely making minimum wage, while someone else, through a series of accidents that started at birth, gets to work a few days a week and earn millions. I'm not arguing that millionaires aren't hard workers, most are, but it's frequently underestimated what the work differential is between those on the highest incomes, and those on lower incomes.
Money doesn't trickle down, it trickles up
The argument that money trickles down is generally based on the idea that a wealthy person will buy a much bigger home, a private yacht, and that as they spend their money, everyone they spend money on will get richer.
Unfortunately this argument doesn't actually make a lot of sense. Let's go through the problems with the whole "rising tide" thing:
Arguing that money should be concentrated in the hands of the wealthy because it'll eventually make its way to everyone else is arguing for an end to the gains made since the industrial revolution, as a world where money is widespread is a world where economies of scale make economies grow. Money never trickles down, it trickles up.
Raising taxes encourages people to spend money on their own businesses
I posited a related argument above, but here's the thing. How do I know that investing in a business you own is a great thing to do if you have higher taxes?
Well, because that's how the tax system is set up. I own a business. When I spend money I earn on my business, it becomes tax deductible, and it doesn't matter if I'm earning a billion dollars a year, or $100,000. And thanks to a progressive tax system, the more I spend on my business, the less of a proportion of what's left gets taxed!
Class warfare? It'd be class warfare if, y'know, this was about class, not income, and if it involved warfare, not taxes. This is about an economy that needs a few less moral hazards, and a society that supports itself.
Virtually every modern democracy has a progressive tax rate. The term "progressive" here could be defined as having two meanings - on a technical level, it's progressive in that the more you earn, the progressively large a portion of your earnings you're supposed to pay back to society. And it's progressive in that it's considered a progressive ideal, a step towards a utopian society where a leveling of the playing field is a necessary goal to bring peace, prosperity, and freedom from want for all.
But let's forget about the latter aspect, and concentrate on whether a healthy society is better off with progressive tax systems. The arguments for and against can be summarized as follows:
For
- The rich, pretty much by definition, benefit more from society than the poor, and therefore should pay more towards its upkeep.
- The rich can afford higher taxes. If I take away a person who's earning $1000 a month half his salary, the chances are he'll not be able to pay for food, shelter, and necessary resources. If I take away half the salary of someone earning $1,000,000 a month, well, that person's still going to be living an extremely comfortable lifestyle.
- Higher taxes generally fall upon wealthy businessmen. If wage rises have diminishing returns, then those same people will be encouraged to evaluate whether an increasingly minor rise in personal income is worth it if it has a disproportionate effect on the businesses they run.
- It's frequently argued that higher taxes are unfair, because richer people have earned every penny of their income.
- It's sometimes argued that richer people are going to spend their money anyway, so it'll trickle down to the not so rich.
- It's frequently argued that if those with high wages have more money, they'll invest more of it in their businesses.
The rich, pretty much by definition, benefit more from society than the poor, and therefore should pay more towards its upkeep.
I tend to think the above point is so self-evident that it barely deserves explanation, but it does have arguments against. The key word above is "society". The argument against is that taxes don't go to "society", they go to "government", and government spends disproportionately - through welfare, unemployment, social security, medicare, etc - on the poor. This ignores the fact though that the taxes that are collected to support those specific programs are taxes being raised to fund society, not government. It happens that we use the power of government to administer those social programs, but that doesn't change where the money is flowing.
Now, obviously, it's easy to see government programs that aren't social, such as the military, but even there, it's pretty obvious that the military is defending something of more value to someone when it's defending a large amount of property and/or an infrastructure to bring in a huge amount of income than it is when it's defending little infrastructure and a small house.
There's also a practical side to contributing one's fair share to the society one lives within: the rich also benefit from a stable society free of serious want. Nobody in their right mind wants to live in a country where a significant proportion of their neighbors are desperate. How many would argue that those self same people who want a stable society to live in, to protect the infrastructure that keeps them wealthy, shouldn't pay what needs to be paid to bring that stability into place?
The rich can afford higher taxes
Again, this is an argument that should be seen as self evident, and I suspect actually it is. Most arguments against this are usually by accident when a critic of higher taxes is actually arguing something else. As in "Oh yeah, let's have higher taxes, then rich people will be forced to send their money to Barbados."
That's not really a counter argument. Nobody's being forced to send their money to an off shore tax shelter - people who do so are trying to "protect" a class of living, not preventing themselves from going into bankruptcy - and, besides, tax shelters aren't as attractive as frequently claimed. The money that's sent into a tax shelter isn't easily accessible, and unless taxes are obscenely high (like the 90% rates we saw in Britain during the 1970s), the principle of diminishing returns certainly applies here.
There's a simple, unavoidable, practical argument here. If we take two people, one earning $20,000 a year, the other earning $250,000 a year (to use a figure many on the right claim is not a high wage), if I lose half my earnings (in taxes), will it cause immense hardship? For the person on $20k, the answer is "almost certainly". For the person on $250,000, the answer is "no way."
Now, there is one thing I'd like to add here. Obviously if someone has been taxed at 30% on their income all of their lives, and has entirely legitimately made long term financial decisions based upon an assumption they'll continue to have a similar net income for a while, then raising their taxes to, say, 50%, overnight, is obviously going to cause hardship. It might mean that a mortgage suddenly becomes difficult to pay, for example. But a small increase, or a series of small increases over a decade, are not going to cause that kind of problem. And I hear no-one arguing for a sudden doubling of income taxes for the very wealthy.
People will be encouraged to evaluate whether an increasingly minor rise in personal income is worth it if it has a disproportionate effect on the businesses they run.
This is one of the strongest arguments to be made in favor of higher taxes and yet I rarely hear anyone express it. Indeed, the exact opposite argument - that raising taxes will mean business people will have less money to invest - is more often the one that people hear.
One little bit of evidence of this can be seen in the disproportionate wage rises since the 1970s. As taxes on upper incomes were reduced, the gap between wage earners has massively increased. With no incentive to put their companies first, those with the power to set their own salaries have raced to the bottom to get as much money out of their companies, and into their bank accounts.
Was this wrong? It's hard to say, but it's also true that we're in the rather odd situation where we see people running companies into the ground - from the .com excesses during the 1990s to the banks in the last decade - being rewarded with ever higher salaries, with most outsides, quite legitimately, wondering if there are any incentives whatsoever to run a business for the benefit of its shareholders, customers, and employees.
What about the counter arguments?
Higher taxes are fair, even ignoring the fact they made their money within the society they're paying taxes for, because richer people are rarely worth what they're paid
This one's controversial in some quarters, but really large salaries come down to luck and not a lot else. I'm not arguing that everyone should be paid the same as everyone else, but there's clearly something wrong when someone's working six days a week, ten hours a day, and barely making minimum wage, while someone else, through a series of accidents that started at birth, gets to work a few days a week and earn millions. I'm not arguing that millionaires aren't hard workers, most are, but it's frequently underestimated what the work differential is between those on the highest incomes, and those on lower incomes.
Money doesn't trickle down, it trickles up
The argument that money trickles down is generally based on the idea that a wealthy person will buy a much bigger home, a private yacht, and that as they spend their money, everyone they spend money on will get richer.
Unfortunately this argument doesn't actually make a lot of sense. Let's go through the problems with the whole "rising tide" thing:
- The amount of "stuff" someone with wealth needs isn't generally that exceptional, or much larger than what someone without it needs. So the number of jobs created is actually somewhat small.
- The industries those jobs create are subject to the same constraints. A tiny group of people take huge amounts of money out of the businesses, everyone else gets whatever's left.
- The rich have more money to spend on non-productive property. For example, the rich could spend a large amount of money on land. This doesn't in any way increase jobs, indeed, by removing resources from the economy that could be put to work, it reduces the ability of an economy to create and sustain jobs.
Arguing that money should be concentrated in the hands of the wealthy because it'll eventually make its way to everyone else is arguing for an end to the gains made since the industrial revolution, as a world where money is widespread is a world where economies of scale make economies grow. Money never trickles down, it trickles up.
Raising taxes encourages people to spend money on their own businesses
I posited a related argument above, but here's the thing. How do I know that investing in a business you own is a great thing to do if you have higher taxes?
Well, because that's how the tax system is set up. I own a business. When I spend money I earn on my business, it becomes tax deductible, and it doesn't matter if I'm earning a billion dollars a year, or $100,000. And thanks to a progressive tax system, the more I spend on my business, the less of a proportion of what's left gets taxed!
Class warfare? It'd be class warfare if, y'know, this was about class, not income, and if it involved warfare, not taxes. This is about an economy that needs a few less moral hazards, and a society that supports itself.
Sunday, July 3, 2011
Asterisk review
Now that I'm using VoIP at home I've been playing around with Asterisk, finally. It's something I've wanted to play with, but I've never really had an excuse to use it.
I have about 90% of what I want, the remaining 10% being things like ways to transfer calls and some way to get calls to route using VoIP when I'm "on the road". Here's my initial thoughts.
1. It feels obsolete
I hate to start a review on a negative, and ironically I think it could well end up being "unobsolete" in the medium term, I'll explain why later, but here I am setting up a PBX with phone numbers and extensions, for phones that are fixed to a specific location. And, well, I've been using cellphones for so long now that the entire concept just seems like a throwback to the last Century. Which is not to say it's not awesome. If you were to take 1990s phone technology to the limit, well, this is what it would look like. It's just the major reason for a landline these days, outside of an office, is for a reliable, if all else fails, phone service - most of us now use cellphones for virtually everything. And that's probably why VoIP phone service is so cheap, it's not just that the infrastructure is cheaper, it's that giving people unlimited calls for $10 a month doesn't cost much when most of your customers are unlikely to make more than a couple of hours of calls a month.
Also making it feel like a throwback to another era - and I just mean "This is how it feels" not "I disagree with the concept and want new shiny things all the time" is that the entire system is controlled and configured using text-based configuration files and a built in command line interface. There is a kind-of web interface, but it's extremely limited. Hey, I like that it has these, as I said, I'm not complaining, it's just it feels a little twenty years ago.
2. It doesn't "just work"
I seriously underestimated the amount of work needed to put into an Asterisk installation for what you'd expect to be a basic configuration. The configuration was:
- A bunch of SIP accounts representing the phones in my home
- A link to a SIP account to register with to use for inbound/outbound "trunk" calling (ie calls to and from the PSTN, ie the VoIP provider's credentials.)
- A mapping between extension numbers and SIP account names.
This information is distributed across multiple files, and there's no simple "Here are my accounts, and these are the extensions they map onto" thing. You can play around with LDAP and various databases if you want to attempt to do the same thing, but that adds another layer of complexity.
What I did
In practice there are two configuration files that contain different parts of the same entities that need to be programmed with the logic of your configuration. One is the SIP configuration file, sip.conf, which contains most of the authentication and IP routing information (not call routing, but things like what ports to use, how/when to route around NAT, etc.) The other is the dialplan file, extensions.conf, that contains the whole "If the user dialed 100, call the living room phone" logic. There are shortcuts you can take, but the logic can get quite complex after a while. After trying to modify the existing example files I ended up starting from scratch with the dialplan.
Here's what it looks like:
[general]
static=yes
writeprotect=no
clearglobalvars=no
userscontext=default
[globals]
CONSOLE=Console/dsp ; Console interface for demo
TRUNK=SIP/voipo ; Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
__TRANSFER_CONTEXT=home
[default]
include => home
exten => s,1,Goto(incoming,s,1)
[internal]
include => trunk
include => home
include => gvoice-out
exten => dialtone,1,DISA(no-password,internal)
[no-such-extension]
exten => i,1,NoOp(No such extension)
exten => i,n,Playback(custom/ic_sit)
exten => i,n,Playback(ss-noservice)
exten => i,n,Goto(${SIPPEER(${SIPCHANINFO(peername)},context)}-no-such-extension,${INVALID-EXTEN},1)
[internal-no-such-extension]
exten => i,1,DISA(no-password,home)
[trunk]
exten => _NXXXXXX!,1,GoTo(trunk-voipo,${EXTEN},1)
exten => 123,1,GoTo(trunk-voipo,${EXTEN},1)
exten => _N11,1,GoTo(trunk-voipo,${EXTEN},1)
exten => _1NXXXXXXXXX!,1,GoTo(trunk-voipo,${EXTEN:1},1)
exten => _+1NXXXXXXXXX!,1,GoTo(trunk-voipo,${EXTEN:2},1)
exten => _+NX.,1,GoTo(trunk-gvoice,${EXTEN},1)
exten => _011XX.,1,GoTo(trunk-gvoice,+${EXTEN:3},1)
[trunk-voipo]
exten => _..,1,NoOp(Routing via VOIPO)
exten => _..,n,Dial(SIP/${EXTEN}@voipo,99,TK)
exten => h,1,NoOp(Call ended)
[trunk-gvoice]
exten => _..,1,NoOp(Routing via VOIPO)
exten => _..,n,Dial(gtalk/homebusiness/${EXTEN}@voice.google.com,99,TK)
exten => h,1,NoOp(Call ended)
[gvoice-out]
exten => _**1NXXXXXXXXX!,1,Dial(gtalk/homebusiness/+${EXTEN:2}@voice.google.com)
exten => _**N.,1,Dial(gtalk/homebusiness/+${EXTEN:2}@voice.google.com)
[home]
exten => _10XX!,1,NoOp("Regular extension called")
exten => _11XX!,1,NoOp("Regular extension called")
exten => _200X!,1,NoOp("Conference line called")
exten => _600X!,1,NoOp("Parked call called")
exten => _[a-z].,1,NoOp("Extension called by name")
exten => _..,2,Goto(home-main,${EXTEN},1)
[home-main]
exten => 1000,1,Goto(incoming,s,1)
exten => 1101,1,Goto(home,livingroom,1)
exten => 1103,1,Goto(home,mstrbdrm,1)
exten => 1151,1,Goto(home,loft,1)
exten => 1158,1,Goto(home,office,1)
exten => 1172,1,Goto(home,mylaptop,1)
exten => 1182,1,Goto(home,mycell,1)
exten => 1183,1,Goto(home,wifecell,1)
exten => 200X,1,MeetMe(${EXTEN})
exten => 600X,1,Goto(features-parked,${EXTEN},1)
include => home-regexten
exten => _[a-z].,2,Dial(SIP/${EXTEN}, 20, tk)
exten => 1199,1,Ringing
exten => 1199,n,Wait(2)
exten => 1199,n,Answer
exten => 1199,n,Wait(1)
exten => 1199,n,NoOp(${HANGUPCAUSE})
exten => 1199,n,NoOp(${DIALSTATUS})
exten => 1199,n,NoOp(CHANNEL(state))
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(hang-on-a-second)
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(hang-on-a-second-angry)
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(you-seem-impatient)
exten => 1199,n,Playback(pls-try-call-later)
exten => 1199,n,Playback(custom/ic_sit)
exten => 1199,n,Hangup
exten => i,1,NoOp(Redirecting for ${INVALID_EXTEN})
exten => i,n,Goto(home-alternates,${INVALID_EXTEN},1)
exten => i,n,NoOp("Didn't work")
exten => s,1,Goto(${ARG1},1)
exten => h,1,Hangup
[home-alternates]
exten => mycell,1,Set(DESTINATION=7721234567)
exten => wifecell,1,Set(DESTINATION=7722345678)
exten => i,1,Goto(no-such-extension,$(INVALID_EXTEN},1)
exten => _[a-z].,2,Ringing
exten => _[a-z].,n,Wait(2)
exten => _[a-z].,n,Answer
exten => _[a-z].,n,Wait(2)
exten => _[a-z].,n,Playback(followme/pls-hold-while-try)
exten => _[a-z].,n,Dial(SIP/${DESTINATION}@voipo, 20, tk)
[homebusinessgtalk]
exten => s,1,NoOp( Call from Gtalk to homebusiness )
exten => s,n,Set(crazygooglecid=${CALLERID(name)})
exten => s,n,Set(stripcrazysuffix=${CUT(crazygooglecid,@,1)})
exten => s,n,Set(CALLERID(num)=${stripcrazysuffix})
exten => s,n,Set(CALLERID(name)="From Google Talk for homebusiness")
exten => s,n,Dial(SIP/office, 20, tkD(:1))
[incoming]
exten => s,1,NoOp(Call from VoIP ${CALLERID(name)} ${CALLERID(number)})
exten => s,n,Dial(SIP/livingroom&SIP/laptop&SIP/mycell&SIP/wifecell&SIP/office, 30, tk)
exten => s,n,NoOp(Call timeout)
The two major contexts are "internal" and "incoming": "incoming" is used for calls coming from outside, and "internal" is used for calls within the network. VOIPO allows you to use your own devices, but they restrict international calls, so I configured international calls to be routed via Google Voice. The GV account is actually my "work" phone number (that is, my private LLC's) so at some point I should probably create a context that routes calls from SIP/office via Google Voice if it's not an internal extension.
There are some quirks I had to work around. For example, I wanted logic that would easily deal with invalid extensions. There's an "i" extension that's supposed to deal with this, but for reasons I can't fathom it only works if you "Goto" the invalid extension in your logic, if there's been no "Goto", it'll never get called and Asterisk will simply issue an error. For that reason, the [home] context above jumps into another context to do the work using "Goto".
Also you may notice references to a context I haven't defined above, called [home-regexten]. I'm going to cover that below. You may also notice that the logic above seems to rely upon extensions like "office" and "livingroom" being defined (see exten => 1101,1,Goto(home,livingroom,1) above?) That's also going to be explained below. It's all part of the same thing.
sip.conf is a little more complicated, and I'm not going to repost all of it here, especially as there's a lot of garbage in it. Here are some edited highlights:
[general]
context=incoming
allowguest=yes
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
realm=sip.myhomedomain.org
bindport=9001 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=::
tcpenable=yes
transport=udp,tcp
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
domain=sip.myhomedomain.org
domain=sip.squiggleslash.internal
defaultexpiry=600
disallow=all ; First disallow all codecs
allow=ulaw,alaw ; Allow codecs in order of preference
regcontext=home-regexten
recordhistory=yes ; Record SIP history by default
dumphistory=yes ; Dump SIP history at end of SIP dialogue
register => 77229876543:password@voipo
externhost = squiggleslash.dyndnsprovider.com
nat=yes
canreinvite=no
domain=sip.myhomedomain.org,home
domain=sip.squiggleslash.internal,home
allowexternaldomains=yes
fromdomain=sip.myhomedomain.org
I'm pretty sure an experienced Asterisk admin will see problems here too, but I spent a lot of time trying to optimize the configuration, and then restoring settings that I thought were unnecessary trying to fix what I had broken. For example, those "domain" entries.
Highlights:
[voipo-in]
type=peer
qualify=yes
insecure=port,invite
disallow=all
allow=ulaw
context=incoming
[voipo]
type=peer
secret=password
username=7729876543
fromuser=7729876543
fromdomain=sip.voipwelcome.com
host=sip.voipwelcome.com
outboundproxy=sip.voipwelcome.com
nat=yes ; Appears to be required for outgoing audio
context=incoming
caninvite=no ; Appears to be required for outgoing audio
canreinvite=no ; Appears to be required for outgoing audio
disallow=all
allow=ulaw,alaw
insecure=port,invite
I'll be quite honest, I don't know what's going on above - well, I kinda know, and kinda don't. I haven't figured out if the [voipo-in] section is necessary, given the [voipo] one allows "insecure" incoming connections.
Finally, the handsets all have entries like this:
[office]
type=friend
secret=password
regexten=office
host=dynamic
nat=yes
callerid=Office <1158>
context=internal
There are no major highlights to go through here. The "regexten" thing is unnecessary, as it turns out, as long as regcontext is defined. The phone number has to be specified in the callerid line as if it's to work properly in SIP's caller ID system. And because this is an internal extension, it gets a context=internal setting so that when it tries to make a call, the context in the dialplan it starts out at is [internal].
OK, I said I'd explain the regcontext thing above. When that's defined, when a device registers with Asterisk, an entry gets made in the context like:
exten => office,1,NoOp(This is a valid extension)
What happens is you're supposed to put something in the dialplan along the lines of this:
[maincontext]
include => registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN})
The first line includes the context these are all registered in. The second line has a wild card of "match all", and means "For any extension, regardless of what it is, attempt to call a SIP account with the same name." However, the second line has a "priority" (better named sequence number I guess) of 2, which means that it will not get called unless there's a match with a sequence number of 1.
Confused, we'll go by example:
Let's suppose [office] is registered, but [livingroom] isn't, that means the dialplan looks like this:
[registrationscontextname]
exten => office,1,NoOp(...)
[maincontext]
include => registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN})
Because [maincontext] includes [registrationcontextname], it actually looks like this:
[maincontext]
exten => office,1,NoOp(...) ; <---- from registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN}) ; <---- direct
Now, a call comes in for "livingroom", from an account configured to start off in context "maincontext":
Asterisk looks for exten => 1,livingroom in [maincontext]. It fails. So it falls over and sends an error back to the caller.
A call comes in for "office", from the same device
Asterisk looks for exten => office,1 in [maincontext]. Success! It executes NoOp(...).
Because it was successful, Asterisk then looks for exten => office,2 in [maincontext], it finds _..2,Dial(SIP/${EXTEN}) which matches (because the wildcard matches "office" just fine), so Asterisk executes it, executing "Dial(SIP/office)"
Makes sense?
Other configuration changes I made were to the gtalk.conf and jabber.conf files, to support my Google Voice via Google Talk account, and to rtp.conf to use ports in a small range I'd configured my router to forward.
SIP and NAT
My cellphone only works with this system when I'm home and it's on Wifi, otherwise there's no NAT configuration I can make work. It might be I've been unlucky with the particular NAT systems I've been behind. One workaround that kinda works is setting up a VPN, which kinda makes my Android phone work, but that assumes the VPN is itself not blocked (one out of two of the networks I was behind blocked VPNs. D'oh!) and, even worse, I couldn't get the VPN to stay up for more than about five minutes before Android decides to unilaterally drop it.
Versions
I started off using Asterisk 1.4, but wanted Google Voice via Google Talk support, so I manually compiled and installed Asterisk 1.8, which turned out to be fairly easy, it has relatively few dependencies and even the ancient version of Ubuntu I was testing this on (8.04) had everything in the repositories to support a version that would work with Google Talk/Voice and LDAP (which ultimately I'd like to play with.)
Recommendation
If the above looked complicated, well, it was, and my wife started to actually get annoyed at the amount of time I was spending playing with this. I'd recommend an alternative but the SIP PBXes I was playing with prior to this simply didn't work, and I installed Asterisk in large part as a desperate "If all else fails" measure. That doesn't mean you can't get the other tools to work, and there were plenty, such as SER and its derivatives, I didn't even try to work on.
There are also a bunch of systems that package up Asterisk with a UI.
So basically, I did it wrong.
Well, kinda. Actually there are a bunch of aspects of the current configuration I rather like. One is that it's extremely efficient with memory. It's using a little over 18 megabytes right now with the above configuration. I was actually thinking it might work well if installed on a small tablet device like one of those $80 Archos 28 things, though something with Ethernet instead of Wifi would be preferable.
I've also barely scratched the surface of the functionality Asterisk has to offer. There are no features, voice mail isn't set up (though that's largely because I don't need it. The only thing I can think of would be to implement something Google Voice like for incoming calls, but I don't have experience of any voice transcription software for that job.) And it's kind of overpowered (to put it mildly) for what I want to do.
If you're going to play with Asterisk, 1.8 is a good start. You can use Google Voice to get a free VoIP account with free calling to the entire US, and that currently works great with Asterisk, even if it doesn't work with many other PBXes (because GTalk isn't SIP based.) Otherwise, well, try something simpler.
I have about 90% of what I want, the remaining 10% being things like ways to transfer calls and some way to get calls to route using VoIP when I'm "on the road". Here's my initial thoughts.
1. It feels obsolete
I hate to start a review on a negative, and ironically I think it could well end up being "unobsolete" in the medium term, I'll explain why later, but here I am setting up a PBX with phone numbers and extensions, for phones that are fixed to a specific location. And, well, I've been using cellphones for so long now that the entire concept just seems like a throwback to the last Century. Which is not to say it's not awesome. If you were to take 1990s phone technology to the limit, well, this is what it would look like. It's just the major reason for a landline these days, outside of an office, is for a reliable, if all else fails, phone service - most of us now use cellphones for virtually everything. And that's probably why VoIP phone service is so cheap, it's not just that the infrastructure is cheaper, it's that giving people unlimited calls for $10 a month doesn't cost much when most of your customers are unlikely to make more than a couple of hours of calls a month.
Also making it feel like a throwback to another era - and I just mean "This is how it feels" not "I disagree with the concept and want new shiny things all the time" is that the entire system is controlled and configured using text-based configuration files and a built in command line interface. There is a kind-of web interface, but it's extremely limited. Hey, I like that it has these, as I said, I'm not complaining, it's just it feels a little twenty years ago.
2. It doesn't "just work"
I seriously underestimated the amount of work needed to put into an Asterisk installation for what you'd expect to be a basic configuration. The configuration was:
- A bunch of SIP accounts representing the phones in my home
- A link to a SIP account to register with to use for inbound/outbound "trunk" calling (ie calls to and from the PSTN, ie the VoIP provider's credentials.)
- A mapping between extension numbers and SIP account names.
This information is distributed across multiple files, and there's no simple "Here are my accounts, and these are the extensions they map onto" thing. You can play around with LDAP and various databases if you want to attempt to do the same thing, but that adds another layer of complexity.
What I did
In practice there are two configuration files that contain different parts of the same entities that need to be programmed with the logic of your configuration. One is the SIP configuration file, sip.conf, which contains most of the authentication and IP routing information (not call routing, but things like what ports to use, how/when to route around NAT, etc.) The other is the dialplan file, extensions.conf, that contains the whole "If the user dialed 100, call the living room phone" logic. There are shortcuts you can take, but the logic can get quite complex after a while. After trying to modify the existing example files I ended up starting from scratch with the dialplan.
Here's what it looks like:
[general]
static=yes
writeprotect=no
clearglobalvars=no
userscontext=default
[globals]
CONSOLE=Console/dsp ; Console interface for demo
TRUNK=SIP/voipo ; Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
__TRANSFER_CONTEXT=home
[default]
include => home
exten => s,1,Goto(incoming,s,1)
[internal]
include => trunk
include => home
include => gvoice-out
exten => dialtone,1,DISA(no-password,internal)
[no-such-extension]
exten => i,1,NoOp(No such extension)
exten => i,n,Playback(custom/ic_sit)
exten => i,n,Playback(ss-noservice)
exten => i,n,Goto(${SIPPEER(${SIPCHANINFO(peername)},context)}-no-such-extension,${INVALID-EXTEN},1)
[internal-no-such-extension]
exten => i,1,DISA(no-password,home)
[trunk]
exten => _NXXXXXX!,1,GoTo(trunk-voipo,${EXTEN},1)
exten => 123,1,GoTo(trunk-voipo,${EXTEN},1)
exten => _N11,1,GoTo(trunk-voipo,${EXTEN},1)
exten => _1NXXXXXXXXX!,1,GoTo(trunk-voipo,${EXTEN:1},1)
exten => _+1NXXXXXXXXX!,1,GoTo(trunk-voipo,${EXTEN:2},1)
exten => _+NX.,1,GoTo(trunk-gvoice,${EXTEN},1)
exten => _011XX.,1,GoTo(trunk-gvoice,+${EXTEN:3},1)
[trunk-voipo]
exten => _..,1,NoOp(Routing via VOIPO)
exten => _..,n,Dial(SIP/${EXTEN}@voipo,99,TK)
exten => h,1,NoOp(Call ended)
[trunk-gvoice]
exten => _..,1,NoOp(Routing via VOIPO)
exten => _..,n,Dial(gtalk/homebusiness/${EXTEN}@voice.google.com,99,TK)
exten => h,1,NoOp(Call ended)
[gvoice-out]
exten => _**1NXXXXXXXXX!,1,Dial(gtalk/homebusiness/+${EXTEN:2}@voice.google.com)
exten => _**N.,1,Dial(gtalk/homebusiness/+${EXTEN:2}@voice.google.com)
[home]
exten => _10XX!,1,NoOp("Regular extension called")
exten => _11XX!,1,NoOp("Regular extension called")
exten => _200X!,1,NoOp("Conference line called")
exten => _600X!,1,NoOp("Parked call called")
exten => _[a-z].,1,NoOp("Extension called by name")
exten => _..,2,Goto(home-main,${EXTEN},1)
[home-main]
exten => 1000,1,Goto(incoming,s,1)
exten => 1101,1,Goto(home,livingroom,1)
exten => 1103,1,Goto(home,mstrbdrm,1)
exten => 1151,1,Goto(home,loft,1)
exten => 1158,1,Goto(home,office,1)
exten => 1172,1,Goto(home,mylaptop,1)
exten => 1182,1,Goto(home,mycell,1)
exten => 1183,1,Goto(home,wifecell,1)
exten => 200X,1,MeetMe(${EXTEN})
exten => 600X,1,Goto(features-parked,${EXTEN},1)
include => home-regexten
exten => _[a-z].,2,Dial(SIP/${EXTEN}, 20, tk)
exten => 1199,1,Ringing
exten => 1199,n,Wait(2)
exten => 1199,n,Answer
exten => 1199,n,Wait(1)
exten => 1199,n,NoOp(${HANGUPCAUSE})
exten => 1199,n,NoOp(${DIALSTATUS})
exten => 1199,n,NoOp(CHANNEL(state))
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(hang-on-a-second)
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(hang-on-a-second-angry)
exten => 1199,n,Playback(beep)
exten => 1199,n,Playback(you-seem-impatient)
exten => 1199,n,Playback(pls-try-call-later)
exten => 1199,n,Playback(custom/ic_sit)
exten => 1199,n,Hangup
exten => i,1,NoOp(Redirecting for ${INVALID_EXTEN})
exten => i,n,Goto(home-alternates,${INVALID_EXTEN},1)
exten => i,n,NoOp("Didn't work")
exten => s,1,Goto(${ARG1},1)
exten => h,1,Hangup
[home-alternates]
exten => mycell,1,Set(DESTINATION=7721234567)
exten => wifecell,1,Set(DESTINATION=7722345678)
exten => i,1,Goto(no-such-extension,$(INVALID_EXTEN},1)
exten => _[a-z].,2,Ringing
exten => _[a-z].,n,Wait(2)
exten => _[a-z].,n,Answer
exten => _[a-z].,n,Wait(2)
exten => _[a-z].,n,Playback(followme/pls-hold-while-try)
exten => _[a-z].,n,Dial(SIP/${DESTINATION}@voipo, 20, tk)
[homebusinessgtalk]
exten => s,1,NoOp( Call from Gtalk to homebusiness )
exten => s,n,Set(crazygooglecid=${CALLERID(name)})
exten => s,n,Set(stripcrazysuffix=${CUT(crazygooglecid,@,1)})
exten => s,n,Set(CALLERID(num)=${stripcrazysuffix})
exten => s,n,Set(CALLERID(name)="From Google Talk for homebusiness")
exten => s,n,Dial(SIP/office, 20, tkD(:1))
[incoming]
exten => s,1,NoOp(Call from VoIP ${CALLERID(name)} ${CALLERID(number)})
exten => s,n,Dial(SIP/livingroom&SIP/laptop&SIP/mycell&SIP/wifecell&SIP/office, 30, tk)
exten => s,n,NoOp(Call timeout)
The two major contexts are "internal" and "incoming": "incoming" is used for calls coming from outside, and "internal" is used for calls within the network. VOIPO allows you to use your own devices, but they restrict international calls, so I configured international calls to be routed via Google Voice. The GV account is actually my "work" phone number (that is, my private LLC's) so at some point I should probably create a context that routes calls from SIP/office via Google Voice if it's not an internal extension.
There are some quirks I had to work around. For example, I wanted logic that would easily deal with invalid extensions. There's an "i" extension that's supposed to deal with this, but for reasons I can't fathom it only works if you "Goto" the invalid extension in your logic, if there's been no "Goto", it'll never get called and Asterisk will simply issue an error. For that reason, the [home] context above jumps into another context to do the work using "Goto".
Also you may notice references to a context I haven't defined above, called [home-regexten]. I'm going to cover that below. You may also notice that the logic above seems to rely upon extensions like "office" and "livingroom" being defined (see exten => 1101,1,Goto(home,livingroom,1) above?) That's also going to be explained below. It's all part of the same thing.
sip.conf is a little more complicated, and I'm not going to repost all of it here, especially as there's a lot of garbage in it. Here are some edited highlights:
[general]
context=incoming
allowguest=yes
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
realm=sip.myhomedomain.org
bindport=9001 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=::
tcpenable=yes
transport=udp,tcp
srvlookup=yes ; Enable DNS SRV lookups on outbound calls
domain=sip.myhomedomain.org
domain=sip.squiggleslash.internal
defaultexpiry=600
disallow=all ; First disallow all codecs
allow=ulaw,alaw ; Allow codecs in order of preference
regcontext=home-regexten
recordhistory=yes ; Record SIP history by default
dumphistory=yes ; Dump SIP history at end of SIP dialogue
register => 77229876543:password@voipo
externhost = squiggleslash.dyndnsprovider.com
nat=yes
canreinvite=no
domain=sip.myhomedomain.org,home
domain=sip.squiggleslash.internal,home
allowexternaldomains=yes
fromdomain=sip.myhomedomain.org
I'm pretty sure an experienced Asterisk admin will see problems here too, but I spent a lot of time trying to optimize the configuration, and then restoring settings that I thought were unnecessary trying to fix what I had broken. For example, those "domain" entries.
Highlights:
- bindport=9001 (There's nothing that says you need to bind to port 5060, and I wanted to clear a block of a couple of hundred UDP ports so I could route them to the Asterisk server for both SIP and RTP. SIP sets up calls, RTP does the actual "passing voice from one server to another" thingie.)
- bindaddr=:: (This turns on IPv6 support. Despite what it looks like, it doesn't turn off IPv4 support, which is good.)
- externhost = squiggleslash.dyndnsprovider.com (Tells Asterisk what its Internet address is. Useful to use a DynDNS service for this.)
- regcontext=home-regexten - registers all extensions in this context with a dummy extry. I'll explain that in a moment.
- canreinvite=no (I had to put this in multiple places to avoid problems with NAT. Basically, it makes Asterisk forward the audio to/from the Internet on behalf of each handset, rather than tell the handsets to attempt (and fail) to communicate directly with the other party. When we all switch over to IPv6, this kind of inefficient crap will become unnecessary.) From what I could figure out all the "nat=" settings actually only cover the SIP portion of the call, not the audio.
- allowexternaldomains=yes is a hack that doesn't do what it looks like. Allexternaldomains should really be labeled "assumeanydomainismydomain", and it deals with the fact that just because you told Asterisk (multiple times!) to register itself as "sip.myhomedomain.org" doesn't mean you'll not get entirely legitimate calls to "s@
" from your VoIP provider. - register => 77229876543:password@voipo (Registers with the VoIP provider, turning Asterisk into a client as far as the VoIP provider is concerned.)
- realm=sip.myhomedomain.org - deals with an authentication issue. When a SIP client registers, it gets sent a realm to authenticate against. Some clients assume that if they're trying to register as squiggleslash@sip.myhomedomain.org, if they're not asked to authenticate against sip.myhomedomain.org that something's gone wrong and they've been configured to point at the wrong server. By default, Asterisk sends a realm of "Asterisk", which is wrong however you look at it.
[voipo-in]
type=peer
qualify=yes
insecure=port,invite
disallow=all
allow=ulaw
context=incoming
[voipo]
type=peer
secret=password
username=7729876543
fromuser=7729876543
fromdomain=sip.voipwelcome.com
host=sip.voipwelcome.com
outboundproxy=sip.voipwelcome.com
nat=yes ; Appears to be required for outgoing audio
context=incoming
caninvite=no ; Appears to be required for outgoing audio
canreinvite=no ; Appears to be required for outgoing audio
disallow=all
allow=ulaw,alaw
insecure=port,invite
I'll be quite honest, I don't know what's going on above - well, I kinda know, and kinda don't. I haven't figured out if the [voipo-in] section is necessary, given the [voipo] one allows "insecure" incoming connections.
Finally, the handsets all have entries like this:
[office]
type=friend
secret=password
regexten=office
host=dynamic
nat=yes
callerid=Office <1158>
context=internal
There are no major highlights to go through here. The "regexten" thing is unnecessary, as it turns out, as long as regcontext is defined. The phone number has to be specified in the callerid line as
OK, I said I'd explain the regcontext thing above. When that's defined, when a device registers with Asterisk, an entry gets made in the context like:
exten => office,1,NoOp(This is a valid extension)
What happens is you're supposed to put something in the dialplan along the lines of this:
[maincontext]
include => registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN})
The first line includes the context these are all registered in. The second line has a wild card of "match all", and means "For any extension, regardless of what it is, attempt to call a SIP account with the same name." However, the second line has a "priority" (better named sequence number I guess) of 2, which means that it will not get called unless there's a match with a sequence number of 1.
Confused, we'll go by example:
Let's suppose [office] is registered, but [livingroom] isn't, that means the dialplan looks like this:
[registrationscontextname]
exten => office,1,NoOp(...)
[maincontext]
include => registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN})
Because [maincontext] includes [registrationcontextname], it actually looks like this:
[maincontext]
exten => office,1,NoOp(...) ; <---- from registrationscontextname
exten => _..,2,Dial(SIP/${EXTEN}) ; <---- direct
Now, a call comes in for "livingroom", from an account configured to start off in context "maincontext":
Asterisk looks for exten => 1,livingroom in [maincontext]. It fails. So it falls over and sends an error back to the caller.
A call comes in for "office", from the same device
Asterisk looks for exten => office,1 in [maincontext]. Success! It executes NoOp(...).
Because it was successful, Asterisk then looks for exten => office,2 in [maincontext], it finds _..2,Dial(SIP/${EXTEN}) which matches (because the wildcard matches "office" just fine), so Asterisk executes it, executing "Dial(SIP/office)"
Makes sense?
Other configuration changes I made were to the gtalk.conf and jabber.conf files, to support my Google Voice via Google Talk account, and to rtp.conf to use ports in a small range I'd configured my router to forward.
SIP and NAT
My cellphone only works with this system when I'm home and it's on Wifi, otherwise there's no NAT configuration I can make work. It might be I've been unlucky with the particular NAT systems I've been behind. One workaround that kinda works is setting up a VPN, which kinda makes my Android phone work, but that assumes the VPN is itself not blocked (one out of two of the networks I was behind blocked VPNs. D'oh!) and, even worse, I couldn't get the VPN to stay up for more than about five minutes before Android decides to unilaterally drop it.
Versions
I started off using Asterisk 1.4, but wanted Google Voice via Google Talk support, so I manually compiled and installed Asterisk 1.8, which turned out to be fairly easy, it has relatively few dependencies and even the ancient version of Ubuntu I was testing this on (8.04) had everything in the repositories to support a version that would work with Google Talk/Voice and LDAP (which ultimately I'd like to play with.)
Recommendation
If the above looked complicated, well, it was, and my wife started to actually get annoyed at the amount of time I was spending playing with this. I'd recommend an alternative but the SIP PBXes I was playing with prior to this simply didn't work, and I installed Asterisk in large part as a desperate "If all else fails" measure. That doesn't mean you can't get the other tools to work, and there were plenty, such as SER and its derivatives, I didn't even try to work on.
There are also a bunch of systems that package up Asterisk with a UI.
So basically, I did it wrong.
Well, kinda. Actually there are a bunch of aspects of the current configuration I rather like. One is that it's extremely efficient with memory. It's using a little over 18 megabytes right now with the above configuration. I was actually thinking it might work well if installed on a small tablet device like one of those $80 Archos 28 things, though something with Ethernet instead of Wifi would be preferable.
I've also barely scratched the surface of the functionality Asterisk has to offer. There are no features, voice mail isn't set up (though that's largely because I don't need it. The only thing I can think of would be to implement something Google Voice like for incoming calls, but I don't have experience of any voice transcription software for that job.) And it's kind of overpowered (to put it mildly) for what I want to do.
If you're going to play with Asterisk, 1.8 is a good start. You can use Google Voice to get a free VoIP account with free calling to the entire US, and that currently works great with Asterisk, even if it doesn't work with many other PBXes (because GTalk isn't SIP based.) Otherwise, well, try something simpler.
Saturday, July 2, 2011
Firefox 5
After a week of using Firefox 5, I have to say I think it's dealt with 90% of the reasons I switched to Chrome, and I'm sticking with it. It's still a memory hog, but not as extreme as FF4, and it still has a habit of hanging mysteriously, but it does so more rarely.
Hopefully FF6 will fix the above problems too.
Hopefully FF6 will fix the above problems too.
Hopeless
So... in 2012 there are a couple of likely scenarios concerning the election. Obama will, apparently, be the Democratic nominee, unless he does the decent thing, recognizes he's incapable of doing of the right thing, and stands aside, which seems remarkably improbable as, well, it's the right thing.
So it'll be Obama vs... well, it might be Bachmann, though I'm inclined to assume Republicans realize they actually have a shot at this unless they make a massive error of judgment and appoint someone who is unelectably insane, but that's actually not a sure thing - Republicans put up, and won with, various governor candidates who fit that profile in 2010, so they may try the same thing.
The question for me is who's going to be worse? Obama will never do the right thing. Never. That's been proven time and time and time again since 2008. He was elected with as clear a mandate as anyone ever has to do the right things to fix the economy, to end unnecessary wars, to end the actions of an executive that was looking like it had more in common with Pinochet than it did with Kennedy. And he's galloped, wildly, in the other direction. Even his supposed liberal "successes" such as "health care reform", have involved sticking a progressive label on an anti-progressive policy.
So I find myself, actually, wondering if a moderate Republican might be a better bet this time, maybe coupled with as liberal a congress as possible. I can't tell what a Bachmann presidency would look like in practice, but I do find myself wondering if a Republican who isn't an eye swiveling loony might actually stand a chance of doing the right things... occasionally.
And that's actually hard to tell. I guess the issues that concern me most are:
The situation is hopeless.
So it'll be Obama vs... well, it might be Bachmann, though I'm inclined to assume Republicans realize they actually have a shot at this unless they make a massive error of judgment and appoint someone who is unelectably insane, but that's actually not a sure thing - Republicans put up, and won with, various governor candidates who fit that profile in 2010, so they may try the same thing.
The question for me is who's going to be worse? Obama will never do the right thing. Never. That's been proven time and time and time again since 2008. He was elected with as clear a mandate as anyone ever has to do the right things to fix the economy, to end unnecessary wars, to end the actions of an executive that was looking like it had more in common with Pinochet than it did with Kennedy. And he's galloped, wildly, in the other direction. Even his supposed liberal "successes" such as "health care reform", have involved sticking a progressive label on an anti-progressive policy.
So I find myself, actually, wondering if a moderate Republican might be a better bet this time, maybe coupled with as liberal a congress as possible. I can't tell what a Bachmann presidency would look like in practice, but I do find myself wondering if a Republican who isn't an eye swiveling loony might actually stand a chance of doing the right things... occasionally.
And that's actually hard to tell. I guess the issues that concern me most are:
- Will the next President reject the deficit obsession of the pundits, and concentrate on getting the country back to work, given growth is, in reality, the only way we're going to fit the economy (and by the way, that'll fix the deficit too.) Will he or she recognize that the only economic system that has consistently worked since the 1940s has involved massive government spending at a time like this?
- Will the next President recognize that war is, actually, bad, and work to end the obsession of the US government with solving every foreign issue by putting our troops at risk, and killing large numbers of innocent people?
- Will the next President recognize that the "War on Terror" is ludicrous, terrorism is a combination of a criminal and political issue, that Al Qaeda is not a government but a group of extremists?
- Will the next President recognize that our values are more important than our enemies, and that we become no better than our enemies when we jettison our values to "fight" them?
The situation is hopeless.
Wednesday, June 22, 2011
2012
So, what exactly can Obama campaign on given he doesn't stand for anything, and has nothing to show for four years in office?
Sunday, June 19, 2011
To Firefox, get well soon
For some reason I've had a couple of responses when I've mentioned issues with Firefox 4 on my Twitter feed, but it's not as if it's easy to answer in 140 characters. "Crashes a lot" doesn't really explain why I'm so frustrated with the browser that I'm willing to jump ship to Chromium for a bit.
So, let's address the issues.
First, I'm running Firefox 4 on Ubuntu 11.04, and on Ubuntu 10.10. And also on Windows, although it's not crashing there.
Firefox 4 is exhibiting the following problems:
- Regardless of my settings (and I've even gone as far as to start hacking on about:config - but my settings there are ignored), Firefox swallows between 50 and 66% of my memory, regardless of how many tabs are open or what's loaded into them. This is causing my computer to crawl. What do I mean by crawl? Well, even if I don't have anything else running other than Firefox, I frequently get to the point that moving the mouse to get a password dialog when the screen saver is up results in about 30 seconds to one minute of disk activity (presumably swapping) before the password dialog appears.
- Firefox frequently crashes. In the worst case, on my 11.04 machine with 2G of RAM (not a huge amount of memory, but twice as much as a Netbook, so there should be nothing wrong with this), it crashes several times a day - and usually does so when I'm not using it - ie I'll go get coffee, go back to my computer, and - wham - the "Firefox has crashed" dialog is up.
- Firefox has problems loading Twitter. Frequently I get a blank screen or a bizarre, CSS/JSless screen with everything all over the place and barely any functionality. In order to load it, I have to click on the "Use old Twitter" button (or if I was in "old Twitter", the "Use new Twitter" button.) This happens most often (as in virtually every time) when I try to restore tabs from a crashed session.
- When in use, Firefox frequently slows down to a crawl. Trying to switch tab can be an utter pain, as the window goes gray and it doesn't do anything for a while. Worse, when I drop down to a shell and type "top", Firefox doesn't even appear to be doing anything! The CPU is usually almost completely idle at this point, with neither Firefox nor anything else apparently doing anything at all.
I've done everything you'd expect, including deleting my profile under ~/,mozilla/firefox and trying again, without any results. I've disabled plug-ins, I've disabled extensions, I've tried running it in "safe mode", and there's nothing particularly amazing about what's in my tabs either - Twitter, Slashdot, a Wikipedia page or two, some Google search results, that kind of thing. There's nothing particularly memory intensive about the stuff I regularly read - I don't care for watching videos or listening to audio via the browser in general.
Now, to fend of the usual arguments:
- No, I don't think it's too much to ask for a web browser to use less than, say, half a gig of RAM. I have Chromium loaded right now, with a typical spread of tabs reflecting my usual habits, and it's using... hard to tell, given the shared memory, but it isn't hundreds of megabytes.
- Nor do I buy the argument that every app can be made faster just by allocating more memory. You actually have to use that memory in a meaningful way. What's actually faster about FF4 anyway? It doesn't feel faster to me, and it certainly isn't faster when it's constantly swapping to disk. Is it faster than Chromium? Clearly not, so what gives?
- And anyway, it doesn't matter what's ideologically correct: Firefox 4 doesn't work. It's not usable under Ubuntu. It doesn't matter why, the bottom line is it sucks up unheard of amounts of memory, crashes, and when it hasn't crashed yet it just needs to run for a few hours and it starts playing up.
So, for now, I'm temporarily switching to Chromium. I like Firefox, when it works. I really do. I really hope those responsible for making the design decisions that have lead to this browser being what it is today take a good hard look, and ask themselves if this really is the right direction for what would otherwise continue to be the best web browser there is.
Saturday, June 18, 2011
Asterisk and Android Gingerbread
OK, busy setting up an Asterisk server at home for a few experiments in VoIP.
What I want now?
1. Lots of redundant configuration
Asterisk requires extensions to be configured in two places: sip.conf, and extensions.conf. There's supposed to be a sip.conf option that automatically registers extensions (called regexten), but it doesn't actually seem to be useful - it registers the extension exists, but doesn't put in the rules necessary to call it. Strange. Asterisk seems to be so configurable that it wouldn't surprise me if there are things that can be configured to make it work, but for now, no dice. So, if you're playing with the system, remember to configure twice.
2. Make sure you get the realm right if you want Gingerbread clients to work
Android 2.3 Gingerbread turns out to have a fairly smart implementation of SIP, even though it's deceptively simple. I'd been experimenting with a different domain from the one actually used by the server (eg my address would be something like (but isn't) sip:squiggleslash@sip.squiggleslash.org, whereas the server itself is on sip.squiggleslash.internal port 5550.)
How's that supposed to work you might ask? Well, I figured it wasn't a problem because (a) I'd set up DNS properly (there's a _sip._udp.sip.squiggleslash.org SRV entry that points at the correct server and port) and (b) all SIP clients I'd come across let you specify the domain and server name seperately.
...except Gingerbread. Gingerbread doesn't ask you separately for the domain, merely asking you for the server, and that initially confused me, but it turns out the "server" Gingerbread is asking for is actually the domain. In other words, I entered
Username: squiggleslash
Password: 1234
Server: sip.squiggleslash.org
And, FWIW, I entered the sip.peh.link/5550 thing for the "outbound proxy" stuff, but I'm not sure that was necessary. The above was enough to get incoming calls (ie calls from any extension to the cellphone's SIP account) to work.
...but not outgoing calls. For outgoing calls, Gingerbread needs you to correctly configure the "realm" in your sip.conf, namely make it the same as the domain (ie in the above sip.squiggleslash.org) Otherwise you just get weird 404 errors in the Asterisk console.
Some of the above advice might be out of date. I'm using a three year old version of Asterisk that came with Ubuntu Hardy, which is the operating system I'm running on my VPS. But, whatever, the above is enough to mostly get everything working.
I'll let you know how I get on with the other tasks in the list...
What I want now?
- Each DECT phone I have, connected via the A580-IP I mentioned on Twitter (it's a SIP-enabled DECT base station with some PBX-like functionality) to have an extension
- Each SIP-capable mobile phone I have (ie my CyanogenMod Gingerbread phone with the built-in SIP client, and my wife's regular Android phone running something like Linphone) to also have extensions.
- All phones to be capable of dialing one another
- All extensions to be able to make internal and external calls
- All extensions to "ring" when a SIP call comes in from my VoIP provider
- My office extension to "ring" when a Google Talk call comes in (if such a thing is possible) for my business GMail account (which is linked to a Google Voice account.)
1. Lots of redundant configuration
Asterisk requires extensions to be configured in two places: sip.conf, and extensions.conf. There's supposed to be a sip.conf option that automatically registers extensions (called regexten), but it doesn't actually seem to be useful - it registers the extension exists, but doesn't put in the rules necessary to call it. Strange. Asterisk seems to be so configurable that it wouldn't surprise me if there are things that can be configured to make it work, but for now, no dice. So, if you're playing with the system, remember to configure twice.
2. Make sure you get the realm right if you want Gingerbread clients to work
Android 2.3 Gingerbread turns out to have a fairly smart implementation of SIP, even though it's deceptively simple. I'd been experimenting with a different domain from the one actually used by the server (eg my address would be something like (but isn't) sip:squiggleslash@sip.squiggleslash.org, whereas the server itself is on sip.squiggleslash.internal port 5550.)
How's that supposed to work you might ask? Well, I figured it wasn't a problem because (a) I'd set up DNS properly (there's a _sip._udp.sip.squiggleslash.org SRV entry that points at the correct server and port) and (b) all SIP clients I'd come across let you specify the domain and server name seperately.
...except Gingerbread. Gingerbread doesn't ask you separately for the domain, merely asking you for the server, and that initially confused me, but it turns out the "server" Gingerbread is asking for is actually the domain. In other words, I entered
Username: squiggleslash
Password: 1234
Server: sip.squiggleslash.org
And, FWIW, I entered the sip.peh.link/5550 thing for the "outbound proxy" stuff, but I'm not sure that was necessary. The above was enough to get incoming calls (ie calls from any extension to the cellphone's SIP account) to work.
...but not outgoing calls. For outgoing calls, Gingerbread needs you to correctly configure the "realm" in your sip.conf, namely make it the same as the domain (ie in the above sip.squiggleslash.org) Otherwise you just get weird 404 errors in the Asterisk console.
Some of the above advice might be out of date. I'm using a three year old version of Asterisk that came with Ubuntu Hardy, which is the operating system I'm running on my VPS. But, whatever, the above is enough to mostly get everything working.
I'll let you know how I get on with the other tasks in the list...
More Ubuntu Natty thoughts (11.04)
So, after a month or so of using it, here are my thoughts on Natty:
Unity
I'm using this on my netbook and not on my main laptop. It's got some good ideas, but I really think it needs polishing, and shouldn't have been released as the default desktop.
Criticially, it still doesn't feel like there's a natural flow to using it. For all of its faults, the "classic" desktop model is something that's fairly intuitive, even if it sometimes takes a large number of steps to do basic things.
The Ubuntu menu thing (that brings up a search for applications panel) is awful, and needs to be completely replaced. Nothing about it is right. It doesn't bring up what you expect it to, instead bringing up some alphabetically sorted apps, with no categorization by default. The entire point of that panel is to bring up applications that aren't in the dock.
The dock is OK although I tend to hate stuff that keeps moving on screen, but as far as a "hidden/unhides itself" item it's the best implementation I've seen of that. My personal view on how it could be improved?
Banshee vs Rhythmbox
Natty replaces the Rhythmbox iTunes-like music manager software with Banshee. Banshee's certainly interesting, and has some interesting features (plus it's easier to spell) but have to admit I switched back to Rhythmbox, because the latter doesn't suck up all of memory and CPU on my Netbook. I'm not sure why Banshee was such a resource hog, but Rhythmbox seems generally to be more efficient, cleaner, and lacking in playback glitches in a way Banshee wasn't. I'm not sure what's going on there, although in fairness Banshee is fighting Compiz which also seemed to be dragging down the performance of the machine.
The scrollbar
I liked the concept behind the new, thin, scrollbar in Natty, but I ended up being fairly glad that only one or two applications actually have it. For those who haven't seen it, the scroll "bar" is replaced by a small nub you drag up or down, that only appears when you place the mouse near the side of the window, and when it appears, you also see a line within a long box stretching the entire length of the window, that does roughly what the scroll bar did in terms of showing you where you are in your document, except it's much thinner.
The reasoning seems to be "Well, it takes up less space so you can see more stuff". I like the fact they've thought about it, but at the same time I miss being able to scroll up and down a page at a time by clicking above or below the nub. Also the scroll panel thing doesn't always appear, and when it does it frequently does only for a split second - the problem being that the system doesn't always know why you moved the cursor, and if you move from one window to another it overlaps or is just very close to, it doesn't always know what to do. Fighting to the system to get a user interface element to appear is one of my pet hates.
Scrollbars are not that big, and have never been a major issue in terms of taking up screen real estate. I'd rather we keep them as is.
General Reliability
For the most part, I'd put this between 10.04 (which is awful) and 10.10 (which is good) for general reliability, but I'm not sure I'd blame Canonical for this - this time. At least, not everything.
Yeah, another one. You remember the history of Firefox? Essentially, the Mozilla team were concentrating on, what was then called, "Mozilla", a nice browser that kept growing with functionality that really didn't belong in the system, with no-one ever putting their hand up and saying "Wait a moment, what about efficiency?" Firefox started a kinda fork (I guess if it's an official project it probably doesn't count as a fork, but, whatever) by the minority horrified with what was going on, who concentrated on putting together a minimal browser that had all of Mozilla's greatness, but would load quickly and play nice with others.
Firefox needs the same treatment.
Conclusion
I think Natty needs some work, but I'd also say all of the problems are fixable. If I were in charge of the project, these are the changes I'd make for 11.10:
Unity
I'm using this on my netbook and not on my main laptop. It's got some good ideas, but I really think it needs polishing, and shouldn't have been released as the default desktop.
Criticially, it still doesn't feel like there's a natural flow to using it. For all of its faults, the "classic" desktop model is something that's fairly intuitive, even if it sometimes takes a large number of steps to do basic things.
The Ubuntu menu thing (that brings up a search for applications panel) is awful, and needs to be completely replaced. Nothing about it is right. It doesn't bring up what you expect it to, instead bringing up some alphabetically sorted apps, with no categorization by default. The entire point of that panel is to bring up applications that aren't in the dock.
The dock is OK although I tend to hate stuff that keeps moving on screen, but as far as a "hidden/unhides itself" item it's the best implementation I've seen of that. My personal view on how it could be improved?
- Reduce the width of the dock especially on smaller screens like those of Netbooks. That'd also solve the problem that it very quickly fills up
- Make it a permanent fixture save for things like full screen movie playback.
- Given what it essentially replaces, and the fact that users expect to see something there, maybe it should be moved to the bottom of the screen by default, with an option to move it to the side of necessary? Think about why Ubuntu's devs are insistent it must hide itself when an app is maximized. Could it be the dock's position?
- Hiding the menu labels until you get close to them doesn't help in terms of trying to hit them when your mouse is on the other side of the screen. You have nothing to aim at!
- It all kinda looks silly right now, with the window title fighting the menu for visibility.
- If you're going to do the hiding thing, go the Amiga route and have a menu "button" on the mouse. Holding down the right mouse button can cause both a contextual menu to appear, if relevant, where the mouse pointer is, together with unhiding the menu at the top of the screen.
- Otherwise, have the menu appear permanently.
- Shove most of the non-application specific stuff into the dock. That makes the dock the one stop shop for control over the desktop, while turning the menu bar into the application controller.
Banshee vs Rhythmbox
Natty replaces the Rhythmbox iTunes-like music manager software with Banshee. Banshee's certainly interesting, and has some interesting features (plus it's easier to spell) but have to admit I switched back to Rhythmbox, because the latter doesn't suck up all of memory and CPU on my Netbook. I'm not sure why Banshee was such a resource hog, but Rhythmbox seems generally to be more efficient, cleaner, and lacking in playback glitches in a way Banshee wasn't. I'm not sure what's going on there, although in fairness Banshee is fighting Compiz which also seemed to be dragging down the performance of the machine.
The scrollbar
I liked the concept behind the new, thin, scrollbar in Natty, but I ended up being fairly glad that only one or two applications actually have it. For those who haven't seen it, the scroll "bar" is replaced by a small nub you drag up or down, that only appears when you place the mouse near the side of the window, and when it appears, you also see a line within a long box stretching the entire length of the window, that does roughly what the scroll bar did in terms of showing you where you are in your document, except it's much thinner.
The reasoning seems to be "Well, it takes up less space so you can see more stuff". I like the fact they've thought about it, but at the same time I miss being able to scroll up and down a page at a time by clicking above or below the nub. Also the scroll panel thing doesn't always appear, and when it does it frequently does only for a split second - the problem being that the system doesn't always know why you moved the cursor, and if you move from one window to another it overlaps or is just very close to, it doesn't always know what to do. Fighting to the system to get a user interface element to appear is one of my pet hates.
Scrollbars are not that big, and have never been a major issue in terms of taking up screen real estate. I'd rather we keep them as is.
General Reliability
For the most part, I'd put this between 10.04 (which is awful) and 10.10 (which is good) for general reliability, but I'm not sure I'd blame Canonical for this - this time. At least, not everything.
- On my Thinkpad, I needed to tweak certain settings to get it to reliably work with my ATI video system. There's nothing worse than that whole "Oh my God, I just upgraded and nothing friggin works." thing. Hey, Canonical, could you PLEASE implement a "rollback" feature so that if an operating system upgrade doesn't go smoothly, we can safely return to a previous version?
- Likewise, the system came with a bug ridden Atheos Wifi driver that virtually everyone's complaining about. To fix it required installing a patched kernel. Not Canonical's fault, the fact is Linux has some crappy quality control going on these days, but still.
- Firefox. OMG. What happened to it? What's with the out of control memory consumption? And no, "We have to so the browser is fast" excuse doesn't cut it with me - Firefox is already fast. If you need to cache more stuff, stick it in files like everyone else does. Put it in /tmp if you don't want to upset people with SDDs.
Yeah, another one. You remember the history of Firefox? Essentially, the Mozilla team were concentrating on, what was then called, "Mozilla", a nice browser that kept growing with functionality that really didn't belong in the system, with no-one ever putting their hand up and saying "Wait a moment, what about efficiency?" Firefox started a kinda fork (I guess if it's an official project it probably doesn't count as a fork, but, whatever) by the minority horrified with what was going on, who concentrated on putting together a minimal browser that had all of Mozilla's greatness, but would load quickly and play nice with others.
Firefox needs the same treatment.
Conclusion
I think Natty needs some work, but I'd also say all of the problems are fixable. If I were in charge of the project, these are the changes I'd make for 11.10:
- Reduce the size of the dock buttons by about a third
- Move it by default to the bottom of the screen
- Move most of the top bar functions to the dock, with the exception of the application menus. Maybe the time and date can stay up there too.
- Either repurpose the right mouse button as I described (show all menus), or move the window title/menus around so one is right justified and the other left justified. I don't mind which, actually I think having the menus right justified would look pretty nice.
- Change the way in which users select applications that aren't in the dock. Again, smaller icons would help here, and showing the application categories would also be a good idea.
- Do some serious quality control on the Linux kernel. Here's a radical proposal: test with both a recent kernel and a slightly older version, and install the latter by default, only installing the more recent kernel if certain features of it are absolutely necessary for the hardware it's being installed upon.
- Do some serious quality control with X.
- Bear in mind that many of us have had to install workarounds before to get certain things to work, that might not be appropriate. Things like xorg.conf and modprobe.d/* should be backed-up and replaced to ensure that things that have been fixed aren't broken by settings designed for when they weren't.
- If the user has enough disk space, have Ubuntu back up the current version of the operating system before upgrading, and provide a tool allowing the user to back out of the upgrade if it doesn't work well - the tool being available from GRUB.
- Monitor the performance and state of certain third party tools, like Firefox and Banshee, you bundle with the operating system. If these aren't right, either install older versions that are, or consider switching to a more stable alternative like Chromium or Rhythmbox.
Stop Romney/Pawhoweveryouspellit at any cost!
It's important to remember just how bad government was a few years ago, when it a Republican president was in control. Back then:
- We had a government that had started two wars without good reason
- We had a government that was frequently breaking the law, ignoring its own legal advise in many cases, all in the name of the military state.
- We had a government that acted extra-judicially when dealing with those suspected of terrorism overseas.
- We had a government that set up clearly unworkable schemes designed to suck taxpayers money out of government and into the hands of those responsible for many of America's problems.
- We had a government that was fully OK, even blessing, the idea of having entirely unnecessary cuts to social programs because it didn't want to raise taxes to fund them, social programs whose cuts would hit those who could least afford it the most.
- We had a government that was waging a war on whistleblowers, persecuting those who spoke up about abuses of government.
- Had no clue what to do with the economy, ignoring the actual experts in favor of dealing with whatever the pundits in the media said was important, resulting in an economy that got steadily worse.
Thursday, June 9, 2011
A combined journal - a proposal
Here's what I'm thinking.
I think it'd be awesome to have a group who already know one another, who are smart, who don't necessary agree with one another but have debated before, to write a journal about different topics, in the same place. Now, in the past we've kinda done that, but...
Now, I'm proposing doing this on Blogger, for several reasons:
I think it'd be awesome to have a group who already know one another, who are smart, who don't necessary agree with one another but have debated before, to write a journal about different topics, in the same place. Now, in the past we've kinda done that, but...
- With Slashdot, I think it's safe to say we were all fighting Slashcode to get the conversation going.
- With Multiply, it's very invitation-lead and not terribly open. On top of that, quite honestly, it became hard to have a discussion in an environment in which just finding out what people were writing became a chore.
- Reviews
- Fiction (of all types)
- Political, economic, social, etc commentary
- Personal stories
Now, I'm proposing doing this on Blogger, for several reasons:
- It's a fairly decent, stable, blogging platform, and it's free.
- It supports multiple contributors
- There's no convoluted registration process
- Anyone can comment on JEs
- You may feel this idea just sucks. You'd never read it, and even if you did, you'd never contribute. If so, PLEASE say why! This is just a proposal, it's what I have in mind, it's not final or anything.
- It's in the wrong place, you'd prefer Wordpress, or LiveJournal, or... go ahead, propose something!
- Man these JalapeƱo-Jack Sun Chips are good.
- I don't know, commenting policy?
- I want to know if Sarah Palin says something stupid damn it, it's not as if I'd find out anywhere else.
- It's a horrible, horrible, idea and I'm a horrible person for proposing it.
Wednesday, June 8, 2011
Microsoft are teh greatest
Not really, they just signed a letter supporting AT&T destroying T-Mobile. But, well, here are some things they do I like:
- Active Directory, although they need to create a cheaper version, and it shouldn't be as complicated. I thought I'd throw that in first to make people go "Wait? What?!"
- X-Box 360 Kinect. What an awesome idea. WANT.
- HD DVD. OK, that was withdrawn, but it was the better of the two HD standards. Who knows, if WB had killed BD rather than HD DVD, maybe we'd have a successful HD disc format.
- Windows 8. There's some awesome ideas there.
- .NET - a copy of Java it may be, but it's a commitment to the way things should be, not the way things are.
- Office Web Apps. A copy of Google Docs it might be, but they've done a great job and they have even taken the effort lately, not just with this but with OWA and other web systems, to get in some decent Firefox/GNU/Linux support.
- They have a lot of legacy crap that keeps tripping them up. This has been chronically damaging to their products and yet unavoidable. Think how much cleaner and more secure Windows NT (and by implication 2000/XP/Vista/7) would have been had Cutler not needed to support Win16/Win32.
- They feel the need to control the entire ecosystem yet don't know how to do it in a way that doesn't get in the way of others.
- Their pricing always assumes a neat division between home users and business users, and many of their technologies have an absurdly high cost of entry.
- They're not open source. That's a problem for me, obviously not for them, and it's why I'm not going to adopt much of their stuff any time soon.
Watched too much MSNBC the last couple of days
As I said in my prior JE, it's awful.
The obsession with Weiner's weiner is absurd, and I have to say I feel for the guy. If there ever was a situation where it's legitimate for a politician to "lie" about something, it's where people are asking personal questions they shouldn't be asking in the first place, whose true answer would never reflect in any way upon any principles the politician has ever claimed to be supportive of.
The similar situation with Bill Clinton was at least fractionally more legitimate in that the claim was that Clinton may or may not have lied during a legal deposition, and if he hadn't lied he certainly had used language that was misleading, but none of this applies here. Weiner is not the head of state, he's not someone who's committed a legal offense by lying, the only real victim here is the one person he's personally responsible to come what may, election or no election - and that victim's situation is arguably a million times worse because of the media attention.
And as I've said on Twitter, what's the coverage of Weiner's weiner vs the coverage of the fact that Breitbart - and others - lied about ACORN, what ACORN is, and what ACORN does, going so overboard as to ultimately killing an organization that was doing good work sticking up for the little guy.
I'm almost tempted to suggest that the Breitbart angle is exactly why the media is covering this to the degree they are: to report Breitbart lied about ACORN is to admit their own complicity in ACORN's downfall as they amplified the lies about it. To report on Weiner's weiner is, therefore, a counter to this, a case where they can say "Yes, we report what Breitbart says, but look, we have a real scandal to report on as a result of this!"
There is no real scandal, but the media certainly can turn nothing into one if they have to.
The obsession with Weiner's weiner is absurd, and I have to say I feel for the guy. If there ever was a situation where it's legitimate for a politician to "lie" about something, it's where people are asking personal questions they shouldn't be asking in the first place, whose true answer would never reflect in any way upon any principles the politician has ever claimed to be supportive of.
The similar situation with Bill Clinton was at least fractionally more legitimate in that the claim was that Clinton may or may not have lied during a legal deposition, and if he hadn't lied he certainly had used language that was misleading, but none of this applies here. Weiner is not the head of state, he's not someone who's committed a legal offense by lying, the only real victim here is the one person he's personally responsible to come what may, election or no election - and that victim's situation is arguably a million times worse because of the media attention.
And as I've said on Twitter, what's the coverage of Weiner's weiner vs the coverage of the fact that Breitbart - and others - lied about ACORN, what ACORN is, and what ACORN does, going so overboard as to ultimately killing an organization that was doing good work sticking up for the little guy.
I'm almost tempted to suggest that the Breitbart angle is exactly why the media is covering this to the degree they are: to report Breitbart lied about ACORN is to admit their own complicity in ACORN's downfall as they amplified the lies about it. To report on Weiner's weiner is, therefore, a counter to this, a case where they can say "Yes, we report what Breitbart says, but look, we have a real scandal to report on as a result of this!"
There is no real scandal, but the media certainly can turn nothing into one if they have to.
Tuesday, June 7, 2011
Cable news
CNN
Probably the best of the big three, which is not saying much.
MSNBC
Makes me wonder why people watch Fox. I say this because I'm liberal, and MSNBC is supposed to be a "liberal" news station, but:
Fox
The voice of opposition.
Probably the best of the big three, which is not saying much.
MSNBC
Makes me wonder why people watch Fox. I say this because I'm liberal, and MSNBC is supposed to be a "liberal" news station, but:
- It's obvious it's "supposed to be" a liberal news station. ie its sincerity is exactly what you'd expect from an organization that exists to serve a market.
- How insincere to it? When was the last time they refused to cover a Breitbart story without independent verification?
- The only show I vaguely like is "Morning Joe". I'm sure the right hates it as much as liberals do, but it does occasionally pierce the echo chamber.
- Ultimately either promotes establishment orthodoxy (Chris Matthews) or goes against it but in a way not likely to engender any support.
- Never got to watch Rachel Maddow, she's supposed to be good.
Fox
The voice of opposition.
- Always opposes anything the government does but...
- ...does so from an establishment point of view. You're not really going to see the standard part of Fox arguing for reining in foreclosures or dealing with unemployment (except in passing as a justification for more tax cuts, or deregulation, or whatever.)
- What I saw was misleading and often downright false, when bringing in people to interview concerning a government policy, even during the news sections which, Fox supporters claim, are supposed to be the "objective" parts of the station.
- Has Shepard Smith I guess, but I've only really seen his clashes with the station's orthodoxy, not how he reports normally.
Sunday, June 5, 2011
When people assume good ideas are bad
Once upon a time there was an economist called John Maynard Keynes. Keynes looked at the consequences of World War I, and the economic aftermath, and determined that things might possibly be bad. A decade and a half later, another crisis was engulfing the world, this time economic, and Keynes reasoned that the issue was that there was a lack of people buying things, and that this needed to be dealt with if the crisis was to be dealt with.
In the meantime, governments did what they always do, and prevaricated, going back and forth between constructive ideas and destructive ideas. The US government, for example, would spend money on public works in an attempt to revitalize the economy, and it would work. Then when unemployment started to fall, the government, concerned about the whole "People might think we're communists" crap, would cut back, and the economy would collapse again. This went on again and again, and was only broken after another war broke out, and the government was able - nay, required - to spend money like it was going out of fashion.
Keynes became a giant amongst economists after WW-II. He was proven right, again, and again, and again, about the links between unemployment, inflation, and fiscal policy, and governments began to seriously embrace Keynesian ideas concerning their own economies. But there was an asterisk to be put against the embracement. Keynes advocated massive government spending during bad times, and massive government saving during good times. But some governments used Keynes to justify spending at all times, and this caused an already skeptical group of economists to want to get away from Keynes, who was seen as encouraging too much government intervention in markets.
After much debate, most started to rally behind the ideas of Milton Friedman. Friedman adapted the Keynesian models, but addressed the underlying causes of poorly performing economies using what's arguably a similar but more generic set of concepts. Friedman argued that the cause of the great depression was a lack of money.
The amount of money in a modern economy is generally decided upon by a so-called central bank, a bank that acts as the manager of the country's currency. The bank has a number of tools available to it to allow it to expand the amount of money in the economy. It can, for example, adjust reserve rates, allowing banks to "lend" considerably more money than they "borrow" (from savers.) It can make loans of money cheaper, making it cheaper for banks to obtain more cash to put against their reserves.
When the Great Depression started a large number of banks collapsed because a lack of confidence in them caused numerous runs. The banks failed because they were unable to borrow enough to pay their savers. Friedman argued this was fundamentally the cause of the Great Depression, and that the Federal Reserve, the US's central bank, didn't do enough to increase the money supply to take care of the problem.
The arguments of Friedman and Keynes are often portrayed as polar opposites, but in reality they're similar, they just propose different groups of people as having the responsibilities involved. Both argue for an increase in the money supply, but Keynes proposes a "hard money" solution whereby the government borrows (or, preferably, spends savings) to inject more money into the economy via spending on commerce and business, while Friedman proposes a "soft money" solution where money is literally created to inject into the economy via banks.
Unmodified Keynesian economics was generally the default until the mid seventies. We have President Carter to thank for a switch over to Friedman's Monetarist economics in the US, and Margaret Thatcher for the switch to Monetarism in the UK. Both countries were suffering stagflation, which seemed to be caused by inflexible adherence to Keynesian economics. In particular, mainstream Keynesian opinion seemed to be that inflation and unemployment were negatively correlated. If measures were taken to deal with inflation (by tightening government spending), unemployment would likely rise, and if measures were taken to deal with unemployment, inflation may rise. Unfortunately, both countries were suffering both inflation and unemployment, and Keynesian economists were largely considered to be at a loss on how to deal with both happening at the same time.
OK, recap time.
Growth in the US and UK slowed down. Both countries have had rates of growth since the 1980s that was positive, but nothing like as strong as the post war period that preceded it. And just to make matters worse, the Japanese had their own economic crisis after having what's considered the most healthy economy in the world. Upon collapse, the Japanese chose to let their Central Bank deal with the crisis, and only made minimal use of fiscal policies to deal with the issues, just like the Monetarists said they should.
The Japanese banks were suddenly awash with money, which they invested in countries whose economies were healthy, finding it almost impossible to lend money at home. Oops. Monetarism suddenly had its equivalent of stagflation, in this case a situation where unemployment remained high, while the Central Bank was running out of ways to inject more currency into the economy without devaluing it significantly in the process.
OK, recap time (2):
Recall the basic Keynesian principle: spend when your economy is having problems to get out of those problems, save when it isn't. It's not exactly rocket science, if you've ever taken out a student loan, you probably understand the concept.
Well, here's the problem. During the nineties, several things happened.
First, in the US, nobody wanted to admit that Monetarist economics were, well, just awful. And if they didn't want to admit that, they certainly didn't want to admit that Keynesian economics, flawed though it might be, was better, that it generally worked, and that Keynesian economists might have found ways to deal with the whole stagflation part. Why? Well, because Monetarism was a "free market" solution, at least in the sense that it didn't involve the government directly. Nice, free market, banks got to choose where to spend the money.
The second part was that the guy who came after Carter, Reagan, was an utter imbecile who decided to win elections by using a new lowest common denominator tactic - simply claim it was OK to reduce taxes. And it became gradually impossible for anyone to get elected who thought raising taxes was a good idea.
And so we got to the a state where by the early part of this century, US governments basically started to do things because they weren't Keynesian. Bush Jr, for example, used the fact the country was running a surplus as a reason to cut taxes. Keynesians would argue (and did) that given the economy was healthy (at that precise point) and the fact we had a large deficit, we should be keeping taxes where they are, using the surplus to pay off the deficit.
Do you know now where I'm going with this?
Keynes was never "discredited", any more than Isaac Newton was when Einstein said those fateful words "Wait a moment, I think there's more to it than that*". Keynesian economics turned out to be astonishingly effective, and one flaw in the classic Keynesian system shouldn't be used as a reason to switch permanently to a system that's clearly inferior. We've seen some absolutely awful economic policies since the abandonment of Keynesian economics within the US.
We now have a government and establishment that:
* OK, I don't think Einstein ever said that.
In the meantime, governments did what they always do, and prevaricated, going back and forth between constructive ideas and destructive ideas. The US government, for example, would spend money on public works in an attempt to revitalize the economy, and it would work. Then when unemployment started to fall, the government, concerned about the whole "People might think we're communists" crap, would cut back, and the economy would collapse again. This went on again and again, and was only broken after another war broke out, and the government was able - nay, required - to spend money like it was going out of fashion.
Keynes became a giant amongst economists after WW-II. He was proven right, again, and again, and again, about the links between unemployment, inflation, and fiscal policy, and governments began to seriously embrace Keynesian ideas concerning their own economies. But there was an asterisk to be put against the embracement. Keynes advocated massive government spending during bad times, and massive government saving during good times. But some governments used Keynes to justify spending at all times, and this caused an already skeptical group of economists to want to get away from Keynes, who was seen as encouraging too much government intervention in markets.
After much debate, most started to rally behind the ideas of Milton Friedman. Friedman adapted the Keynesian models, but addressed the underlying causes of poorly performing economies using what's arguably a similar but more generic set of concepts. Friedman argued that the cause of the great depression was a lack of money.
The amount of money in a modern economy is generally decided upon by a so-called central bank, a bank that acts as the manager of the country's currency. The bank has a number of tools available to it to allow it to expand the amount of money in the economy. It can, for example, adjust reserve rates, allowing banks to "lend" considerably more money than they "borrow" (from savers.) It can make loans of money cheaper, making it cheaper for banks to obtain more cash to put against their reserves.
When the Great Depression started a large number of banks collapsed because a lack of confidence in them caused numerous runs. The banks failed because they were unable to borrow enough to pay their savers. Friedman argued this was fundamentally the cause of the Great Depression, and that the Federal Reserve, the US's central bank, didn't do enough to increase the money supply to take care of the problem.
The arguments of Friedman and Keynes are often portrayed as polar opposites, but in reality they're similar, they just propose different groups of people as having the responsibilities involved. Both argue for an increase in the money supply, but Keynes proposes a "hard money" solution whereby the government borrows (or, preferably, spends savings) to inject more money into the economy via spending on commerce and business, while Friedman proposes a "soft money" solution where money is literally created to inject into the economy via banks.
Unmodified Keynesian economics was generally the default until the mid seventies. We have President Carter to thank for a switch over to Friedman's Monetarist economics in the US, and Margaret Thatcher for the switch to Monetarism in the UK. Both countries were suffering stagflation, which seemed to be caused by inflexible adherence to Keynesian economics. In particular, mainstream Keynesian opinion seemed to be that inflation and unemployment were negatively correlated. If measures were taken to deal with inflation (by tightening government spending), unemployment would likely rise, and if measures were taken to deal with unemployment, inflation may rise. Unfortunately, both countries were suffering both inflation and unemployment, and Keynesian economists were largely considered to be at a loss on how to deal with both happening at the same time.
OK, recap time.
- From the 1950s to the 1970s, Keynesian economics had been dominant
- The interventionist nature of Keynesian economics, and its use to justify heavily interventionist policies, made free market advocates eager to find alternatives, regardless of how effective Keynesian economics really were.
- During this 20-30 year period, one possible crisis was identified that most generally consider both unsolvable by classic Keynesian models, and caused by them, notably stagflation.
Growth in the US and UK slowed down. Both countries have had rates of growth since the 1980s that was positive, but nothing like as strong as the post war period that preceded it. And just to make matters worse, the Japanese had their own economic crisis after having what's considered the most healthy economy in the world. Upon collapse, the Japanese chose to let their Central Bank deal with the crisis, and only made minimal use of fiscal policies to deal with the issues, just like the Monetarists said they should.
The Japanese banks were suddenly awash with money, which they invested in countries whose economies were healthy, finding it almost impossible to lend money at home. Oops. Monetarism suddenly had its equivalent of stagflation, in this case a situation where unemployment remained high, while the Central Bank was running out of ways to inject more currency into the economy without devaluing it significantly in the process.
OK, recap time (2):
- Monetarism was tried, and appeared to have even worse problems than ordinary Keynesian economics. Keynesian economics at least took two or three decades to show any flaws, while Monetarism barely lasted half that time, and seemed to cause a lot of misery even when it was "working".
- Monetarism was clearly less effective than Keynesian economics at keeping an economy growing.
Recall the basic Keynesian principle: spend when your economy is having problems to get out of those problems, save when it isn't. It's not exactly rocket science, if you've ever taken out a student loan, you probably understand the concept.
Well, here's the problem. During the nineties, several things happened.
First, in the US, nobody wanted to admit that Monetarist economics were, well, just awful. And if they didn't want to admit that, they certainly didn't want to admit that Keynesian economics, flawed though it might be, was better, that it generally worked, and that Keynesian economists might have found ways to deal with the whole stagflation part. Why? Well, because Monetarism was a "free market" solution, at least in the sense that it didn't involve the government directly. Nice, free market, banks got to choose where to spend the money.
The second part was that the guy who came after Carter, Reagan, was an utter imbecile who decided to win elections by using a new lowest common denominator tactic - simply claim it was OK to reduce taxes. And it became gradually impossible for anyone to get elected who thought raising taxes was a good idea.
And so we got to the a state where by the early part of this century, US governments basically started to do things because they weren't Keynesian. Bush Jr, for example, used the fact the country was running a surplus as a reason to cut taxes. Keynesians would argue (and did) that given the economy was healthy (at that precise point) and the fact we had a large deficit, we should be keeping taxes where they are, using the surplus to pay off the deficit.
Do you know now where I'm going with this?
Keynes was never "discredited", any more than Isaac Newton was when Einstein said those fateful words "Wait a moment, I think there's more to it than that*". Keynesian economics turned out to be astonishingly effective, and one flaw in the classic Keynesian system shouldn't be used as a reason to switch permanently to a system that's clearly inferior. We've seen some absolutely awful economic policies since the abandonment of Keynesian economics within the US.
- The promotion of bubbles
- A refusal to pay off deficits when we can afford to do so
- A complete unwillingness to raise taxes when clearly they need to be raised.
- A refusal to spend when we clearly need to.
We now have a government and establishment that:
- Probably knows that only government spending will fix the crisis
- Knows that monetarist solutions like lowering interest rates and quantitive easing can only go so far.
- But has decided the deficit is more important, like an idiot deciding they should put $5 towards their credit card debt rather than towards a bus ticket to a sure thing job interview.
- Are treating the deficit as a problem caused by overspending, rather than undersaving.
- Have so much invested in looking at the big deficit number, they've forgotten that the real problem with the economy is the lack of jobs. People with jobs can support themselves, and pay taxes towards paying things off.
* OK, I don't think Einstein ever said that.
Subscribe to:
Posts (Atom)