Take Action
The internet provider I use should ONLY provide the infrastructure to connect me with the Internet.
As a business owner, I depend on skype / chat to conduct all my business dealings. My internet provider should not be permitted to interfere with my business transactions.
For any internet provider to insert themselves into the conversation I am having with the world, is the same as if the phone company inserted themselves into my voice communication.
I do not want a operator breaking in on my voice conversation to add their two cents to my private voice conversations with my employees.
Nor do I want the internet provider to break into my private written conversations with my employees just because I happen to be using VoIP (skype) to talk with them.
Nor do I want the internet provider eavesdropping in on my chat messages with my employees!
To allow this eavesdropping in any manner is to allow wiretapping!
Bluntly, clearly – “deep packet inspection”, “traffic shaping”, whatever the buzz words used is SPYING.
Furthermore, my small business is internet-based. My small business cannot afford to pay for special treatment. If my customers have their traffic “shaped” so that my site appears to be unresponsive or slow, then my business will lose customers to the larger competitors that can pay off the Comcasts of the world.
Take Action
Recently Facebook has been making a series of “privacy” changes in order to better convert peoples relationships into Facebook’s money. Dennis Yu of blitzlocal made some very valid points about Facebook’s latest effort. Facebook is revisiting “like” and “fan pages”:
- In effect, a fan page becomes more like a bumper sticker popularity contest than a real business presence or one of deeper engagement
- In a “twitter-esque” move, Facebook is trading volume of interaction with depth of interaction.
- Facebook will be able to sell engagement more broadly
The battle to pick the one “word” is meaningless and impossible.
Thinking points:
- My kids like their classmates
- My kids like chocolate.
- My kids like Rush’s music.
When my kids click “like” on their classmates FB page – are my kids “fans” of their classmates?
When my kids click “like” on the Hershey FB page – are my kids “fans” of any Hersheys’ Chocolate, just the milk chocolate? or are they fans of the Hershey company?
When my kids click “like” on the Rush FB page – are my kids fans of Rush? Like some of Rush’s songs but would never go to a concert?
Mimic the real world
Any social network website should look first to the physical world social network interactions and try to mimic those. Attaching words to a relationship between people is hard. Facebook is not alone in this problem. All social network sites fail in these ways:
- No measure of relationship strength – casual, sexual, deep love, or acquaintance.
- No measure of relative and fuzzy relationship strength ( “I like Peter about the same as Paul, and I like Daniel more than Paul”)
- No time component – relationships if not maintained diminish
- No context – workplace only? professional? activity-centric ( i.e. a bicycling club )?
- Age/Culture
- Example: Middle East v. Germany – very different. In one women are forced to cover up, in the other prostitution is legal. So in Saudi Arabia, “liking” an unmarried woman may invite a visit from her brothers. In Germany, someone may be “liking” their favorite hooker! (Similar cultural differences exist within the U.S.)
- Age/Generational: someone who grew up in the 1990′s has different meanings attached to words than someone who grew up in the 1970′s
- No consideration of the type of the primary parties in the relationship. Is this relationship between 2 people, a person and a product, a person and a company, or two companies?
- No consideration of the power structure in relationship: Does an employee “like” their manager so they get the next raise?
- No secondary relationships – ( “I like Rush because my hot, hot girlfriend loves Rush. Oh, I just got dumped by that hot, hot now-ex-gf. I don’t listen to Rush any more.” )
- No asymmetrical relationships allowed. Both parties have to agree to a relationship for the FB connection to be made. LinkedIn has the same problem.
So Facebook is just spinning their wheels looking for that magical word – and yes they are heading to the lowest common denominator as a result.
what Facebook is really getting wrong
But Facebook’s biggest problem is not “Like” v. “Fan”. Their biggest problem is their casual disregard for the social contract Facebook used to have with their users – not the legal TOS. But the unwritten social contract that was expressed in the marketing message and the way people use FB.
FB is stomping all over that social contract with their continuous “privacy” tweaks. Anything entered into FB is bound to be revealed by “default” to be public at some point. Go away on vacation for a month and come back and discovered that half your love life has been defaulted to be announced to your manager.
If Mark Z. and the rest of Facebook’s management can’t understand their own relationship with their own users, then it is impossible for Mark, et.al. to realize that relationships are too complex to be devolved to a single universal word.
Google Checkout asked for my review of Google I/O, so here it is!
Thanks for your recent purchase from Google IO.
We’d really appreciate hearing about your experience. Please take a moment to tell us about it by filling out the form below. We will publish your review online so that others can learn from your experience.
5 stars Excellent: I would definitely buy from this store again.
4 stars
3 stars
2 stars
(*) 1 star Poor: I would discourage others from this store.
How was your overall experience with this store?
Google I/O promised both the I and Ohhhhh’s. But so far Google I/O delivered only the ‘i’ (note the lower case) and delivered neither I’s nor Ohhhh’s ( of any case). Furthermore, Google I/O seems to be perpetually out of A’s ( needed for the best students), E (as in eeks!) and of course the all important U ( needed for assigning blame!). People looking to buy a vowel for their Wheel of Fortune appearance should go elsewhere.
I made the purchase and then discovered that Google I/O will ship May 19-20 (4 months from now!). Even with this long wait there is no promise that any quality Ohhhs will be in stock. There is no return policy if the promised Ohhh’s turn out to be disappointing oh’s. In spite of this Google I/O is promising to sell out. So Google I/O is suggesting that people arrive early – latecomers may find only damaged Ohhhs left in the bins.
With the promised sellout crowds and the potential scarcity of Ohhh’s Google I/O has shown little interest in increasing security or crowd control measures. San Francisco Police indicate that they have not been asked to assist. Currently, they regard Google I/O 2010 as just a normal event in the Moscone Center. It’s also my understanding that alcohol will be served. It is almost certain that there will be Oakland Raider fans in attendance!:
Any time the Oakland Raiders make their way south, San Diego gets nervous. Police officials call more meetings and re-check security plans. Home-team executives bring in extra guards and cut off beer sales early.
This year’s game is drawing special attention because it is being played on Halloween – and because a spate of bloody outbursts at sporting events in recent years has rekindled concern about spectator violence.
As well as some Manchester United fans:
Seven football fans have been arrested after trouble during Manchester United’s Premier League match at Birmingham.
West Midlands Police said there were two incidents of disorder Saturday, one just before the game at St. Andrews’ and one during half time.
All of this leaves me highly concerned that Google I/O 2010 will be a repeat of Walmart 2008′s Black Friday experience. I am sure the other Google I/O 2010 participants are aware of this. So in spite of Google I/O 2010 being billed as a family affair, I doubt that there will be many children in attendance. Since women lack the physical strength to compete for the mad rush to get the Ohhhs, I suspect women will also be underrepresented.
On the other hand, Microsoft has shown considerable effort in improved security. Microsoft TechEd Conference should be a safer experience. (Not withstanding that poor security in Microsoft IE was responsible for the Aurora attack)
Continue reading →
Hah, funny article. It’s the usual rant that “someone” has to pay for the content.
Someone, somewhere ends up putting out money for everything you do online, every piece of news you read, every Web app you use. It takes professionals and hardware across a gigantic industry to make these things work. In terms of overhead alone, content costs a lot. So why do some users always kick and scream at the first suggestion of paid content? Do you think content is worth paying for, and if so, what are you personally willing to pay?
I’m curious: What kinds of online content, if any, are you willing to pay for? And how much will you pay for them?
As usual for the stenographers they completely missed the point. They are no longer king of the data hill since the “journalists” do not provide information ( actionable data ) but merely (and usually inaccurate) data with no competent interpretation.
Some of the problems with the “content” MSM media produces:
- Inaccurate: It is extraordinarily rare to find a Main-stream Media outlet that can get the facts correct. I have seen articles confuse the term “Light-Rail” with “High-Speed Rail” ( equivalent to confusing “speed of sound” with “speed of light” ).
- Anonymous (gossip) sources: Reading anything about politics is equally painful “anonymous sources” are quoted, given reader no way to judge the quality of the information – so the article becomes disguised hearsay.
- Stenographers: Usually, a “journalist” lazily parrots a political party’s (usually Republican ) talking points or regurgitates a corporate press release. Witness the rah-rah-rahing of the Iraq War.
- Contrived controversies: There is the endless contrived controversies around settled issues ( global warming ) that confuse the lay man.
- False Balance: there is false “journalistic” balance where a scientist with a vast amount of data is “balanced” against the latest creationist whack-job.
- DWHC: Lastly come the endless pieces about the latest DWHC ( Dead white hot chick ) or rumors about Micheal Jackson’s death. Yes, people are interested in hearing about celebrity gossip, put it is mental cotton candy – low food value.
- Not unique: the article on the AP wire as little value. The same article can be gotten from a vast array of sources. Therefore its scarcity and value are non-existent to a given media outlet.
- Process-orientated: Case in point: Horse race mentality around what polls are saying about who is “in the lead”.
So why would I pay for “content” stenographic, celebrity gossip articles.
If journalists stopped being lazy and did more research than half-understood wikipedia articles and google-reading, it would be worth it to buy their content. But buy stenographic contact in advance, not a chance.
However, I would very much like to see a tip mechanism whereby I can tip a reporter after reading the article. But I ain’t paying for the crap fluff pieces. Hell you should pay ME that you wasted my time.
Amazing! Someone else also recognizes the crying need for “soft”, people skills in the hard, rocket science techie community!
I ran into Ari Krupnik at the Hacker Dojo job fair. I have constantly beaten my head against the wall trying to get other developers to understand that most people are not interested in technology for technology’s sake. Most people outside Silicon Valley has a life that does not revolve around technology but rather uses technology as an expression of “self” (“iPhone gets me the girl”). Non-techie types are anti-RTFM. Developers as a rule don’t understand and think the users are eager to spend hours discovering how wonderful the program is.
Ari apparently does:
I notice that engineers who block specific emotions entrain drama that revolves around the very emotions they block. The drama seems to go away as soon as the engineer is willing to experience the feeling that he blocks. In the tribe, we help each other unblock feelings and experience them fully. The results seem to include better relationships with peers and customers, and improvements in code quality.
Mark Z. (facebook) says everything should be public. Mark Z. does not know about Rebecca Schaeffer. Before she was murdered by a stalker, “no one” cared about the privacy issues around California selling driver license information to anyone.
Before identity theft became a huge problem, “no one” cared that every tom-dick-and-harry business was using social security numbers as account numbers.
Before 9/11, “no one” cared about terrorism at the deeply personal level.
The fundamental danger is that Mark Z. is completely unprepared for the reality that societies acceptance of what is o.k. can and does shift. Sometimes slowly, some times in one day.
Arrogance and indifference is blinding.
I won’t predicate the demise of Facebook. But if I was a facebook investor, this would be a little worrying. I sense a bit of an echo machine within Facebook.
If government law changes to demand privacy will facebook be able to respond?
Yesterday was a red letter day. I found multiple bugs in the javac and javadoc. (1.6.0_17)
This javadoc issue occurred when there is a class that has no package line ( it is in the default package). Annoyingly enough it occurred when I was trying to create a test case for this javac bug. I was running maven 2.2.1 at the time.
java.lang.NullPointerException
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:180)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageList(PackageUseWriter.java:124)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUse(PackageUseWriter.java:110)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generatePackageUseFile(PackageUseWriter.java:99)
at com.sun.tools.doclets.formats.html.PackageUseWriter.generate(PackageUseWriter.java:78)
at com.sun.tools.doclets.formats.html.ClassUseWriter.generate(ClassUseWriter.java:116)
at com.sun.tools.doclets.formats.html.HtmlDoclet.generateOtherFiles(HtmlDoclet.java:92)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:122)
at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:41)
at com.sun.tools.javadoc.Main.main(Main.java:31)
Solution was to put the java code into a package.
My javac crash:
An exception has occurred in the compiler (1.6.0_17). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: isSubtype 15 ( 15 = TypeTags.WILDCARD )
at com.sun.tools.javac.code.Types$5.visitType(Types.java:347)
at com.sun.tools.javac.code.Types$5.visitType(Types.java:328)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visitWildcardType(Types.java:3163)
at com.sun.tools.javac.code.Type$WildcardType.accept(Type.java:416)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:3161)
at com.sun.tools.javac.code.Types.isSubtype(Types.java:324)
at com.sun.tools.javac.code.Types.isSubtype(Types.java:308)
at com.sun.tools.javac.code.Types.isSubtypeUnchecked(Types.java:288)
at com.sun.tools.javac.code.Types.isSubtypeUnchecked(Types.java:460)
at com.sun.tools.javac.comp.Infer.checkWithinBounds(Infer.java:388)
at com.sun.tools.javac.comp.Infer.instantiateExpr(Infer.java:241)
at com.sun.tools.javac.comp.Check.instantiatePoly(Check.java:356)
at com.sun.tools.javac.comp.Check.checkType(Check.java:324)
at com.sun.tools.javac.comp.Attr.check(Attr.java:160)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1276)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:377)
at com.sun.tools.javac.comp.Attr.visitAssign(Attr.java:1550)
at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1342)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:384)
at com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1017)
at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1074)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.visitIf(Attr.java:1009)
at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1050)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.visitForLoop(Attr.java:740)
at com.sun.tools.javac.tree.JCTree$JCForLoop.accept(JCTree.java:818)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.visitIf(Attr.java:1009)
at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1050)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.visitIf(Attr.java:1009)
at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1050)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:634)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2697)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2628)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2564)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1036)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
at com.sun.tools.javac.main.Main.compile(Main.java:353)
at com.sun.tools.javac.main.Main.compile(Main.java:279)
at com.sun.tools.javac.main.Main.compile(Main.java:270)
at com.sun.tools.javac.Main.compile(Main.java:69)
at com.sun.tools.javac.Main.main(Main.java:54)
I was not successful at reducing this crash to a simple test case.
However, the line that triggered the crash was:
ProxyMapperImplementor<?,?> childProxy = this;
Some points:
- Once again (and again) the eclipse compiler is more robust than the sun javac
- ProxyMapperImplementor is defined as:
interface ProxyMapperImplementor<I, O extends I>
- Removing the wildcards so the line looks like solved the problem:
ProxyMapperImplementor childProxy = this;
Update (email from sun):
This issue is related to Bug ID: 6738538. You can review this bug at:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6738538
This problem has been fixed in Java SE 7.0. Consider downloading a free copy at http://download.java.net/jdk7/binaries/ and checking if the problem persists. If the problem persists do let us know and we shall investigate this furthur.
We greatly appreciate your efforts in identifying areas in the Java Standard Edition where we can improve upon and I would request you to continue doing so.
For some reason, the type variable <O> cannot flow through from an external caller through a callee to another called method.
This compiles just fine in eclipse, but once again sun’s javac is temperamental.
The three solutions seem to be:
- pass an object of type <O> to the subcallee method (m0(), p0() )
- use wildcard instead of <O> – which is o.k. if O is not needed in the body of the method
- assign to a variable with no generic information (universal backup solution to java generic wierdness)
I filed a bug with Sun.
(Technical details: javac 1.6.0_17 )
public class Foo {
public > I m(I i) {
/*line3*/ R r = (R) p(i);
return i;
}
public > R p(I i) {
return null;
}
public > I m0(O o) {
K r= (K) p0(o);
return o;
}
public > K p0(O o) {
return null;
}
public > I m1(I i) {
K r= (K) p1(i);
return i;
}
public > K p1(I i) {
return null;
}
public > I m2(I i) {
/*line 27*/ K r= (K) p2(i);
return i;
}
public > K p2(I i) {
return null;
}
interface FooInterface {
}
}
Foo.java:3: incompatible types; inferred type argument(s) I,java.lang.Object do not conform to bounds of type variable(s) O,R
found : R
required: java.lang.Object
/*line3*/ R r = (R) p(i);
^
Foo.java:27: incompatible types; inferred type argument(s) I,java.lang.Object do not conform to bounds of type variable(s) O,K
found : K
required: java.lang.Object
K r= (K) p2(i);
^
NPR has an article up about Diverging Diamonds.
While the Missouri Department of transportation talks about how this is great for vehicles, it is also great for pedestrians:
- all crossings can be signalled for long crossing times because pedestrians are walking with the main flow of traffic — so lots of time for moms with kids to get across.
- the center island can be double the normal width — the 2 sidewalks on the edge of the bridge are combined to one double width sidewalk.
- planter boxes or fencing on the perimeter of the center island can help reassure moms (and dads) that the 3-year old is not going to escape into traffic.
- NO worries about people turning into pedestrians – all traffic is going the same direction as pedestrians — except for the initial right turn on to the freeway.
- the right turn on to the freeway can easily be signaled and no right-turn on red allowed.
- the gray areas at the end of the bridge also provide nice big areas.
- Really, really easy to get across Missouri 13. It is now trivial to get do a diagonal crossing so that 44 and 13 are both crossed.
h/t to AdamHertz for pointing the NPR article out.