Home

Mar. 10th, 2009

Can you spot the errors in the review?

I recently had a paper rejected from ECOOP '09. It sounds like it was close to getting in, and it's possible that the review summarized below tipped the balance. I've paraphrased most comments to protect the guilty. A running total of the error count is displayed in parens.

> "This paper appears to be very carefully worked out. However I have difficulty finding anything here that is especially novel or exciting." (-)

Must I be penalized for your lack of imagination? ;)
 
> The proposal is less expressive than traits (1), is more complex, and does not solve any problem that traits don't solve. (2)

In fact, it is strictly more expressive, its complexity relative to traits is subjective, and solves the problem of multiple inheritance with state, which traits don't solve. But, yes, other than that, the comment is accurate.
 
> I can translate most of the proposed language to language X. (3)

Um, yeah, except for the small matter of, oh, information hiding, and modular external methods. Is the rest "most"?

> External methods would not be available to instances created by existing classes that only know about the original class. (4)

False.

> For this reason either extension classes or aspects are needed so that the existing class can be extended. (5)

False. External methods will do it, and they are modular.

> The work on Y seems relevant here. (6)

The problem they are solving is actually orthogonal.
____

Now, ECOOP does include a rebuttal phase, where authors can correct factual errors in reviews. However, this review was done *after* the rebuttal phase, probably to figure out what to do with a paper with such conflicting reviews.

This is why some people sign their reviews--they want to be held accountable. Clearly this reviewer was not an expert in the area, or was too biased about the holy nature of traits.
Tags:

Jan. 6th, 2009

LaTeX is so horrible

So, I was using a package that was apparently incompatible with the LNCS template, but since TextMate was running pdflatex in batch mode, it just ignored the error and continued (and the TextMate output window didn't say anything!).  Turns out the conference needs the file to compile with no errors (go figure), and so I had to scramble to fix it.  The resulting file has oddly-placed whitespace and has some orphans (but no widows, which I think look worse), so yeah right LaTeX is so hot. Why are we using 20 year old software?
Tags:

Oct. 15th, 2008

I hate all dentists

I just can't get a break.

First I see Dr. Horrible, a.k.a Dr. Hart at Exceptional Smiles (on S. Craig St.)---DO NOT EVER SEE THIS DENTIST. He will do unnecessary dental work, and claim that you really needed it. Now I have a terrible pain in my jaw every time I eat something cold probably because he drilled into a healthy tooth.

So I go see Dr. Schmeler (a.k.a Shadyside Smiles) on Copeland St., and she tells me I need only 2 additional fillings, as opposed to 5. Which is great news. But then they make me pay in full, even though I have dental insurance. They say they will issue a refund once the insurance company pays, because they think the insurance company might not pay.

But then I notice that they never filed a claim. I call, and they say the problem is that they need x-rays from the other dentist. I have the other office send the x-rays AGAIN, and I forget to call them back to follow up. Now, 2 months later, I remember that still nothing has been filed, and call up Dr. Schmeler's office.

This is what they tell me: since my insurance company does not pay based on the price of white fillings (they pay 80% of the cheapest possible way to fill the tooth, an amalgam filling), it would be *insurance fraud* for them to file a claim with the company. First they say that the company changes the procedure code, then when I explained that they do not, they made some other excuse.

I've since called my insurance company who says there is nothing fraudulent about such a claim, and they are going to follow up with me.

I am PISSED. One dentist sucks, but files claims correctly; the other dentist seems good, but won't file my claim! I wonder if I can file myself, since I did pay in full.

UPDATE: The insurance company called the dentist's office, and get this: they say they filed the claim in July and it got lost by the insurance company, and now since 30 days have passed and they received payment in full, they have no obligation to send the claim again. They are going to send me the claim form and I'm supposed to call the insurance company once I get it. Apparently the insurance rep asked the woman at the office about the insurance fraud issue, and she just ignored the question. I think I want to write a letter of complaint to the dentist, and hope that the claims person isn't the one that reads that letter...

UPDATE #2: I need a new dentist; anyone have any recommendations?
Tags:

May. 18th, 2006

serious

The Pittsburgh Parking Court is horrible.

I just had a surreal experience dealing with a parking ticket. The Pittsburgh Parking Authority has a really stupid speech interface when you call to deal with your ticket. It asks you what you want to do, but you can only say two things!  "Pay a ticket" or "get information".  I said, "speak to customer service," and I also pressed 0 at the same time. It got confused.  This is what it said to me:

"An error has occured. The error code is minus one. The error description is: unable to perform speech synthesis."

And then it hung up. Now, I've gotten these errors before on webpages but never before have I had an error code SPOKEN to me.




Anyway, here is my issue. I got a ticket for $25 for parking for more than 2 hours in that area where you need a permit. The payment was postmarked one day late... so I got a late fee, of $23! So they sent a notice of a deliquent ticket to my parents' address, since that's the address of where the car is registered. (Incidentally, this is because the car is registered to my dad, due to a mistake on his part when we got the car; they paid the down payment and I eventually paid the rest. However, we didn't look into transferring ownership until I had already lived in Pittsburgh for a year, and it turns out for me to get the title of my OWN car, I have to pay 7% sales tax of the blue book value of the car, which is several hundred dollars, and completely ridiculous.) 

So, the date the letter was SENT was May 4, and an additional late fee of $15 accrues if you pay after May 5. I ended up getting the letter from my parents on Saturday or something. So I call up the parking people, and after a few attempts get through to a person. For some reason, the extra $15 hasn't been posted yet, even though they said they would by May 5. The person on the phone doesn't know why.

So here are my options:

1) Pay with a credit card, and pay an extra $3 "convenience fee." This means that because I sent in the payment ONE day late (because I wanted to avoid the damn $3 fee in the first place, I now have to pay more than double the price of the actual ticket).

2) Send in a payment, which will be credited when they actually get the letter, which may be after they put in the $15 payment. So the total ticket will be $63. Oh, and I think the same cycle will occur again--they'll send a letter to Maryland saying that if I don't pay the difference by 5 days ago, the ticket is now more money.

Essentially, I either have to pay an extra $3 or an extra $15 (or more!), simply because of the way they have set up their late fee payment schedule, and the fact that they insist on sending the notice to the registered address of the car, rather than the return address on the payment. How is this not extortion?  I tried explaining this to the person I talked to (I didn't use the word "extortion", and I was actually pleasant, and she said, basically, sorry, there's nothing I can do.)

[info]wjl has suggested that I get the credit card company to reverse the $3 charge, so as to make the parking authority pay. Does anyone have any other suggestions?  (btw, in case it hasn't come through in my post, I'm REALLY PISSED OFF.)
Tags:

May. 18th, 2005

serious

Diamond rant

Ok, most of you probably know how I feel about diamonds, but an ad I saw the other day is really over the top.  There is an ad in the bus station across the street from Whole Foods that reads:

Sleeping on the couch?

We have a diamond for that.


I find this incredibly disgusting. 
Tags:

May. 4th, 2005

ARGH JAVA RANT

This is f***ing ridiculous.  Due to type erasure, you can't create an array of a generic type T without having an object of type T and using reflection to make an array of the same type.  But if you create an Object array, you can't cast it to a T array either, since an Object array that will always contain T's is not the same as a T array (as it shouldn't be, but dammit, the type system should realize this operation is safe!).

So I thought, ok, I'll pass in a function that will create an T[] of arbitrary size. Except then I have to create yet another damn interface, and implement the stupid thing.  This is nothing new, but what really irritated me was that I just now remembered that faking higher order functions in freaking C++ is easier than this--you just overload the function call operator.  Alteratively (and a better approach) is simply to assume the type T passed in will have a member function named, say, "apply", and then the typechecker will make sure this is true of T once the template is instanitated, so you can fake structural subtyping.  Don't get me wrong, I fully (and painfully) understand the issues with C++ templates, but seriously, we're in a bad situation when C++ is beating Java.

So I thought, oh yeah, I have a wrapper lying around that is intended to wrap constructors.  It basically has only one function, makeObject, with the type alpha->beta.  Except I can't use it, as is. Know why?  The argument type I need is "int", and "int" is not a type that can be used to instantiate type variables.  So then I have to deal with freaking "Integer". Boxing helps, though marginally.

Btw, have I mentioned that the Fluid library includes a class "ArrayIterator", because in order to make an array something that you can iterate over, you have to WRITE CODE??

Perhaps one argument for having "dynamically typed languages" is that then you can have a screwed up language where you'd have to jump through hoops to get a typechecker to accept it if you had one, but people won't notice because they don't have a typechecker.  Somewhat ironically, Java's ugliness is far more apparent to me now that it has a slightly less primitive type system, since it makes the the language's flaws all the more obvious.

Somebody, quick, write a translator (that you've proven correct) from Java to Scala.  Ok, I'll give you a little more time, since you do have to first formalize the sematics of both Java and Scala... (though I think someone has done this for Java, since they tried to prove its whole disgusting mess as type safe).
Tags: ,

Apr. 27th, 2005

More grossness

I just want to create a damn pair.

(actual code follows)
new Pair
[Error: Irreparable invalid markup ('<methodwrapper,>') in entry. Owner must fix manually. Raw contents below.]

I just want to create a damn pair.

(actual code follows)
new Pair<MethodWrapper, List<MethodWrapper>>(result, new ArrayList<MethodWrapper>())

Sigh. In a civilized language, this would be simply "(result, nil)".
Tags: ,

Apr. 26th, 2005

Software rant

I just don't get it--why is it, after all these years of research and innovation, the best programming environment we have so far is really, in the grand scheme of things, quite mediocre.  Now, I really do like Eclipse, but I mean really--it's 2005!

Now, I suppose the same argument could be made for other types of software, like spreadsheets or document preparation.  But software is our field!  Why is the software we use so horrible?

Feb. 20th, 2005

I want higher order functions.

Yes, I know I can fake it with anonymous classes, but it's SOOOO ugly, especially if you're using generics...
Tags: ,

Feb. 4th, 2005

More Java rants

In today's edition of the continuing "I hate Java" series, Donna talks about the lack of higher-order functions:

I hate writing the SAME code over and over again.  In the program analysis framework I'm using (Fluid), you can attach an arbitrary (untyped) piece of data to an AST node.  This is convienient.  These data are keyed with a "slot info", and when you create a slot info object, you specify a default value for the slot.  But unless you have immutable values, the only value that makes any sense is "null".  In my case, I'm storing a mutable list, and a specifiying an empty list as the default would result in the same list being returned for all nodes. (Fortunately I realized this before I wrote code to do this.)  What's annoying is that obviously what we want is for the slot info's to take a *function* that will provide the default value. But this is such a pain in the ass to do in Java that of course no one does this sort of thing.  What I'm sick of is time and time again, writing this code:

result = hashtable.get(key); (or "exists" or whatever)
if (result == value doesn't exist)
  add a new item to the hash table
  return this item
else
  return hashtable.get(key)

I'm curious if there's a common idiom for this case in functional programming, or if it's even built-in to the standard libraries?

(Incidentally, I got so sick of how ugly the above code is that in one case I wrote an inner class inside of a function to do get a quick-and-dirty closure).


Note: Please excuse my rants.  But the last time I programmed this much in Java, I didn't know any better and didn't truly understand its mediocrity.  I often had a general sense of "this is kludgy, there has to be a better way!" and I'm very glad I can now articulate the awfulness.  (In fact, sometimes I mistakenly thought it was the nature of the problem that caused the badness!)

My next programming project is going to be in Scala, without a doubt.
Tags: ,

Feb. 3rd, 2005

ARGH!!!!

WHY OH WHY isn't there a warning in Java if you have something like:

if (condition);
{
}

or worse:
while (condition-that's-initially-true-then-falsified-while-executing-loop);
{
}

This is the second time in 3 days that I've done this.  I need to write an eclipse plugin that detects this and flags it.  If any of you are inclined to help me with this, please let me know.
Tags: ,

Jan. 25th, 2005

Java 5.0 generics

I like having typed containers, but JEEZ they could have fixed the syntax!  As far as I can tell, there are NO type abbreviations, and you have to use the fully-parameterized type when creating an object, leading to this code:

  private HashMap< Pair<IRNode, IJavaDeclaredType>, Set<IRNode>> origThrowMap =
        new HashMap<Pair<IRNode, IJavaDeclaredType>, Set<IRNode>>();

And what I want to do isn't all that complicated!  Map a pair to a set!

 

Tags: ,

Jan. 23rd, 2005

Argh

I wish Java had "fold", and real lambdas!

I suppose I could program in Scala, but I'm unsure how well that would work.
Tags: ,

July 2009

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Advertisement

Syndicate

RSS Atom
Powered by LiveJournal.com