Could you also please friend
hopper [omnifarious.org] by clicking here:
and put that user (who is also me) in all the same groups you put me. If LJ ever lets you use your OpenID identity to log into an existing journal, this may be moot. but I'm not counting on that feature ever happening.
As an aside, if you click on the
icon in
hopper [omnifarious.org], it takes you someplace different than clicking on the hopper [omnifarious.org] does. The
takes you to the LJ user info page, and the hopper [omnifarious.org] part takes you to the homepage for the ID.
I've been thinking about Thrift and D-BUS ever since I made this post: Java and XML, bad tastes that are worse together. And then I followed up with a reference to my paper: why CORBA and other forms of RPC are a bad idea.
Those, of course, sparked a lot of discussion. Questioning Java and XML, the darlings of 'Enterprise' computing, would hardly pass without comment. It provoked even more of a strong reaction than I'd expect I'd get from questioning AGILE methodologies.
One person though ask me a really good question. Why did I think D-BUS and Thrift were better?
I had to think carefully about my enthusiasm for these two things, and I've reached some conclusions...
First, I like D-BUS a lot better. The problem domain involves communications between processes on a single computer. Context switch overhead is a big deal here, but latency isn't. Also, many encoding issues are greatly simplified in this sort of environment, though D-BUS handles those well regardless.
There are several things I like about D-BUS. There is a consistent naming scheme for referring to D-BUS objects and interfaces. Interfaces are generally expected to support an interface for describing the interface. So they're self-describing. There is a heavy emphasis on notifications and events. So much so that frequently the return you get from a function call is not the real return and you're supposed to expect a notification later that whatever you asked for has finished. Very asynchronous. And the format of messages is a self-describing binary format designed to support a reasonable set of datatypes and user-defined compositions (aka structs). There is a reasonably heavy emphasis on data. Notifications are all about getting the right data to the right thing so it can do whatever it needs to do with it. Very few imperative 'you must do X in such and such a way or I will be very upset' sort of messages are passed.
D-BUS is RPCish, but many of the things I really dislike about RPC are either non-issues in D-BUS' environment, things D-BUS handles better than most RPC systems or both.
Thrift is not nearly so well designed. The main positive thing it has is a nice language agnostic method of describing a data structure in a way that allows for clever upgrades of that data structure later without breaking old servers or clients.
Thrift is not inherently self-describing. There isn't even a standard for asking an object implementing Thrift to send you its IDML, whereas D-BUS actively encourages objects to implement a standard interface for this.
Thrift has the concept of async methods that return as soon as they've made it to the transport. But the methods are still very function-call like, and they encourage thinking of imperative 'do this, change your state in this way' sort of messages. I asked on the Thrift channel about an 'idempotent' method modifier for a method that could be implemented via HTTP GET and people were puzzled as to why I'd even want such a thing. The idea of using RPC to implement REST were met with general puzzlement.
Lastly there is no standard way of naming objects in Thrift. And the HTTP transport that comes by default just assumes it will be sending data via POST requests to http://something:port/, not much of a standard for naming the thing you're talking to at all.
So, Thrift as it stands is very poor for implementing random publicly accessible services.
But providing a language independent way to describe data structures is pretty darned nifty. The closest things I know of that are widely deployed on the wild Internet are JSON, ASN.1 and XDR. JSON is ugly and designed for Javascript Ajax clients. ASN.1 is just plain horribly ugly, overdesigned and a bear to parse. Given that ASN.1 comes out of OSI-land and they gave us such glorious gems as X.500, this is really no surprise. (Strangely, it's used for SNMP. What does that tell you about the S in SNMP?) XDR is not very self-describing in the data stream (from what I remember) has a bad name in other ways because it was associated with an awful RPC implementation from Sun, and is missing a map type.
I've been thinking that having web pages for interacting with data that will return a Thrift encoding of the data if passed an application/x-thrift Accept header might be interesting. They could even accept application/x-thrift data in HTTP POST or PUT requests. This would allow you to use URLs to name objects and a fairly efficient, easily parsed protocol encoding for sending the data needed to manipulate them.
I was discussing the fact that the default Junit report is singularly unhelpful in that it basically provides you with this really nice interface in which you can drill down to a particular unit test result. But this, of course, is not what you care about. What you really want is a list of the unit tests that failed with links to a detailed log of the failure.
She observed that the practice of making very pretty and complete but functionally useless software and reports was something she expected from the business side of engineering, not the engineering people themselves. I asked her what drove Java development and she conceded that was, Java is all about 'solving business problems', not engineering problems.
This led me to think about an idea I've had for awhile. I've long felt that chasing money was a fools errand in business. What you ought to do is chase down problems that need solving and figure out how to make money from them. The value you're creating should come first, and translating that value to money should come second. Money is the incidental reward for doing something that helps people, not the object.
In this context then I evaluate Java. Java initially received a lot of attention by geeks because many things about it were kind of new and interesting. It was a really innovative way to deliver client-side stuff. Platform independent with a built in security model that could be enforced relatively easily by the runtime environment. I saw a lot of interesting and innovative applets written.
But that was all trashed by three factors. First Netscape had a horrible implementation that didn't get any better. Secondly Microsoft tried to sabotage things and lastly Sun didn't go open fast enough to short-circuit Microsoft's attempts at sabotage. The client side was left in disarray and little attention was paid to it.
OTOH, a whole bunch of businessy types saw Java as the solution to a number of problems they were observing. It was hard to hire good programmers and the available languages made it very easy for bad programmers to make horrible mistakes that completely ruined applications. It seemed like Java made things safe enough that you could let bad programmers write code and at worst it would work poorly instead of completely trashing your system. This seemed like a business godsend and Java gained a lot of traction on the server side of things as a way to let armies of no-talent developers write decent server side software.
The developers with talent mostly felt that Java was a poor re-implementation of Smalltalk and only grudgingly went along with the whole thing.
Fast forward to now, and you're left with a technology who's development has been driven largely by business concerns and only a smattering of geeky enthusiasm. The interesting things that people do with it seem like solutions to problems created by other 'solutions' instead of like any real solution to a problem the universe outside of Java has.
The only really interesting stuff in Java anymore is mobile code. But using it involves dealing with dependency issues that have solutions designed to allow some stupid business to use some incredibly old version of something forever instead of taking the time to do even the minimal maintenance necessary to keep current.
It's all very depressing. Java seemed so promising in the 90s.
But I think, as a general recipe, solutions designed to solve 'business problems' are doomed to failure, or at least doomed to being stupid and badly designed. Don't solve 'business problems'. Solve your own problems, or your friend's problems or something you're excited and interested in. The market for it can take care of itself later.
The list is based on an exercise developed by Will Barratt, Meagan Cahill, Angie Carlen, Minnette Huck, Drew Lurker, Stacy Ploskonka at Illinois State University. The exercise developers ask that if you participate in this blog game, you acknowledge their copyright.
If you post this in your blog, please leave a comment on this post. To participate in this blog game, copy and paste the above list into your blog, and bold the items that are true for you. If you don't have a blog, feel free to post your responses in the comments.
( It's kind of long )So, here are my results on the aspie quiz that's been going around.
I am apparently not strongly blessed with aspergers, which doesn't really surprise me. I'm a little more on that side than neurotypical, which also doesn't surprise me.
and a bunch of ideas that have been banging around in my head for awhile.
I have always been very leery of multithreaded programming. I understand the concepts well enough. And sometimes that's really and truly the only thing you can do. This is particularly true at the OS level where you really only have one ethernet card and you need to mediate access between several different things running at the same time that all share the same underlying OS.
But it seems to me that having several threads of execution share memory in user-space processes is a mixed bag, and possibly not really worth it. I have several different reasons for thinking this. And a few of those reasons arise directly out of experience with modern multiprocessor system design.
( Long theoretical cogitation on threads and multi-processing systems )“Hi, I’m George Bush, and I’m here to take all your shit.”
Something that should be a law is signed into existence as an executive order. And it allows ones assets to be frozen on the say-so of one individual. The conditions that need to be met in order for this to be done are rather vague, and to an extent not very important because there is no oversight of any kind to insure that they're truly met. Additionally anybody said to be providing you any kind of aid can have their assets frozen too. This includes the lawyer who takes your case pro-bono.
I'm trying to figure out who they're going to use this on first so nobody complains. Most likely foreigners who have a lot of assets in US jurisdiction. But really, they could use it on anybody for any reason. See my previous statements about their being no accountability of any kind, not even the ability to appeal.
Of course the RICO act was quite severely injurious to the fifth amendment already. That's the act that lets them seize your friend's house because they caught you in it with a dime bag of weed. But this latest thing completely trashes it. Oh sure, your assets are just 'frozen' and not actually seized, but there is no effective difference when you actually want to use any of them.
I continue to be impressed by what the Bush administration thinks it can get away with and how right it ends up being.
I saw this article being put up on a website about meth addiction. Meth addiction is, admittedly, a pretty serious problem, but the headline had me in cynical stitches. It read "Meth, the Terrorist Next Door". It was like a straight dominant culture version of the lurid title of a pulp novel.
How many inappropriate contexts can the word "terrorist" be shoved into? One is tempted to come up with a list...
The list goes on. The word "terrorist" is such a useful, all-purpose word. We should all use it so often, for so many things that really it doesn't mean anything anymore. Kind of like replacing most verbs with "get".
| Quality Time: | 10 |
| Physical Touch: | 8 |
| Acts of Service: | 5 |
| Words of Affirmation: | 5 |
| Receiving Gifts: | 2 |
Take the Quiz!
Check out the Book
I sort of knew that. My favorite thing to do with someone I care about is to go do things with them. It doesn't really matter what. :-)
It can figure out how to get from anywhere to anywhere!
"downsize", "rightsize", "will be pursuing new opportunities", "feed forward", the list is nearly endless. All various bizarre business terms that actually mean other things but are meant to sound nicer and more positive.
I came up with a cynical explanation for this. It's basically spin. Nobody wants to take responsibility for anything that might be negative in some way, so the idea is to make it sound not negative. Then, if it's taken negatively it's the fault of the person who 'misinterpreted', not the fault of the person who gave the message.
I do think that reason is a big one. But I think there's another.
So much of business is based on the idea that if you're optimistic about succeeding, you're more likely to. That if you look at every difficulty or setback as a positive thing you'll get farther. And while optimists are less likely to be right than pessimists, the fact that pessimists often engage in self-fulfilling prophecy plays a big role in that. I think it's also true that optimists are more likely to succeed.
But, changing language like this in order to put a positive spin on it to try to convince yourself that the setback is really a good thing seems to me like putting the cart before the horse. You don't change how you think by changing your language, no matter what the political correctness advocates seem to think. You change how you think by changing how you think.
And in the meantime, all the upbeat "we don't want to say anything negative" business newspeak seems more like someone's trying to put one over on us. Like somehow we're stupid enough to not see through the positive spin to the real message.
Asking random USians on the street about the world
This is rather depressing, even taking into account that anybody who actually knew anything was likely not shown. It would be interesting to know exactly how many people he had to interview in order to get the results he did.
So, I'm doing some protocol design for CAKE, and I'm wondering about an issue involving very long messages, verification and MAC.
( kind of a long rambly explanation )I can't think of a good way to preserve both properties, and I'm not sure which properties are the most important. So that's my question to all of you. Is there a good way to preserve both things? If there isn't, which is more important? Is it more important that the receiver be able to check each chunk as it's received so it can have a good running idea of the health of the message as it's coming in, or is it more important to allow intermediaries (who may be of the store it for minutes to days variety) to be able to coalesce chunks?
In the Beginning was the Command Line is an excellent essay that I tend to encourage all of my friends to read. In fact, I tend to read bits of it out loud to them.
It is not completely true, and parts of it are dated. But it combines humor, metaphor and careful explanations in a way that's very informative and entertaining at the same time.
It is available in book form from Amazon.
I'm An Idiot (And Other Lessons From The IT Department) is about an attitude that's pervasive among computer professionals that I don't like. Users are not idiots. Just because they don't care to learn all the stupid finicky little details about how a technology works doesn't mean they're stupid. They shouldn't even HAVE to learn those things at all. It's the job of people like me to make computers for people, not to bludgeon people into the shape needed for the computers.
I tend to be kind of self-effacing about how annoying and stupidly designed things are sometimes. But I do tend to get grumpy with people who refuse to learn anything, even when doing so would make help them enormously in some task they're trying to accomplish.
A lot of IT people tend to get attitude from their users too. The users expect the IT people to fix everything. And the users persist in repeating mistakes, even simple ones, and then blame the IT people for it. To some extent I suspect this is a sort of payback for the attitude the users get from IT people, but I don't think all of it is.
But I still think things would be a lot better if IT people simply admitted that something is stupidly designed and should work a lot better than it does.
Copied from
mle292...
Wow. I'm not sure what to say about this.
Edit 2007-01-18: It turns out that this is totally unsubstantiated. Shame on PEER for trying to hoodwink us.
I donated some money to the Democratic party and I ended up on Marie Cantwell's mailing list. This isn't a completely awful thing, aside from the fact that it feels like a ham-handed attempt to move traditional marketing techniques into cyberspace with little or no change.
But, the thing that strikes me the most is the implicit assumption in almost every single email I get. The assumption being that you only get the politician you're willing to pay for. No talking through or reasoning about various decisions she's made as a senator. No, it's all about raising money with the idea of the opposition winning held up as the bogeyman that's supposed to convince you to open your wallet. Almost every email has some statement to the effect of "Give us lots of money and send a message to the Republicans.". How sad and sorry is politics when the connection between money and power is such a fundamental part that the relationship is assumed.
I will be voting for Cantwell, just because I think Bush is just that awful, and any possible counterbalance is a good thing, sort of. I hate playing "The enemy of my enemy is my friend.".
I had an interesting conversation with someone yesterday. I told her that I felt being poor was demoralizing and that if I were to live on foodstamps I'd be a leech. She was quite upset by my opinions and decided that I was no longer someone she wanted to talk to because she felt that I held opinions she wasn't interested in being arund.
( Longish musings on public assistance programs )Friday was quite an odd day for me.
I went in to work and as soon as the co-worker who's taking over my code came in he started pushing me into teaching him things right away, without me getting any chance to continue the finishing-up work I've been doing. About half-way through this, he reveals that they aren't all that interested in me showing up on Monday and intend to pay me for the entire next week, but not have me work.
I found this disappointing because there's stuff I did really want to do before I left. I also pride myself on the fact that any previous job I've left I've been considered trustworthy enough to do whatever was needed to set things right before I left.
So, here I am now at home taking a weeks vacation I wasn't expecting but probably needed. I'm not upset over it, it was just very weird for me. I considered telling Lockdown I could start a couple of days early. But I think I won't. I don't really need the extra money, and the vacation is kinda needed.
Thanks to
ubiquity for pointing out that apparently this was a mistake, and they're updating the policy to remove the offending terms. I'm quite relieved to learn this. Moving my journal was going to be a huge hassle.
For completeness, a link to my earlier post.
Navigate: (Previous 20 Entries)