"Look, you can dress a monkey in a suit, but he'll still be a --"
"Oh, hey, handsome! Nice suit!"
Guspaz asks why routers only do one-way QoS (that is, in the upload direction).
The simple answer is that while yes, you can fiddle with TCP sliding windows to adjust the receive rate, it's very complicated to do so accurately. The way to make TCP slow down is literally to drop packets, not just to delay them; delay is a latency thing, not a bandwidth thing, and a server noticing a high latency should put more packets in flight at once, not less. But you'd have to drop outgoing ACKs, not incoming packets, to reduce the bandwidth, and that's just complicated.
Incidentally, Linux's QoS stuff can do it, but it has a fatal complexity: you have to tell it what your link bandwidth is, and most users just don't know. mag will remember how annoying it is to calculate that correctly. (BTW: no, we still don't.)
Conversely, outgoing QoS (as it's normally defined) is easy. You just take all the packets currently sitting in the queue, and sort them in priority order. Got a new packet and the queue is full? Throw out the lowest-priority one. No real "bandwidth management" is needed, the algorithms are trivial, and it doesn't matter what your actual bandwidth count is.
VSS vs. SVN
pphaneuf mentioned a team at Microsoft that switched from Visual Sourcesafe to Subversion as if this said something bad about VSS.
Well, it does, but it only says good things about the judgement of Microsoft's developers in general. In fact, the smartest teams at Microsoft have never used VSS at all. Last I heard, many projects were using a modified version of Perforce. At the time my spies last reported, several teams didn't even use Visual Studio, preferring vi and make instead. But that was a few years ago now.
So there's your gossip for today.
I don't like to requote quotes, but...
You'll never see all the places, or read all the books, but fortunately, they're not all recommended.
-- The Unix Fortune Program
Texas = Meat
Fry's = Crack
Once upon a time, noise cancelling headphones were prohibitively expensive. Now you can get cheap ones with decent noise cancellation. Unfortunately, the reason they're cheap is that the non-noise sound quality is crap.
They were fun to buy, though. And because of Fry's's (??) liberal return policy, they should also be fun to return.
Split Brain Compromises
I've written several posts now about non-compromise solutions to problems. A non-compromise solution is definitely the best one. But suppose you can't find a non-compromise solution, or you have found one, but it's too hard or will take too long to implement?
Here's one example that's very hard to solve in a fully non-compromise way.
People who are introverted find social interaction tiring. People who are extroverted find social interaction energizing. And for sitting by yourself, the situation is exactly reversed. That's the simplest, most informative way of explaining the two personality types that I've ever heard. It avoids the faulty assumption that, say, introverts can't deal well with people. Not true. They can, they just quickly get tired of it. Conversely, some people are extroverted and annoying.
Here's the problem: it seems that introversion/extroversion is hardwired into your personality, and introverts are better at some things while extroverts are better at other things, and virtually nobody is energized both by being alone and by socializing.
Some problems require sitting and thinking. Some problems require socializing. If you're trying to improve yourself to be the very best at solving any particular kind of problem, you will have to choose at some point: are you an introvert or an extrovert? From there, you can choose the things you will and will not be great at.
But the hardest problems require a little bit of each. A compromise solution like this might entirely prevent you from being able to solve such problems.
What can you do about it? I see two possibilities: first, if you're an introvert, you can find one or more extroverts to work with. The compromise here: now you have to trust people before they've earned it, because you don't have the skills yourself. I've recently become intimately familiar with the results of this compromise.
Second, you can develop a split personality and switch between the two. Hey, humans are flexible. This compromise can have fairly obvious sanity-related consequences, but might be plausible in the short term to prepare for a switch (safely, this time) to solution 1.
Marketing vs. My Sanity
Dear Mr./Ms. Personsname, [...]
Nitix is a serious product.
That's why I wrote this poem:
- Nitix for Sage Accpac ERP
Is not only a novelty.
It never loses any data;
Our newest disks can now do SATA.
And idb is patent pending.
Your database will need no mending.
Make more money, save more time!
Only Nitix sells with rhyme!
Final score: Marketing:1, My sanity:0
pphaneuf talks about being happy and how it's more important for him to make himself happy than to dilute all his energy trying to make everyone else happy... and yet, how he just wouldn't be happy if everyone else was unhappy, and other people being happy leads back to him being happy.
This is a classic compromise situation. The correct solution is not simply to sacrifice your own happiness for others' happiness, or vice versa, or to alternate randomly between them, but to find a way for one to lead to the other.
That's not actually very hard to do, in concept, at least. You have to find the root cause of the unhappiness and then fix it. Looking at it from such a high level automatically handles confusing issues like "Should I have some temporary unhappiness now for greater happiness later?" or "Should I be a little less unhappy now so that this person can be happy now so I can be happy later?" The underlying strategy - solving the root cause - can guide all your specific actions.
Envelope Stuffing Day
My poem... they... they didn't... and now... hundreds of people... oh dear.
I promise I will never joke about marketing ever again. Um, unless I forget. Again.
Leadership and Motivation
Why would two software developers risk annoying their respective supervisors by skipping their normal daily (civilized) work and volunteer instead to spend hours stuffing envelopes for my advertising campaign? And after getting caught and dragged back to programming, why did they come back, unbidden, after hours to finish the job?
Some days, I actually like human nature.
(Thanks also to dwiseman, who volunteered for the same reasons, but has a cover-up excuse: she works for me.)
People are funny
You try to tell people what your product does, and they tune you out. But you pay good money to send people nonsense, and they like you. And they respond with things like this:
Credits are black
Debits are red
I can't write poetry
Thats what I said.
Art is a powerful thing. Mind you, some super powers are more useful than others.