How landlords get kickbacks to lock tenants into big Internet providers - <AUTHOR> https://medium.com/backchannel/the-new-payola-deals-landlords-cut-with-internet-providers-cf60200aa9e9#.mps85yo24 <comment><USER3> I lived in a building that had an exclusive deal with AT&T. Problem was they were out of "connections," and couldn't hook me up. I only had my cellphone hotspot for months, until I threatened to write a letter to the FCC and CPUC about their "monopolistic" practices in my building. They got a tech out the next day.

<comment><USER4> I had the same experience in SF. AT&T tried to sell me 28Mbit for $75/month in SoMa and the building didn't allow me to bring Monkeybrains. They just said no and told me they had an exclusivity agreement with AT&T. Called Comcast, they told me they can't because the address looks like a business address despite being residential.

I called the AT&T representative they got me in touch with. I told them about how what they are doing is illegal and they can't limit me to use this etc.

They backed down. Gave me free cable, 50% off, waived the installation fee and came and installed it in a day. Their previous estimate for an installation was two to three weeks.

<comment><USER5> You showed them that this tactic works, and have rewarded them for anti- competitive behavior. I wish I could say you've won in this situation, but at what cost to the rest of us?

<comment><USER6> This. Reading this and the original comment is really weird. "They tried to lock me in, but I showed them by locking myself in _faster_!"

<comment><USER7> A big reason lockin is bad is because they can screw you on price, right? So getting a fair price is, to some degree, beating lockin?

<comment><USER8> It depends on whether you only care about yourself, or think a little bit about others in your situation too. While the poster got himself a nicer deal, taking it only incentivizes the company to continue with this practice. After all, per one HNer who can negotiate a better arrangement, they'll have a hundred schmucks who will take the default.

Now, I understand that in real life, it's not an easy, abstract choice - <USER2> have "only human" issues playing part, like being tired and wanting to get the Internet situation sorted out ASAP. So to be clear - I'm not blaming the poster for choosing this way. But it was a suboptimal decision - and the kind of decision that lets schemes like this exist in the first place, so I wouldn't call it "beating lock-in".

<comment><USER9> I think that, for the vast majority of renters, getting a discount is about as much as you can hope for. We would all love to have the time and resources to take the telecoms to court and set a precedent, but 90% of us (probably more in SF and among Hacker News readers) don't have the luxury of doing without the Internet to make a stand.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This problem has been solved other places. For example, in Hong Kong, all operators have a statutory right of access to common areas of buildings to provision services to customers in the building.

[http://www.ofca.gov.hk/filemanager/ofca/common/Industry/tele...](http://www.ofca.gov.hk/filemanager/ofca/common/Industry/telecom/inote0004_12e.pdf)

Incorporated Owners/Building Management: "(a) should not impose any fees, deposit, access charge, administrative charge, escort charge or rental charge on the Operators for the access of the building, the use of the common parts of the building or the use of the in-building telecommunications system of the building for the provision of services to residents or occupiers of the building (b) should not enter into any commercial contract which will unreasonably restrict the right of a resident or occupier or deprives a resident or occupier of the right, to have access to the public telecommunications services of his choice. Any such agreement is void to the extent that it imposes such restriction;"

Would be nice to see similar legislation adopted in the USA.

<comment><USER11> What is the legal force of ' _should_ not' (as opposed to ' _must_ not')?

<comment><USER12> The last sentence is what does the work--the landlord can enter into a contrary agreement but it will have no legal effect.

</comment></comment></comment><comment><USER13> A client of mine in NYC was getting gouged for Internet service in their office building, by the incumbent building-wide ISP which seemed to be operated by the landlord. When it became necessary to upgrade to a higher tier of service, their only upgrade options from the incumbent provider were $1000+ per month above market rate. When we brought in service from a competing provider, we learned that we would have to pay the building's ISP a rental fee for use of the "risers"\- they owned the rights to the conduit from the basement to my clients' suite, and charged us rent at what I considered an unfair rate on our use of it.

I think many landlords around here signed away rights on telecom services without knowing better, or set up exclusive agreements like this and those mentioned in the article, but this was the worst offender I've ever encountered.

</comment><comment><USER14> My apartment in the midwest provides their own internet service, which is provided from Comcast. It's an amazing $60/mo plan for 5mb/s with a datacap of 250gb a month. I can not get "real" unlimited Comcast for $50/mo due to the exclusivity agreement...

<comment><USER15> Call your state's Public Utility Commission. I cannot believe that would be legal.

</comment></comment><comment><USER16> So happy to see an article about this issue... A few months ago, while apartment hunting, I was thinking to myself, why are people accepting this?

Several apartments here in Austin, TX do this. In my search, I found the biggest offenders were Greystar and Camden properties. They lock you in to these silly "Entertainment" packages. Exclusively Time Warner, Grande, or AT&T depending on the property.

If you're already in a contract with a provider, you'd have to break your contract just to move in? That's ridiculous.

It's really unfortunate, as some of these properties are located in very desirable locations. I couldn't come to terms with being forced to use a certain provider. So I found a property in a less desirable location that offered full competition among utilities.

<comment><USER17> I've experienced the same. As a consumer, what can we do? Complain on Twitter? Leave one star reviews?

<comment><USER18> I sent a referral in to the California Department of Justice/Antitrust Division when I ran into this at an Archstone (now Equity) property in Los Angeles. Didn't do me any good at the time, but hopefully they'll start investigating and prosecuting if people demand it.

The company that was given exclusive rights to provide service was plainly advertising a kickback program on their website before, but it looks like they've cleaned that up since.

Compare this `live` page: [https://www.consolidatedsmart.com/commercial- services](https://www.consolidatedsmart.com/commercial-services)

With this, from 2004: [https://web.archive.org/web/20041206091748/http://consolidat...](https://web.archive.org/web/20041206091748/http://consolidatedsmart.com/property- owners.html)

""" As property owners, managers and business people, you have a captive audience of resident consumers... we consider it our mission to continue to offer more profitable ways to maximize ancillary income from your residents and customers. Consolidated is your proven resource to increase ancillary profit with:

\- Coin Laundry Systems \- Smart Card Systems \- Satellite Television \- High Speed Internet \- Domestic Appliances """

Turning customers into captives? Kickbacks? Sounds like the kind of work that would violate Sherman Antitrust or RICO Act provisions.

</comment></comment></comment><comment><USER19> I don't know about internet, but I've declined to allow them to install satellite dishes. Their technicians will drill holes through your roof with reckless abandon, and the tenant won't care because they'll likely be moved out by the time the water damage really sets in from their improperly filled hole. Not to mention you can't have a one-time installation: They want to reinstall a new one every time so they can charge the tenant an installation fee.

Even if they offer the installation for free, I want their barely-trained technicians to drill holes in my property as much as a fisherman wants them to drill holes in his boat.

<comment><USER20> Just letting you know, the FCC prohibits landlords from disallowing satellite dishes and broadcast antennas from being installed in areas controlled by the tenant. You can disallow them in common areas (like the roof, which you mentioned), sure, but the FCC will come down on you hard if they get wind of you trying to interfere with them installing a satellite dish on their balcony.

<comment><USER21> What about the immediate exterior of their floor / unit?

<comment><USER22> Exterior walls are common areas owned by the landlord:

"OTARD rules do not apply to common areas that are owned by a landlord, a community association or jointly by condominium owners. These common areas may include the roof or exterior walls of a multiple dwelling unit."

</comment></comment></comment></comment><comment><USER23> As a member of an HOA board with 7 builds and 13 units, is there a reasonable way to go about setting up a common conduit system so any ISP could come in? Currently only Comcast had run lines with the original building of the property and of course didn't trench properly so no other ISP could come in.

Has anyone done this before?

<comment><USER24> you designate an MPOE (minimum point of entry) and then have cabling/conduit installed from the MPOE to units/residences/NIDs. then your HOA owns the "inside wiring" and, with the right amount of lawyer magic, each unit can own/control the destiny of the cable/wire/conduit that goes from the MPOE to them.

then the real trick is getting the ISP you want to play ball. I know of a few instances where Comcast just won't entertain the setup whatsoever. Unfortunately, in telecommunications, largess is the name of the game...

<comment><USER23> Awesome, thanks for giving me the term to further research.

There is at least one other ISP that doesn't have access to the property plus in theory Google Fiber should be coming to town (PDX) so I expect this issue is going to become more pressing.

</comment></comment></comment><comment><USER25> Google Fiber announced several months ago they were moving into my apartment complex and construction is expected to be completed with 8-12mo. In the mean time, I got a new job where I get to work from home, so I figured I probably -ought- to buy internet instead of tethering.

Shortest contract I could sign to get the advertised pricing was 3 years from the incumbent telco provider here. They offered me the "blazing" package that had a whole 10mbit upstream.

</comment><comment><USER26> In Chicago, I'm currently living in a high rise where the fastest plan I can get is 24 Mbps for around $80/mo. My high rise has an exclusivity contract with AT&T U-Verse. I've spoken with AT&T reps and they can't offer any higher speeds. I also talked to property management and they said there's nothing they can do for me. They are locked into an exclusivity contract with AT&T for the wires in the building.

Does anyone have experience dealing with properties who claim to have exclusivity contracts? I talked to people at Webpass, and they've stated it is available in my area. They'd come in and set everything up free of charge. I don't see the downside for my building to allow Webpass to come in.

<comment><USER27> I'm in a high rise in Boston, similar situation but with Comcast. I also spoke with Webpass a few days ago, they say that my building has a revenue sharing exclusive agreement with Comcast and that Webass does not participate in revenue sharing agreements. This feels like it should be illegal but my sister, an attorney, did not see anything obviously wrong under current law.

I'd like to see that change.

<comment><USER24> in a MDU, the owner owns the common spaces. that includes risers and inside wiring. they're free to sell, lease, or restrict the rights to whomever they please.

just like wifi ratings for hotels have become a "thing", so must exclusivity agreements and broadband providers when it comes to apartment/housing hunting.

it would be extremely difficult bordering on impossible, in my opinion, for a law in the US to prohibit property owner rights in a fashion that prevents these kind of agreements. only a "market" solution would work here. and of course, that's very difficult on its own.

</comment></comment></comment><comment><USER28> Does anyone know if any large-scale landlord is also receiving user data as well as cash from its ISPs? EULAs are broad enough to let any ISP, website or app provider to do anything with customer data that they want. Landlords could already being treated as "partners" and thus negotiating for and receiving user data in order "to offer goods and services" and "to improve the "UX". Is this a fair price to extract from a residential "captive audience?"

<comment><USER29> Very interesting you say this. I thought this was happening in my apartment after being up for a couple days. SSL connections would keep getting broken with resources loading over HTTP, I thought that I was getting MITM'd by property management and injecting advertisements. It would be a pretty good idea.

<comment><USER30> So what was actually happening?

<comment><USER29> I'm not sure. I ended up getting some sleep and then kind of just accepted that it might be happening. Sites would load a 1x1 pixel. It may have been my Windows machine was infected. I haven't seen this happen on my Linux machine yet. It's worth noting that I have since moved out of that apartment.

</comment></comment></comment></comment><comment><USER31> In most of the US, you have a choice of one or two wired broadband ISPs anyway. I imagine most renters don't care about competition, since they know they wouldn't have much of a choice no matter where they go, and if they're in an area with two choices, they're likely to be equally crappy.

ISP competition is important, but I see this as a symptom, not a cause. Fix the root problem, and people might start caring about ISP choice. Once renters care about ISP choice, big landlords will fall into line.

<comment><USER32> > ISP competition is important, but I see this as a symptom, not a cause. Fix > the root problem, and people might start caring about ISP choice. Once > renters care about ISP choice, big landlords will fall into line

Depends on where you live. In NYC, Verizon promised to provide fiber to the entire city several years back (and there is currently a massive legal dispute with the city because they've fallen _incredibly_ short of delivering on that)[0]. It's particularly apalling because Verizon didn't even have to build out most of the fiber - the city _already had_ a dark fiber network covering large portions of the city.

I'm one of the unlucky ones. Verizon has fiber running right in front of my building - other buildings on the block already have Fios. However, Verizon refuses to provide Internet to my building unless they can also provide TV service as well[1]. The landlord has given Time Warner Cable the exclusive rights to provide TV service in my building, so that means that I'm stuck with only one choice, even though it's technically a "competitive" market.

So, this issue is both a symptom and an exacerbating cause pf ISP non- competition. At least in NYC, exclusivity agreements make it much easier for the local monopolies[2] to pretend that they aren't blocking competition, when in reality they've carefully drawn lines around their territories and have a "gentleman's agreement" not to encroach on each others'.

If landlords didn't (or couldn't) receive kickbacks like these, it'd be much harder for them to maintain this illusion.

[0] [http://www.crainsnewyork.com/article/20150713/BLOGS04/150719...](http://www.crainsnewyork.com/article/20150713/BLOGS04/150719982/de- blasio-administration-goes-after-verizon-for-failing-to-deliver-fios)

[1] This is not hypothetical; I've called up their offices more than once and confirmed that this is the blocking step before they schedule a date to hook up the building.

[2] TWC, Comcast, and Optimum have exclusivity rights to buildings all across the city.

<comment><USER33> Cities using TV franchises to block competition and extract tithes is a huge part of the problem. Verizon wanted to wire up Baltimore with FiOS. Baltimore refused to give them a TV license. The economics of FiOS don't really work out without TV service, so nobody got FiOS except a few luxury buildings that were easy to wire up.

<comment><USER32> > Cities using TV franchises to block competition and extract tithes is a huge > part of the problem

I can't speak to Baltimore, but in NYC, it's the landlord that's responsible for this, not the city.

> The economics of FiOS don't really work out without TV service

I can sort of buy that argument in areas where they have to do all the buildout themselves, but in New York, Verizon was handed the existing fiber network that already ran past people's doors. Then Verizon has the gall to claim that they've fulfilled their obligations of wiring the city because 'everyone has fiber running past their door', even where they did literally _no work_ and simply sat on the fiber that others had already built for them.

<comment><USER33> > even though they did literally no work and simply sat on the fiber that > others had already built for them.

Source? Verizon has stated it invested $3.5 billion and ran 15,000 miles of fiber in New York.

<comment><USER34> Do you enjoy Verizon press releases? "Miles ran", "houses passed". Industry doublespeak. NYC residents invested those billions via rate hikes the PUC granted to Verizon!! It was subsidized even though Verizon claims otherwise. And they didn't deliver.

[http://www1.nyc.gov/assets/doitt/downloads/pdf/verizon- audit...](http://www1.nyc.gov/assets/doitt/downloads/pdf/verizon-audit.pdf)

[https://www3.dps.ny.gov/pscweb/WebFileRoom.nsf/Web/B849A0203...](https://www3.dps.ny.gov/pscweb/WebFileRoom.nsf/Web/B849A020314983A3852575D900530827/%24File/pr09054.pdf)

[http://www1.nyc.gov/office-of-the-mayor/news/415-15/de- blasi...](http://www1.nyc.gov/office-of-the-mayor/news/415-15/de-blasio- administration-releases-audit-report-verizon-s-citywide-fios-implementation)

<comment><USER33> I trust public company press releases that commit to concrete numbers: there is a cottage industry of plaintiffs' lawyers that bring securities class actions for material misstatements of financial information.

NY residents didn't invest anything in fiber. Verizon got rate hikes because it has been losing billions of dollars a year in NY. Nationwide, Verizon's wireline profit margin is in the low single digits--it's utterly ridiculous to say they're receiving a "subsidy" in the form of above-market monopoly prices.

<comment><USER32> > NY residents didn't invest anything in fiber

As I mentioned in my original comment, New York already _had_ fiber networks covering large parts of the city. Verizon was able to access these, which already "ran past" many buildings in the city (including mine), and still never bothered to hook up those buildings _as they had already agreed to_.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> Not at all the same, but I'm in a house in Redwood City and it's frustrating that part of the city has broadband choice (you can get Wave/Astound OR Comcast) but my part doesn't. I don't even really understand why -- I don't get what part of the infrastructure is owned by who, how it's decided, and how to push for change.

There are local providers such as Sonic who are rolling out Gigabit in certain parts of the Bay Area, and who insist "the more people in your neighborhood that sign up, the more likely we are to bring FTTH to your neighborhood!" but there's no way of judging which one is the more "likely" bet, which is frustrating.

I wish there was someone I could just throw a couple thousand dollars at to solve the problem, but no doubt it's vastly, vastly more expensive for them than that.

<comment><USER36> I live in Redwood City and my building offers both AT&T and Comcast. The last place I lived in sunnyvale offered 4 different tv/broadband providers. You should certainly ask what a complex offers when considering where to live.

</comment></comment><comment><USER37> > _And then they'll add little clauses saying "if any part of this agreement > turns out to be illegal, you can cut out that portion of the agreement and > the rest of it will stand."_

As will every attorney in the world for any contract. I don't think I've ever seen a contract _without_ this.

Comcast does enough ridiculous and illegal stuff, we do not need to reframe standard practices as bad simply because it's Comcast that's doing it.

<comment><USER38> To quote the Steam ToS:

>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, NEITHER VALVE, VALVE EU, THEIR LICENSORS, NOR THEIR AFFILIATES, NOR ANY OF VALVE'S OR VALVE EU'S SERVICE PROVIDERS, SHALL BE LIABLE IN ANY WAY FOR LOSS OR DAMAGE OF ANY KIND RESULTING [...]

Note the phrase "to the maximum extent permitted by applicable law" \- that means that if a section is illegal, then it's not to the extent of including _that_ section. It's pretty commonly used and it's actually pretty nifty, although I'd appreciate it more if companies didn't try to claim bloody _everything_ with it attached.

</comment></comment><comment><USER39> In Austria there's a law (might be an EU regulation) that requires the formerly state-owned phone company to rent the "last mile" cables to other companies. Made internet a lot cheaper (16Mbit ADSL costs around 25€ per month).

However, for some reason, private cable companies do not need to share their infrastructure, so if you want faster Internet you are still stuck with the local cable company.

<comment><USER24> this is called local-loop unbundling. there are various "hysterical raisins" (aka historical reasons) that cable companies are exempt from this regulatory requirement. the main one being their infrastructure was not publicly funded at any time (ignoring tax breaks and a bevy of other direct/indirect public subsidies)

there is also BSA or bitstream access where, in the case of DSL, the ATM circuit is provisioned and carried by the incumbent and then handed off to the competitive provider in a central location. of course, this isn't all that useful since it's still the incumbent who has to provision the circuit, maintain the copper and equipment, and generally muck up the customer experience despite not being the labelled provider.

</comment></comment><comment><USER40> My last apartment complex offered 100Mbit fiber for $50/month. My current apartment complex offers CenturyLink gigabit fiber. I guess I lucked out.

<comment><USER41> My apartment has just about every ISP in the area including locally run fiber that runs 60/month for gigabit. I actually laugh when I see fliers from the other companies offering "blazing fast" internet for 100+

</comment></comment><comment><USER42> > For existing buildings, stop companies from being able to sign contractual > provisions limiting access to inside wiring. Make it illegal for landlords > to get any form of side payment whatsoever for cutting off our choice of > ISPs.

Sure easy fix. Just void existing contracts that were valid when written. And this is coming from a lawyer no less.

<comment><USER43> Are you suggesting that the legislature cannot pass a law that voids part or all of a contract that was valid when written?

<comment><USER42> Honestly do you really think that this rises to that level of government intervention in business practices of private companies?

<comment><USER43> I thought you might have meant that a statute could not affect an existing contract. I had never heard of that before, but governments sometimes compensate people who suffer losses because of legislative action, so there might be something to it.

I don't want the government to interfere much at all in private affairs, and I don't think "there should be a law against" everything I don't like. I am not sure in this case, but conspiracies to prevent third parties (tenants and ISPs) from conducting business are pernicious. I would never enter into such an agreement myself.

</comment></comment></comment></comment><comment><USER44> At least in Ohio, the pricing is all the same regardless of whether or not you're in an apartment. So it's really more like you're selecting an Internet provider as a part of the renting process.

My concern with having shared utilities is you'll have to wait for some underfunded bueracracy to fix things if they break, which is likely to take even longer than Time Warner. Currently, WOW! and AT&T are actually quite quick about this where I live.

In my opinion, if you were to regulate it, it should just be to prevent the price gouging.

</comment><comment><USER45> >And these shenanigans will only stop when cities and national leaders require that every building have neutral fiber/wireless facilities that make it easy for residents to switch services when they want to.

There is no particular reason to limit this to multi-tenant buildings or wired broadband. The problem of monopoly last mile access comes up in different contexts. The same legal solution should work for most any situation.

</comment><comment><USER46> I've always thought it would be fairly lucrative to offer to act as an isp (w/o lock in) for an apartment complex.

<comment><USER8> We had this idea with my co-worker the other day, about becoming an apartment complex ISP, getting a high-bandwidth connection to the whole building and wiring every apartment with fiber optic links. Then, we'd put a server farm in the basement and offer "Internet + compute services". Like VPSes for techies, and OnLive equivalent for gamers, except the roundtrip for the latter would be down to the basement and back up, instead of down to Australia, through China and back.

The grander idea is to have apartment buildings with their own basement clouds, where tenants could off-load computational needs. Sounds like a much more energy-efficient solution than person having either an overpowered device or a low-power one in constant connection with clouds on the other side of the planet. Moreover, this idea was part of a general brainstorming about ways to dumb the cloud back down, so that it's distributed compute-on-demand infrastructure, and not the shitty third-party data silos it's now.

After reading the comments here I realized that while my friend and I would have the best of intentions, if ISPs in general were to be allowed to do such a thing, they'd fuck it up exactly in the way they do in this case.

<comment><USER46> Building an admittedly really cool sounding highly distributed cloud platform hardly sounds like dumbing the cloud back down :p

<comment><USER8> "Dumbing down" in the sense like ISPs are supposed to be "dumb pipes". I'd like the cloud to be a dynamically allocated compute resource - i.e. the end- user rents out computing power and provides both the data and the code that runs against it (which may or may not be licensed from a third party). The goal is to separate out the code providers and compute providers, and to keep the user always in control of their data.

</comment></comment></comment></comment><comment><USER47> A note to anyone from Webpass who might be reading this:

Please bring back the map showing the buildings where Webpass is installed...I looked recently and couldn't find it. Or, if this is too confusing now that you have many more installed buildings, please provide a list.

When I selected my last apartment, I knew I wanted to try Webpass. So I started there, pulled up the map of buildings that had it installed and limited my search to those buildings. Given how much better the service is than Comcast/AT&T, I can see a lot of people who work out of a home office wanting to do something similar.

You could even try to work with the buildings that have allowed you in to post apartment listings on your site...seems like a win-win-win (more webpass customers, faster filling of vacancies in webpass buildings, residents get better internet.)

</comment><comment><USER48> A few years back, an Ohio blogger was complaining loudly about the practice of "slamming" utilities (among other things) by The Connor Group. The blogger got sued for defamation.

</comment><comment><USER49> Interesting how the FCC will intercede to prevent physical gatekeeping by property owners but doesn't do much to prevent the virtual gatekeeping practiced by platform owners like Apple.

<comment><USER50> Whatever it takes for us to connect to Silicon Valley

</comment></comment><comment><USER51> So many things wrong with this argument. The biggest mistake is the idea that there is no competition. Of course there is, the telecoms are still competing with each other to get these agreements with the landlords.

Still the renter lacks a choice right? Not so fast. If internet is so important to you, as OP tries to make the case with questionable statistics near the top, then choose a building with internet you like.

The world is not Burger King where everything is have it your way. There are a finite number of Oreo flavors and yet no one is writing blog posts demanding their congressman do something about it.

<comment><USER52> It is illegal for Oreos to make it so that Keebler cannot be sold.

<comment><USER51> It's not illegal for a restaurant to exclusively offer Oreos and not Keebler. We are talking about renters.

<comment><USER52> It is illegal for Oreos to make it so. We are talking about goods distributors.

<comment><USER51> Coke and Pepsi exclusive agreements with restaurants and other venues are like the oldest ones in the book.

<comment><USER52> Agree. However, they bid for them- unless it's a chain owned by one of them. I would hope that if they unfairly used some leverage or provided kickbacks to the restaurant companies then there would be legal consequences.

 _Sure, a landlord can't enter into an exclusive agreement granting just one ISP the right to provide Internet access service to an MDU, but a landlord can refuse to sign agreements with anyone other than Big Company X, in exchange for payments labeled in any one of a zillion ways._

So we can either stop it now or not. It's our society. We can make the laws to help or hurt. Perhaps the landlords _should_ be allowed to skim. And gas, electricity and water, as well. But I would vote against it.

</comment></comment></comment></comment></comment></comment><comment><USER53> BS. Nobody is forced to live in these apartments. If you are looking to rent and this is important to you then rent someplace else.

<comment><USER54> What if all landlords in your area have independently reached these exclusivity agreements with a single provider? What choice do you have then?

<comment><USER55> Rent one of their units under such an agreement

Rent in some other area

Buy a place

I can't tell if the original article is legitimate journalism, a submarine piece for Webpass, or a bit of both.

<comment><USER15> So no real choice, then.

</comment></comment></comment></comment><comment><USER56> > I live in an apartment. Chances are good that you do, too: Tens of millions > of Americans live in apartment buildings, and in medium-to-large cities > these structures account for between a quarter and a half of all housing > units.

No, if less than half of Americans live in apartments then chances _aren 't_ good that that a random reader does.

> More people are renting these days than ever before.

Not true, according to [http://www.bls.gov/opub/mlr/2016/article/the-life-of- america...](http://www.bls.gov/opub/mlr/2016/article/the-life-of-american- workers-in-1915.htm) (which was posted just today): 'If you were alive in 1915, chances are you rented your house or apartment; the ratio of renters to homeowners was about 4 to 1 in 1920. In contrast, by 2004, 69 percent of American families owned rather than rented their residence, although that proportion slipped to 64 percent by the fourth quarter of 2015.'

So _far fewer_ Americans are renting than ever before.

I don't disagree that it's poor behaviour for landlords to grant monopolies to ISPs. But folks _do_ have a choice in where they live, and it seems to me that monopoly-free units are likely to rent for more.

<comment><USER57> "Good chances" doesn't mean 50/50\. It doesn't really mean anything. It vaguely means that the author is welling to bet on it, and smart people have bet on far less than that.

>So far fewer Americans are renting than ever before.

In 1915, there were ~100M people in the US. At 20% homeowners, that gives 80M renters. 36% of the current 300M+ population gives > 80M renters. Therefore, there are more renters today than there were in 1915.

</comment></comment><comment><USER42> Ok here we go again nobody is allowed to make any money and everything is unfair and capitalism is bad and so on.

In practice if an apartment makes money by way of this "kickback" it also offsets the rent that they have to charge the tenants of that building. Similar to airlines, assuming that if one charge is reduced or eliminated it won't show up in another area (baggage fees) or in the case of a building reduced maintenance or services doesn't take into account how real businesses operate. There is nothing wrong with a business making money and in fact a business that is profitable is also good for it's customers. A business that loses money is not. The "peanut gallery" (people who write blog posts and comment on this but don't actually even own their own business) aren't in a good position to know all the ins and outs.

That said, sure some businesses rip people off (if you want to call it that) but don't assume that is the default case.

Edit: Perhaps this attorney (at Harvard no less) could write an article about the 'legal tax' on society as a result of lack of competition in the legal market. The cost to consumers for that (since it's passed along in product costs) is almost certainly way greater than whatever the 'vig' is for higher priced cable television or internet service.

<comment><USER58> There's no incentive for that profit to be passed on as reduced rates for the tenants.

<comment><USER59> Competition.

<comment><USER60> Only a factor if there is a significant number of vacant properties that need to be filled with people, which is not the case in places like SF and NYC.

<comment><USER42> Well if that is the case then the price they could charge would be infinite and they would simply keep raising it.

Even in a competitive market, specifically the ones you have mentioned, the rent charged is based on supply and demand and the competition. If not what prevents them from doubling the rent?

<comment><USER59> To be fair to the original point, one could argue that sticker price of rent is more sticky than the imputed cost, and so this is a sneaky way of raising rent that doesn't reduce demand as much.

But that's a more complicated case to make than "kickbacks therefore bad".

<comment><USER42> > so this is a sneaky way of raising rent that doesn't reduce demand as much.

You could say a similar thing about laundry room charges where there isn't any competition. And also no specific disclosure as well (unless you ask) therefore is that sneaky? What I am saying is non disclosure does not mean "sneaky".

But another point is this: If enough buildings are doing this, such that an article like the parent post is being written, it then becomes something that a careful apartment shopper should or would consider when pricing apartments "total cost of rental".

You know if you buy an expensive luxury car they don't specifically point out that you will have to pay fees to keep your warranty current (Porsche, Mercedes as two examples). So is that sneaky? After all BMW (as a high end competitor) includes all maintenance.</comment></comment></comment></comment></comment></comment></comment>


RethinkDB (YC S09): MySQL Storage Engine Built From The Ground Up For SSD - <AUTHOR> http://www.techcrunch.com/2009/07/28/yc-funded-rethinkdb-a-mysql-storage-engine-built-from-the-ground-up-for-ssds/ <comment><USER2> Very interesting. I wish you great success.

Since your primary market will probably be developers, describing RethinkDB will be necessary, but not sufficient. Also, demonstrated performance will be necessary, but again, probably not sufficient. I, for one, want to understand what goes on under the hood (and be able to describe it to my customers).

The "Time to Insert 2 Million Records" graph was impressive. How does the "Time to Retrieve, Sort, & Present 2 Million Records" graph look? How about the "Time to Modify 14% of the 2 Million Records" graph?

Your append-only approach sounds great for adds. How is it for changes and deletes? How will garbage collection affect performance?

"No more locks" is a great claim, but how will it work in a real world enterprise-quality app? User A takes 30 seconds to change Zip Code, Phone Number, and increase Credit Limit while User B takes 10 seconds in the middle of that to change City and decrease Credit Limit for the same customer. Who wins? This is a difficult scenario in both optimistic and pessimistic environments. I can only imagine how it's handled in a "no lock" environment.

(I'm not looking for answers here, just spouting off what's on the top of my head, but I will be looking to better understand on your website. Your white papers oughta be interesting.)

You make ambitious claims. I look forward to seeing you fulfill them. Best wishes!

<comment><USER3> Thank you, this is a great post! We are looking forward to answering all of these (and many other) concerns by publishing benchmarks, papers, blog posts, tech talk videos, etc. We hope to do all of this in the coming weeks, we just took it one step at a time.

<comment><USER4> Good luck slava! And don't forget to send the compatibility patches for clsql- mysql ;-)

</comment></comment></comment><comment><USER5> Congratulations -- but keep in mind that cleaning (aka. garbage collection) is the hardest part of any log-structured storage system. I learned this lesson first-hand when writing tarsnap. :-)

<comment><USER6> Thanks; we're doing GC over the next few days (starting...now actually).

<comment><USER5> Full GC (removing everything which is not needed to read the current DB state), or partial GC (removing old metadata such as indexes, but leaving behind data which has been deleted/modified)?

The former is much harder -- it's a significantly complex task just to figure out which data records are still live.

<comment><USER3> Full GC. In the framework of what we're doing, it's not very complicated (we think). This is because of our indexing scheme (we can simply walk the index tree while the database answers queries). We hope to release more info on this shortly.

<comment><USER5> Cool -- good to see that you're thinking about this stuff ahead of time rather than sitting down to write code and suddenly realizing that you painted yourself into a corner. :-)

<comment><USER7> I did that once and regretted it.

<comment><USER4> you must have programmed _once_ in your life then.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Cool snippet from one of the [founders?] on TechCrunch:

> _All of our interesting work is MySQL API-independent, so a Postgres port is > not out of the question. We've also been entertaining the idea of porting to > SQLite, as many embedded devices use that, and have SSDs already._

<comment><USER6> yep, that's me. hi!

</comment></comment><comment><USER9> Looks like it's not open source, though they're apparently considering it: <http://news.ycombinator.com/item?id=729338> . For such an important part of infrastructure, I don't think closed source will do, especially not from a startup that's worked on it for only a few months. Open sourcing will:

\- Allow others to vet your codebase for stability and security

\- Give customers some recourse if your startup folds

\- Make you comparable to MyISAM/InnoDB/PostgreSQL, unless you want to be compared to Oracle or Microsoft SQL

<comment><USER6> To your points:

\- Nothing much I can say about stability and security, but then again, we're not saying it's stable and secure yet. Besides, people trust Oracle without seeing their sources, don't they?

\- If our startup folds, I doubt we'll drag our source to the grave. That said, maybe it gives our users incentive to make sure we don't fold? :P

\- There are closed-source MySQL storage engines out there with whom we'd rather be compared (TokuDB, Falcon (is Falcon open-source?)).

We just don't want to close any doors yet. If it makes good business sense, we'd be glad to open the source.

<comment><USER9> Oracle's been around a while and their stability and security have been battle-tested, or at least that's the perception that makes a prospective customer trust them.

Interesting that there are other closed-source MySQL storage engines. I wonder how big a piece of the pie (among paying or willing-to-pay users) they have compared to MyISAM/InnoDB.

</comment></comment></comment><comment><USER10> Using Apple's Xcode and Dictionary icons in the banner of the RethinkDB website looks pretty skeevy. It's hard to do by accident, and beyond violating Apple's copyright, it doesn't place your company in a good light.

I wouldn't bother commenting on it, but surprisingly this is not the first time I've seen someone lifting Apple icons for their startup website, and it's something that needs to be addressed: artists _are_ expensive, but you _can't_ take other people's artwork, and worse yet, it's _blazingly obvious_ when you use Apple's.

<comment><USER11> All of the icons we use are under an open license[1,2]. If you do find any specific copyright violations, we'll certainly remove them.

[1] <http://www.iconfinder.net/icondetails/6166/128/>

[2] <http://www.iconfinder.net/icondetails/8722/128/>

<comment><USER10> The icons are almost exact clones of Apple's -- the differences are so minor that I didn't notice them when actually looking at the applications in my dock. The Xcode icon, for instance, appears identical barring the reversal of the hammer.

[edit]

The Xcode icon you linked to comes from a user-uploaded KDE Icon Theme:

[http://www.kde-look.org/content/show.php/Dark- Glass+reviewed...](http://www.kde-look.org/content/show.php/Dark- Glass+reviewed?content=67902)

If you download the actual theme set, you'll find that the copyright ownership is unknown: "99% of this set is GPL now and what's not is most likely creative commons (a tiny number of the mime types may be proprietary). PLEASE abide by the licence rules, if you use icons from this set please research and credit the appropriate people. I have been given permission to release other peoples art work under the GPL so respect the licence." (from the README)

The original icon theme may be found here: <http://www.mentalrey.it/project.html>

As noted by mikejs below, Apple actually uses the same icon you're using. Digging a bit, it appears it's the icon Apple used for Xcode in Mac OS X 10.4 Tiger (Xcode 2.5): [http://www.command- tab.com/images/photoshop/tiger_icons/prev...](http://www.command- tab.com/images/photoshop/tiger_icons/preview.jpg)

Xcode 3.0 actually introduced the right-facing hammer:

[http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Ob...](http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjCTutorial/Art/xcode_icon.jpg)

<comment><USER12> Apple seems to use the exact variant of the icon that these guys are using on some parts of their site as well, see <http://www.apple.com/ca/science/whymac/righttool.html>

</comment></comment></comment></comment><comment><USER13> _Database consistency problems require traditional databases to use complicated locks. Because RethinkDB data is always consistent, locking is unnecessary._

You may not use locking for concurrency control (plenty of "traditional DBs" don't, either), but you still need some sort of concurrency control scheme -- just using append-only/log-structured storage doesn't make CC free. I'd be curious to hear how you guys are doing this.

<comment><USER14> Statements like that set my alarm bells ringing.

<comment><USER13> Sorry, statements like what?

<comment><USER14> Statements like "traditional X does Y but..."

The "traditional" (and I don't know how you could call the latest version of any of the major databases "traditional", this is a brutally competitive market) databases don't lock just for the fun of it, but to enable features that users want. Anyone can come up with a product that doesn't do Y if it can't do X either. So what're we missing here?

<comment><USER13> _I don't know how you could call the latest version of any of the major databases "traditional"_

Oracle has done MVCC for many years, as has Postgres. The canonical paper on optimistic concurrency control for DBs is from 1981 (<http://www.seas.upenn.edu/~zives/cis650/papers/opt-cc.pdf>).

I didn't follow the rest of your comment, I'm afraid -- I was just saying that I didn't see how using append-only storage immediately makes concurrency control a non-issue. The comments from the RethinkDB guys upthread support that: not supporting concurrent writers makes your concurrency control much more straightforward.

</comment></comment></comment></comment></comment><comment><USER15> I am confused by this graph. The linear default behavior makes sense -- it always takes the same amount of time to insert a row. The logarithmic behavior confuses me -- as you add more rows to the database, the time to insert a row _decreases_? If you add an infinite number of rows, each row can be inserted in zero time? That doesn't make sense to me.

I would like to read the benchmark script.

Also, I'm afraid to read their source code after reading the license agreement. I can't sell support for any product that can communicate with RethinkDB? That sounds unenforceable, but it is scary enough to prevent me from even looking at the code.

<comment><USER3> The benchmark is incremental. It measures how fast you can insert N rows given M rows already in the database. So, the second data point means you can insert roughly 750,000 rows in 140 seconds, given 750,000 rows already in the database. The limit certainly doesn't approach zero as the number of elements approaches infinity :)

The engine isn't open source. We're considering open sourcing it in the future, but we want to understand all business implications of this decision before we proceed - it's a decision you can't easily retract. The license is a bit draconian, but this is because we've only released a developer pre-alpha. We don't want people to use the engine in production yet - it's not ready. AFAIK, the license says you can't sell RethinkDB support, not that you can't sell support for software that uses RethinkDB.

<comment><USER15> _AFAIK, the license says you can't sell RethinkDB support, not that you can't sell support for software that uses RethinkDB._

From the license:

 _Prohibited activities include but are not limited to:

Selling support for products which incorporate RethinkDB._

This is the problem with rolling your own software licenses.

<comment><USER6> For the moment, we cannot endorse using RethinkDB in a production environment, and even then, this license is meant to be free for non-commercial. Once we get to that point, we'll be re-visiting the license anyway, before we start licensing to commercial users.

</comment></comment></comment></comment><comment><USER16> Congrats guys, sounds very exciting!

I just had one of those "why didn't I think of that" moments as I read through your wiki thinking back to this paper I read a few months ago: <http://publications.csail.mit.edu/lcs/specpub.php?id=773>

<comment><USER13> In fairness, log-structured storage is not a new idea. This paper is a great, classic read on the subject: <http://www.eecs.berkeley.edu/~brewer/cs262/LFS.pdf>

<comment><USER6> Very much not new. Nobody's done it for MySQL yet to my knowledge though, and I don't think many have looked at the implications of log-structured storage on SSDs. That kind of storage is notoriously difficult to do cleanly on a rotational drive, but our indexing scheme is quite simple. It's essentially some combination of shadow paging and side-effect-free style from the functional programming world, if that makes any sense to you.

</comment></comment></comment><comment><USER17> I still think SSD is a mere diversion in storage. According to Jason Hoffman (CTO/Founder of Joyent, speaking on Structure'09), SSD under their typical workload can only last for a month before wearing out: [http://gigaom.com/2009/06/25/structure-09-how-to-scale-up- wi...](http://gigaom.com/2009/06/25/structure-09-how-to-scale-up-with- distributed-data-storage/)

Cheap commodity disks however have an annualized failure rate of 4% in Google's datacenter (according to their disk analysis paper.)

</comment><comment><USER18> Congratulations! Glad to see some fellow Stony Brook folks on the map.

<comment><USER19> I know, right?

</comment></comment><comment><USER20> MySQL's pluggable storage engine model is so much win. You can have MyISAM, InnoDB, InfoBright and this in the same database engine for the same application. And there are many others.

</comment><comment><USER21> My question is, how much of the speed-up is due to RDB being append-only and how much of it is due to specialization to SSD.

</comment><comment><USER22> Congrats. These guys seriously know what they're doing from the talks I've had with them.

</comment><comment><USER6> vaksel: who are you? you stole our thunder :( actually :)

<comment><AUTHOR> nope, just your karma points.

Stealing thunder = releasing the same exact product, a month before you finish.

</comment></comment><comment><USER23> Good luck, guys! This is an interesting market to be in.

It's also nice to see a lot of interesting database related companies coming out of Stony Brook -- I think one of the founders of tokutek is from Stony Brook as well.

<comment><USER6> Michael Bender (one of our professors) is a co-founder of Tokutek, and several SBU grad students work there.

They are doing some _really_ cool stuff!

</comment></comment><comment><USER24> I did not see any mention of full-text capabilities. MyISAM is the only option in MySQL for doing full-text searching and it's pretty limited due to the table-locking issue. Are there any plans to have a good full-text search feature in Rethink? Having a lock-free full-text table in MySQL would be awesome for many many sites out there.

</comment><comment><USER25> Does RethinkDB support full text search?

<comment><USER26> Since they're building a MySQL storage engine, you should be able to just hook it into Sphinx and have everything work.

<http://www.sphinxsearch.com/>

<comment><USER27> Sphinx is awesome. On a database where MySQL answered full-text search queries in 20s, Sphinx builds indici in _2s_ , and queries are instantaneous for all practical purposes.

</comment></comment></comment><comment><USER28> You guys are gonna kill it. You deserve it. Great concept.

</comment><comment><USER29> Congratulations. Another YC 09 startup.

</comment><comment><USER30> This sounds pretty similar to Drizzle?

</comment><comment><USER31> congrats guys

<comment><USER11> Thanks, Bill! We're all very excited here.

</comment></comment><comment><USER32> Grats guys!

</comment><comment><USER33> Nice work. A great idea well executed.

</comment><comment><USER34> You guys rock!</comment>


Costco is rolling out new delivery services to compete with Amazon/Walmart - <AUTHOR> http://www.reuters.com/article/us-costco-wholesale-strategy-delivery/costco-shares-down-on-fears-of-grocery-delivery-eating-into-margins-idUSKBN1CB1EV?il=0 <comment><USER2> For the typical personal (non-business) customer, Costco's biggest strengths have always been:

\- The ability to get a large bulk of a middle-class family's share of once- every-few-weeks shopping done in one go: bulk sizes, wide span of stock from grocery to home goods, apparel, electronics, entertainment

\- Curation: no need to vacillate about which ketchup to pick

\- Suprise items you didn't know you needed until you see it; enabled by curation

\- Strong store brand offerings; enables curation

In the age of delivery, bulk shopping a filled cart of goods at a physical store is becoming a liability rather than a strength. But Amazon has terrible curation and is much newer at store-brand merchandise. They're just now easing into higher-value items.

</comment><comment><AUTHOR> Costco launching delivery service. Is this end of Costco. Will this decrease their store foot traffic? I think so. As they say, disrupt yourself before someone disrupts you. Costco knew Amazon is coming after them.</comment>


When can I use a given Web feature? - <AUTHOR> http://ajaxian.com/archives/when-can-i-use-a-given-web-feature <comment><USER2> Well, it looks like Safari is currently and will continue to be the most standards-compliant browser for at least the horizon of these technologies.</comment>


Ruby's not ready - <AUTHOR> http://glyphobet.net/blog/essay/228

<comment><USER2> From an ex-Pythonista a year in to Ruby, point-by-point:

* Ruby's Unicode support is indeed inferior to Python's; unlike Python, you need to explicitly use library calls to work with UTF-16 strings. Python does indeed bake this in to the language.

* I don't use multiline regexps. On the other hand, I do use normal regexps, all the time, and the fact that I don't have to call out to a library to use them, or deal with special "match" objects with their own API, is a plus. Ruby has more natural support for regular expressions than Python, where regular expressions are an afterthought.

* Ruby's documentation sucks. Full stop.

* I have no idea why I'm meant to care about what this guy thinks of Ruby 1.9 or Ruby 2.0. There's a Ruby 2.0?

* Python is way faster than Ruby. Not by a little bit.

* Ruby's scoping rules are a dream compared to Python's; it support real closures, instance variables and methods with encapsulation, and coroutines that were designed for more than just iteration.

* Ruby and Python are equivalent when it comes to internal consistency. Python delegates virtually everything to a sprawling standard library for which there is, most certainly, "more than one way to do it". Calling out the difference between "print" and "puts" is particularly amusing if you know how Python handles the same distinction.

* Ruby has a cleaner object model than Python, where virtually every feature of the language appears to have been built by exposing the raw symbol table to the language. The simplest way to observe the difference is by taking an existing class and wrapping it with an object that catches all method invocations, a la "method_missing".

* Both Ruby and Python support keyword arguments by giving functions a dictionary type of keyword/value pairs; Ruby has the added benefit of a Symbol type, like Lisp and Smalltalk. No Ruby program fails to use them.

* I'm guessing about, oh, zero people on Hacker News give a shit about SAP support.

* I never noticed that Ruby didn't print the actual line of code that threw an exception. It's true! Python does! I never noticed that, either! That's pretty neat.

* Apparently, despite having been largely ported from Rails, Pylons is more mature than Rails. Awesome.

<comment><USER3> Scoping. I got bitten by a huge bug in ruby's scoping last night:

        irb> [1,2,3].collect{|n| n+1}
        => [2, 3, 4]
        irb> n
        NameError: undefined local variable or method `n' for main:Object # Expected behavior - n's scope is restricted.
        irb> n = 0
        => 0
        irb> [1,2,3].collect{|n| n+1}
        => [2, 3, 4]
        irb> n
        => 3 # BAD

I have ruby 1.8.4. Most recent version is 1.8.6. Gotta go see if it's a known bug or worse if it's _supposed_ to work this way..

Edit: elided profanity.

<comment><USER4> It is supposed to work this way for some good reasons. But! Enough people have had the same problem as you that new versions of Ruby behave the way you expect.

<comment><USER5> Help me understand: what are the good reasons for the _parameters_ of a block overwriting variables in an enclosing scope?

That is, we are talking about:

        i = 100
        x = 0
        [1,2,3].each { |i| x += i }

I understand why it is incredibly helpful for x to refer to a variable in the enclosing scope (even if we could accomplish this same effect with a fold). What are the use cases for the parameter i referring to a variable in the enclosing scope?

<comment><USER6> As someone who's used to Scheme (lexical scoping), I have to say that's pretty bizarre.

That's my second disappointment with Ruby blocks. The first was learning you could only have one block argument.

Do they resemble first-class objects at all? Can you assign a variable to a block? If you were to assign

      { |i| x += i }

to a variable outside that enclosing scope, and then used that variable in that scope, would i be overwritten in that call to the block?

<comment><USER5> "you could only have one block argument"

Do you mean one method can only have one block?

<comment><USER6> Having only read about Ruby and not coded in it, I'm not sure what the correct terminology is. I'm talking about doing something like this:

      someObject.someMethod({block1},{block2})

<comment><USER2> You can't pass more than one block literal to a method. But you can certainly pass multiple blocks; they're objects, just like anything else. Just add the token "lambda" to your expression:

       def foo(x, y); x.call(y.call); end
       foo(lambda {|x| 2+x}, lambda {1})  # => 3

It seems to me that in this case, the language degrades to approximately the same level as Common Lisp.

<comment><USER6> It's good to see that an upgrade to approximately the power of CL is possible in this case. Still, I feel a little let down. When I first saw Ruby block literals, I said to myself, "Hey, that's a great, concise syntax for lambda. Languages really are getting more lisp-like all the time." But now I know that Ruby block literals aren't really lambda. It does look like Ruby lambdas really are lambdas, though.

<comment><USER7> Blocks are lambda's, they're just not objects (but they can be converted to objects.)

<comment><USER6> If you can't pass more than one block literal to a method, then a block literal is not a real lambda, from the Lisp point of view.

<comment><USER2> This is confusing, because Lisp doesn't have the literal notation you're talking about. Since Ruby supports arbitrary lambdas using "lambda" notation (something Python _does not_ support), it seems like Ruby's syntax can only be be better than Lisp's in this regard.

<comment><USER6> Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. I do not think Ruby is better for having an additional syntax (block literals) that is just like an existing syntax (lambda) only more restricted.

<comment><USER2> The syntax isn't meant to be "a better lambda". The syntax is meant to recast other language functions, like looping and iteration, in terms of messages and anonymous functions. Since idiomatic Ruby basically never has "for" loops, despite their easy availability in the language, I'm going to go ahead and call the "block" expiriment successful.

<comment><USER6> If it's meant to recast certain language functionality in terms of anonymous functions, why didn't they just make block literals return anonymous functions? It still strikes me as an almost-could-have-been-great syntax.

Idiomatic Scheme basically never has "do" loops, despite their being part of the core standard, and it's been that way for decades.

<comment><USER2> I agree that block syntax should semantically result in expression evaluating to a Proc object. This would be great:

      y = {|x| x} # => #<Proc>

I agree that block syntax could therefore be greater than it is.

I disagree that you can fairly knock Ruby for this, since blocks and implicit block arguments are still better than what you get in other languages.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I couldn't disagree more. Having tried both platforms, I felt like I was coding with one hand tied behind my back when I was learning Python, Pylons and Django. Web tools and the stack is a lot less mature than RoR stack and the amount of various plugins/gems available for both platforms was not even close. RoR plugins were so much more mature and multitudinous that after we started planning our app, we realized that we'd have to spend about 6 months(!!!) just writing the functionality in Django/Pylons that we were getting for free with Rails. Now this was about one year ago so things might have changed.

Since I don't have the time to go over each point that the author makes, I'll concentrate on a couple.

Lack of Unicode in Ruby 1.8.x. OK, so this might have been an issue before RoR 1.2 came out but since 1.2, RoR has introduced Multibyte and has been a lifesaver. Now, I don't have a clue how many Rails Unicode apps the author has written in his career but I can tell you for a fact that Unicode is not an issue in Rails anymore. We have an app in beta that uses Unicode for every string that we handle and we handle so many strings for so many languages that your head will spin. We haven't had any huge issues with RoR's Unicode support at all. So that argument is really a moot point.

As for language performance, who really cares?! Programmer's time is so much more expensive than servers so the last thing I worry these days is how fast some specialized benchmark runs. As long as the latency is acceptable and you can solve the problem by parallelizing it, the performance of an interpreter is completely irrelevant.

<comment><USER9> I think his point about performance was more that the rails developers were not taking significant steps to improve it. From what I understand, they are doing this for Ruby 2.0.

He definitely addresses the programmer time thing a lot, except from the perspective of code readability instead of keystrokes or whatever other metric you might use. Python is generally a much more readable language, and might make for more maintainable large scale systems because of it.

<comment><USER8> >From what I understand, they are doing this for Ruby 2.0.

In less than a year's time, you'll have so many choices to choose from. Ruby 1.9 is just one of the Ruby interpreters that you'll be able to pick from. There's also Rubinius (which is already outperforming MRI on so many benchmarks)

Take a look here: [http://programblings.com/2008/04/01/rubinius-for-the- layman-...](http://programblings.com/2008/04/01/rubinius-for-the-layman- part-1-rubies-all-the-way-down/)

And you'll also be able to choose from JRuby and IronRuby. The way I see it, I think there's more work being done on improving Ruby's than Python's ecosystem.

<comment><USER2> Ruby people should be more candid about the performance situation, which is a catastraphuck. It _is_ worth it, it _will probably_ get better, and raw performance _isn't_ that important for I/O bound apps, but Ruby is noticeably slower than pretty much all its competitors.

<comment><USER10> People make this claim all the time but I never hear anyone talk about actual examples where they were bitten by this.

People especially like to harp on the speed of ruby as a knock on ruby on rails. However I have not once run into a real life situation where the performance problem was directly related to the raw performance of Ruby. I have though run into plenty of performance problems:

* At Odeo (RoR circa 2005) we had plenty of problems with memory leaks in our FCGI (this was 2005!) processes and in feed_tools (well known to be slow)

* At my next company we quickly ran into situations where pages were slow to load due to the sheer number of database calls. When I started doing web apps I can remember never having more than three queries behind any given page. Some of our pages were doing 500 queries. This was easily fixed but Rails definitely tempts you to put up scaffolding which you then have to rework once it starts getting real use. In my experience this is a good thing. I'm twice as likely to throw away the scaffolding than I am to have to rewrite it.

* Twitter, which is the poster child for RoR scaling issues, actually actually has had almost all their problems on the backend, having to rapidly change their database and message queue architectures and deal with flaky service providers (AOL and phone companies). Again nothing to do with the architecture they launched with.

So, in the lab Ruby is a slow language, but in the real world how is this biting people?

<comment><USER2> Like I said earlier, our app parses with racc, does cryptography, and a fair bit of analysis. It is not heavily database dependent. Most of our I/O is memcached. I assert without evidence that Ruby's performance deficits have in fact bit us.

</comment></comment></comment></comment></comment></comment><comment><USER2> Well, this was interesting. My team just finished a Rails project that used Racc extensively (with multiple different grammars), made extensive use of cryptography, and spent several weeks up on blocks being tuned with ruby-prof.

Obviously, it also used ranges, keyword arguments (like _every other Ruby program ever written_ ), strings and string conversions, blocks, private methods, and yes, even Unicode.

I did notice that the documentation for these features was lacking. What I didn't realize was how much Ruby sucked, compared to Python.

I am now steeling myself to begin typing "self" in front of every instance variable, write ten lines of code every time I need a "method_missing", fish the gettimeofday equivalent out of 19 different libraries that return and manage time, re-learn whether I want to call popen, popen2, popenN, or create a Popen class, wrap my data types up in a list when I need code to close over them, condense all my anonymous functions to single expressions to work around Python's accidental support for lambdas (which, according to GvR, are evil), write my oh-so-thread-safe-code for an interpreter that serializes around a global interpreter lock, pretend that my classes have private methods by naming them differently, just like I do in my object-oriented C code, marvel over the amazing things I can accomplish with "generators", continue to format strings using "printf" semantics the way Kernighan and Richie want me to, and track down bugs that are literally invisible due to semantic whitespace.

Can't. Wait. You know what I miss most? Twisted.

<comment><USER11> "method_missing" - do you know about '__getattr__' for Python? (can be a one liner if you want...)

"oh-so-thread-safe-code for an interpreter that serializes around a global interpreter lock" - so Ruby's threading is better??

</comment></comment><comment><USER12> I haven't found the argument about backwards compatibility to be true of Python, but it has been true of Perl. Code that I wrote 5-6 years ago in Python has needed at least three updates to run in newer versions of Python (1.5->2.0 and 2.0->2.2 and 2.2->2.4--I no longer work in Python, so I don't know if they'd need an update to run on newer versions). On the other hand, code that I wrote ten years ago in Perl still runs unmodified on Perl 5.10. The only major upgrade problem I've seen has been the introduction of native Unicode in Perl, which caused anything that assumed scalars to be made up of 8-bit bytes to break, but that's a pretty broken assumption, anyway.

So, in short, I don't think Python is exactly a paragon of backward compatibility. It may be better than Ruby, but it isn't a solved problem.

I also disagree with the assessment that TIMTOWTDI is a bug. But, me being a Perl coder may have warped my judgment. I find Ruby very intuitive--moreso than Python, even though I've written more Python code than Ruby.

That said, there are some serious deal-breakers in Ruby. Lack of Unicode is one of them. I wasn't among the folks criticizing Arc when it didn't have Unicode at first release...but if it had gone more than a year without Unicode, I would have joined the bandwagon of critics. And, once again, I think Perl has solved Unicode better than Python.

</comment><comment><USER13> While I agree that Ruby (in the form of MRI) is pretty limited in the kinds of production applications it's ready to support, I feel just as strongly that Python is an evolutionary dead end.

Personally I predict that JRuby (which addresses most of the issues listed in TFA) will become the mainline production Ruby. It runs adequately fast, and has JVM threading, meaning that ceteris paribus it is 'fast enough' for the largely IO-bound tasks that make up web-programming. And when you program in JRuby you find yourself leaning on the Java libraries for most of the heavy- duty stuff (say what you like about Java, I certainly do, but the libraries are abundant and abundantly production-worthy). Ultimately, when you've got lambda and reasonably low-impedance hash tables then you can make everything else, so there's a future for Ruby.

Python on the other hand is a lost cause. Objects are a valid and important ingredient in a balanced diet of programming abstractions, but 'object- oriented programming' is for idiots or assholes or worse. Objects as a first- class language feature are nice-but-optional, I've worked on large C systems written in an object oriented style (one was a simulation, another was a widget toolkit, both had 'object' as a meaningful native domain concept). First-class functions OTOH are not optional, without them you've designed a language for infants. If you are designing a modern high-level programming language and you choose to cripple lambda (either because you've made regrettable decisions about your syntax that prevents their expression, or because you want to put training-wheels on the language itself, or LOL both) then you're an asshole, full stop. Python's scoping is tragic, at least Larry and Brendan had the humility to admit they fucked up and add reasonable scoping. GVR isn't wrong, 30 years of hard-won experience with correct lexical scoping is. If you think Scheme is wrong then I've got news for you: you are. Funny, now that I think about it it's not even about right and wrong anymore, it's about 'Pythonicity', which basically means that not only is GVR never wrong, if you don't agree then you're some kind of barbaric programming- language outsider. God I can't wait for a good example of Python (and more importantly the frigid, self-righteous, under-endowed Python community, I'm looking at you Paul Prescodd) to come into direct competition (- lisp epsilon) in a measurable, documented way.

At least Ruby and Javascript know that (- lisp epsilon) is the place to be, and they're both in the process of trying to add enough curly-braces to make themselves palatable to Java-refugees and no more.

Just remember: Python's not wrong, you are.

[http://www.python.org/doc/faq/general/#why-must-self-be- used...](http://www.python.org/doc/faq/general/#why-must-self-be-used- explicitly-in-method-definitions-and-calls)

</comment><comment><USER14> I'm going the opposite direction: after having done two non-trivial RoR apps I have a Pylons project on my hands right now. What can I say? Pylons is a baby Rails and Python is a baby Ruby. Language issues aside, Pylons' architecture seem to be a little cleaner than Rails, but even that advantage largely goes away with all these cleanups done in Rails 2.0.

Pylons/Python are more ugly and less complete than Rails/Ruby:

a) Ugliness: passing "self" to each method, deriving from Object all the time and having __foo__() method names is ugly, ugly, ugly.

b) Incompleteness: URL generation/routing and SQLAlchemy are too primitive and require more coding comparing to Rails. Stuff like form_for(Model.new) isn't possible as far as I can tell. Moreover, Pylons application requires a lot of bootstrapping to get going, setting up DB access is especially tedious comparing to ActiveRecrod's magic. Ralis' soft inforcement and helpers' assistance with RESTful controllers can't be seen anywhere in Pylons as far as I can tell. The list goes on: Pylons is more like a very very old Rails version distorted by ugly Python's object system.

Pylons probably looks pretty sweet to someone who's starting on it with a fresh head, but after two years on Rails I am less than thrilled to work with it. I may not be Pylons expert by now, but man... it's been two months and it still doesn't show me any love :-)

I love Python though. I like CPython implementation and quality of the libraries. Right now it's my language of choice for any stand-alone piece of software, but I try as hard as I can to avoid Python's object system.

<comment><USER15> The beauty of Python, is that there is a lot of choices when it comes to frameworks. Actually, probably Python is one of the those langues which makes using a framework strictly optional. And there are so many options if you do things that are not your average web app. With Ruby, you are stuck with one, good framework, but not much if you want to do things very differently.

Django, Pylons, Cherry.py, web.py, Turbogears, and countless of other frameworks.

And I completely agree, on the fact that object oriented programming in Python is not pretty at all, but as a language it wasn't necessary ment to be used that way.

<comment><USER16> In Ruby you've also got a bunch of Web frameworks/libraries (Rails, Merb, Camping, Rack, Ramaze, Sinatra, and Nitro, to name a few).

</comment></comment></comment><comment><USER17> He has some valid points, but I think a more accurate title is: "Why I don't like Ruby"

"Migration to Ruby 1.9/2.0"

Won't python dev's have the same problem with Python 3000?

"Performance (or lack of)"

JRuby and Ruby 1.9/2.0 already address this issue

"Scoping" "There's more than one way to do it"

I don't see this as a weakness. This is more about style and preference, though I admit I like Python's philosophy better (Ruby code just looks more beautiful to me)

overall I still think it's well written criticism (at times I cringe looking at the horrible stuff people in the ruby community write)

<comment><AUTHOR> > Won't python dev's have the same problem with Python 3000?

Read that section. It outlines why Python won't have the same problem.

<comment><USER17> that's assuming the conversion program works well... It may work well for snippets, but I have to see it work well with larger/mature python code bases to believe it.

<comment><AUTHOR> Ok, that's fair enough. Who knows how well the conversion program will work. Still, for Python 3, there's a clear plan... and there's no clear plan for Ruby 2 (yet).

<comment><USER17> good point

</comment></comment></comment></comment></comment><comment><USER4> I've noticed a bias in favour of "What I learned first is better." It applies whether the topic of discussion is programming languages and operating systems or politics and religious values.

(Pre-emption: "bias", not "law".)

Psychologists have lots of fancy words for describing why this is.

<comment><USER5> <http://en.wikipedia.org/wiki/Baby_Duck_Syndrome>

</comment></comment><comment><USER18> These, of course, are not problems with Ruby -- so fellow Rubyists, don't get bent out of shape over this. It's a list of his priorities, which don't happen to align with the current state of Ruby. It's not hard to come up with a different set of criteria that make Ruby look perfect and Python look unusable, and I'm sure other people here will do just that.

But interestingly, all three of his main arguments in favor of Python (more mature, more consistent, and more complete documentation) also sound like great reasons to use Common Lisp over Python.

</comment><comment><USER19> Everything appears to be a matter of taste:

Ruby has two range operators, .. and .... Why? The only difference is that the shorter one, with two periods, returns a longer range, and the longer one returns a shorter range, not including the endpoint. Can this possibly get any more confusing? 2 The language should have one, not two. It is not hard to add or subtract one when you want a range with, or without, its endpoints.

I like the shortcut. Then again, I like the English language. I like the fact that you can express things in a myriad of (yes, you can say "myriad of") different ways depending on how you want to express them.

A Pythonista friend of mine once complained over the simple fact that Ruby had so many ways to express a conditional but none as elegant as what was used in Python.

Python:

\- if foo: bar()

Ruby:

\- if foo then bar end

\- if foo; bar end

\- if foo: bar end # deprecated

\- foo if bar

\- foo && bar

\- foo unless !bar

I love the diversity, however. Really, the first thing that sticks out to me with Python are those superfluous parentheses. Taste, taste, taste.

<comment><USER20> Its funny someone once wrote that Rails should have been written in Python - his main argument was that Ruby gives you so many ways to do things but Python tends to pick "a" way. The Rails framework tends to follow this Python like mentality of Picking a particular way.

</comment></comment><comment><USER21> Imagine how much good code in either language is currently _not_ getting written ;-)

</comment><comment><USER22> As someone who spends most of his time working in Python, the section called _One nice thing about Ruby's scoping_ made me a little bit jealous. I hate the way Python handles default parameters.

Also, I think glyphobet is a little hard on Ruby's range objects. He says:

 _Python's xrange() can also be passed around like a variable, but you test for membership with value in myrange instead of ===._

An important difference there is that "value in xrange(10000)" iterates to find the value, while "(1..10000) === value" does something O(1), like 1 <= value < 10000\. Range objects are handy, and different from list constructors like range() and generators like xrange(). But I agree that the ".." and "..." syntax is weird.

<comment><AUTHOR> Ah... You're right. I thought value in xrange(10000) just checked the endpoints, but it appears to iterate. Someone should write a PEP. :)

</comment></comment><comment><USER23> He brings up a good point w/ documentation. Ruby's has left me wanting in more than a few situations.

<comment><USER8> If you're working professionally with RoR buy few commercial books on Ruby and Rails. The cost is negligible when you consider the savings in time that you will get when learn from a good Rails/Ruby book. Sure, Django has a free book on the basics of it and there is Dive into Python series but the number of books on Rails is much greater and they are professionally edited and are of better quality.

The lack of free books is an issue but you get what you pay for.

<comment><USER2> "You can buy a good book" is not a valid response to "Ruby's documentation sucks". I have all those books, and I don't feel compensated for Ruby's crappy documentation.

</comment></comment></comment><comment><USER24> I think that the real teller on Ruby is it's own website. not the main page, but most of the surrounding infrastructure linked community is really slow. That is, it is painful to browse. I don't use Ruby or Python very much, but when I do I usually go through the main site for language to find reference and documentation and Ruby is definitely more difficult on that count because of this. I can only assume that it is because they build their websites in Ruby.

On the other hand, Ruby is Japanese. I suppose that the websites may be hosted on on Japanese servers all that way across the and that may account for the lag. It's still annoying though.

</comment><comment><USER25> The author has ceirtainly touched a nerve.

I wonder if Perl 6 will be a better Ruby... I do hope we can start to use it by this year's end.

</comment><comment><USER26> I like ruby as a language, but not the implementation. And as a matter of fact, matz knows and acknowledged he is not a good implementator.

</comment><comment><USER27> Ruby works for me. I like the language semantics. What I miss are the email libraries/parsers that are available in other languages. Don't you think Ruby will catch up with the missing features in a couple of years? The documentation isn't that bad either.

</comment><comment><USER28> Serious question:

Doesn't the fact that Twitter has been running a highly trafficked Ruby website for a while now nullify all arguments that "Ruby's not ready"?

Sure, we all know that Ruby could be _better_. But isn't it ready now?

</comment><comment><USER29> Blah Bah Blah Bah Blah Blah.

Too much time is wasted on this planet due to people trying to convince themselves they are "doing the right thing".

I don't know (or care) what the results are for others. For me, Ruby on Rails saves me tremendous time when developing projects and makes me enjoy coding web apps again. So I use it.

If you get that same feeling, use it too. If you don't, try something else.

Anyone who sees anything more to this needs a vacation.

</comment><comment><USER30> Shorter glyphobet: Ruby's not Python.

</comment><comment><USER31> "The language is inconsistent and needlessly complex."

Huh? This is Ruby he's talking about? I don't find it to be inconsistent or complex.

<comment><USER14> Ruby's syntax is by far more complex than Python's. By "complex" I mean it from a parser's grammar point of view.

<comment><USER2> Won't somebody _please_ think of the parsers?!

<comment><USER31> Leave Britney's parser alone!!!

</comment></comment></comment></comment><comment><USER16> Isn't it a little late for April Fools' jokes?

</comment><comment><USER32> Ruby pwns Python. word.</comment>


Innovative zero-emissions power plant begins battery of tests - <AUTHOR> https://www.nature.com/articles/d41586-018-05247-1 <comment><USER2> No magic, just clickbait, or creative accounting.

> _The combustor then ignites a mixture of natural gas and oxygen, which is > extracted from the atmosphere in a separate facility. This heats up the CO2 > in the loop that drives the turbine, but it also produces additional CO2 > that must be siphoned off to keep the system in balance._

The power plant still produces CO2, but they are planning in the future to sell or burry the CO2, so it magically doesn't count.

Apparently they get pure CO2 instead of mix with Nitrogen and other air parts, and that somehow makes the CO2 easier to reuse, but the creative accounting of the "zero-emission" claim makes me skeptical.</comment>


EaselJS v0.3 Released - <AUTHOR> http://gskinner.com/blog/archives/2011/02/easeljs-v0-3-released.html <comment><USER2> Very interesting, I know I need a game viewer for my online simulation football game <http://deeproute.com>

Having a hard time deciding what to use. I've installed and messed around with Unity 3d, which seems like a lot of overkill as I just want a viewer, not an interactive game.

Something like this seems like it might be more up my alley. Going to start reading the docs.</comment>


Linux's new CoC is a piece of shit - <AUTHOR> https://old.reddit.com/r/linux/comments/9ghrrj/linuxs_new_coc_is_a_piece_of_shit/ <comment><USER2> I can't see anything wrong with the Code of Conduct. Some people call it "toxic" and they are afraid of the "SWJs" taking over. This is only a problem if you try to loose focus on the quality of the work.

Some argue that now that Linus realized how his communication is received sometimes, he will suddenly not be able anymore to tell people when shitty code is shitty. There are a billion ways to tell somebody their code is shitty with out attacking the person themselves, some of which might even make them realize that you are right. And Linus certainly didn't sound like he doesn't care about the kernel anymore.

IMO the Code of Conduct has nothing irrational or outrageous in it:

* don't be sexist (you can critique someones code without making it about their gender or gender identity)

* don't be racist (you can critique someones code without making it about their race or origin)

* don't be shitty to people who know less (you can critique someones code without making them about them beeing a noob, and help them getting better)

etc.

I don't see how having more harassment would aid code quality.

<comment><USER3> And if you dare to question that there are more than two genders then good by.

<comment><USER4> This is a silly statement.

I'd be amazed if you somehow managed to question this and still make it related to the Linux kernel...

<comment><USER3> This is the problem with this covenant, anything you say personally in your own social networks will also be taken into account.

<comment><USER5> That's not true. In fact, it's a specific misrepresentation of the CoC. Whoever planted that idea, did it in bad faith:

> _This Code of Conduct applies both within project spaces and in public > spaces when an individual is representing the project or its community. > Examples of representing a project or community include using an official > project e-mail address, posting via an official social media account, or > acting as an appointed representative at an online or offline event._

It's very specific. If you're representing the community, and you say something bigoted, then, yeah, that might be brought up. But that _should_ be the case. No project wants its representatives doing stuff that reflects badly on the project or which creates a bad culture in the project community.

Besides, it's also just not a very good idea to post bigoted things, both in terms of making a better society and culture, and in terms of just following the Golden Rule and being nice to other people.

<comment><USER6> Well sure its never a good idea to post bigoted things online but truth is even if the CoC wasn't meant to socially persecute individuals for what they do in their private time, it will most likely happen regardless.

This is the way of life for most now. If you say anything remotely offensive and it ends up online/traceable to you. You will loose your job and most, if not all other actual job possibilities.

Yes you may argue that one should never do that (and I certainly agree) however, everyone is human and we all make mistakes. So what happens when we as a society decide to totally condemn individuals for their mistakes without allowing them to learn from them in the first place? I would wager, probably something not so nice.

</comment></comment></comment></comment></comment></comment><comment><USER7> In the opener the author seems to generally agree that toning down ad hominem conduct is a good thing:

> _He 's stated that he'd tone down his language (no more calls to > "retroactively abort" people and such. This is all good, and I support it. > One of my greatest fears is having my patch/contrition to a FOSS project be > publicly dissected and ridiculed._

But his bullet point objections either contradict the above (transphobia should be acceptable), or are basically contentless (objecting to a part of the CoC that the author says doesn't apply to kernel dev).

Abbreviated summary of the bullet points on why the CoC is bad:

1\. The CoC's author objected to transphobia within the Opal compiler project

2\. The new CoC means Linus will need to tone down his language (which we seemed to be ok with in the opener).

3\. The new CoC doesn't allow discrimination. Discrimination has never been a problem in kernel dev (if you really believe that, then the CoC shouldn't change anything)

4\. The new CoC requires all maintainers to be of the same technical ability? (not sure where this idea came from, it doesn't require this)

<comment><USER8> > 1\. The CoC's author objected to transphobia within the Opal compiler > project

The mentioned transphobia was never in the Opal project, it was a comment made outside the project, by a member, which would be outside the scope of a such CoC.

For point 4, I think the problem for the author, was that a maintainer won't have the possibility to say a patch is bad to avoid discriminating on 'technical ability'

</comment></comment><comment><USER9> The choice of words in the title is the reason that Linus is taking a short break.

That post uses "SJW" as a slur for activists.

<comment><USER10> > That post uses "SJW" as a slur for activists.

No, it's fitting, "SJW" are slacktivists, not activists. When James Kyles throws a tantrum and insults people working for Palantir or Microsoft on Github issue pages, he might win a few internet points and likes on twitter, but he is not making a difference in the real world.

<comment><USER2> I still don't see how this links to Linux having a Code of Conduct. If there is never a problem with sexism/racism/harassment, you can simply ignore this text. If there is one, there needs to be no discussion about whether it is accepted or not.

I am against thought police, but Linux is about code. It is not hard to keep your thoughts about people to yourself and instead try to critique code in a fair fashion. It doesn't matter if a man, a woman, a dog in a costume or a billion monkeys on typewriters wrote the code. Bad code is bad, good code is good.

Anything that stops people from making it about people rather than code is also good IMO.

<comment><USER10> > Anything that stops people from making it about people rather than code is > also good IMO.

No, it doesn't, this Drupal story demonstrates that COC are useful to get rid of people one doesn't like because they somehow "hurt" somebody by doing something in their private life.

[https://www.inc.com/sonya-mann/drupal-larry-garfield- gor.htm...](https://www.inc.com/sonya-mann/drupal-larry-garfield-gor.html)

<comment><USER2> The CoC clearly speaks about harassment and not about personal lifestyle choices. If you keep your private life to yourself you should be fine.

Can a CoC be abused? Sure, if the community culture allows it. Does that possibility invalidate a CoC alltogether? Probably not.

A CoC will codify allowed behaviour which decreases the freedom for some forms of expression, most of which were destructive in nature and wasting everybodies time anyways. So in a certain sense you loose something, but you will also get something. Very talented persons who are to shy to use their ellbows all the time might be more willing to contribute etc.

IMO a ok tradeoff

</comment></comment></comment></comment></comment><comment><USER11> Totally unrelated, but I couldn't help notice that the OP shared an "old.reddit.com" URL. Glad to know it's not just me that hates the new Reddit UX.

<comment><USER12> TFA crashed my mobile browser, and you say the new is even worse?

An email to a mailing list would have been more appropriate on a few fronts. If not for the new CoC, I might express that differently. </sarcasm>

</comment></comment><comment><USER13> I am sure the chip corporations are going to be happier knowing they are going to get an easier ride to make their changes now.</comment>