Delaney Introduces Bill to End Gerrymandering, Reform Elections - <AUTHOR> https://delaney.house.gov/news/press-releases/delaney-introduces-bill-to-end-gerrymandering-reform-elections <comment><USER2> While it doesn't sound like a bad proposal and could probably get a strong majority of votes in some alternate dimension, the party in power will never allow this to make it to the floor of the House for a vote.[1]

The more cynical I become, the more I think the party in power doesn't actually want to solve any problems, they only want to focus on wedge issues to ensure they can use {rage, fear, some other emotion} to keep their party constituents engaged enough to vote but not enough to hold their feet to the fire on getting things done. Incumbents in Congress still have 95%+ re- election rates and in 2010 when those rates dipped, Congress was remarkably less productive than usual.

[1] [https://en.wikipedia.org/wiki/Hastert_Rule](https://en.wikipedia.org/wiki/Hastert_Rule)

<comment><USER3> > the party in power will never allow this to make it to the floor of the > House for a vote

The implication here is that the Democrats don't gerrymander. This is patently false. The Democrats are just pissed that the Republicans did a massively better job at it in the past decade.

In many ways, it was an arms race, and the Democrats chose not to focus on small and local districts and elections (instead, worrying about the "big picture"). As it turns out, politics trickles up, and small wins for Republicans eventually turned into big wins. To see a perfect exemplar of this, just look at Jon Ossoff's crushing loss last week.

There's an excellent NPR podcast about this very issue I listened to a few years ago.

<comment><USER4> > > > the party in power will never allow this to make it to the floor of the > House for a vote

> The implication here is that the Democrats don't gerrymander. This is > patently false.

I don't think that's really the implication. At the moment it is pretty clear that the GOP _currently_ _overall_ benefits more from gerrymandering [1]. And they _are_ in power, despite having lost the popular vote [2]. The GOP has control over the WH and both chambers, it'd therefore be political suicide to change the system now in a way that'd hurt them.

> The Democrats are just pissed that the Republicans did a massively better > job at it in the past decade.

They've obviously also gerrymandered, I fail to see what that has to do with OPs point? Are you really arguing that to be able to be against the concept of gerrymandering, you've to give up any chance of ever actually being able to do anything about it?

[1]: [https://www.apnews.com/fa6478e10cda4e9cbd75380e705bd380](https://www.apnews.com/fa6478e10cda4e9cbd75380e705bd380) [2]: [https://en.wikipedia.org/wiki/United_States_presidential_ele...](https://en.wikipedia.org/wiki/United_States_presidential_election,_2016)

<comment><USER3> > Are you really arguing that to be able to be against the concept of > gerrymandering, you've to give up any chance of ever actually being able to > do anything about it?

Not really. I'm arguing that most (in all honesty, probably all) gerrymandering complaints by Democrats are sour grapes because they got outplayed. In fact, Delaney himself was "first elected in a gerrymandered district created specifically for him," according to @mobilefriendly's linked sources.

Gerrymandering is generally not that big of a deal and cracking down on it doesn't solve much, as populations are naturally segmented[1]. I will say that sometimes, gerrymandering _is_ racially- or religiously-motivated (SCOTUS heard a case on this a few months ago IIRC), so it can be very problematic in a few edge cases.

[1] [https://www.washingtonpost.com/news/the- fix/wp/2016/12/01/ca...](https://www.washingtonpost.com/news/the- fix/wp/2016/12/01/californiajust-proved-that-redistricting-reform-isnt-all- its-cracked-up-to-be/?utm_term=.35637e4379e3)

<comment><USER5> > Gerrymandering is honestly not that big of a deal and cracking down on it > doesn't solve much, as populations are naturally segmented[1].

Please provide more evidence for this claim. Just because it's true in CA doesn't necessarily mean it's true for the rest of the country.

</comment></comment></comment></comment></comment><comment><USER6> This is hilarious because Delaney was first elected in a gerrymandered district created specifically for him, the state legislature literally looped in his house by two blocks.

[http://www.carrollcountytimes.com/cct-arc- acca0c6c-9aa4-5159...](http://www.carrollcountytimes.com/cct-arc- acca0c6c-9aa4-5159-b6ef-82eb618dd4a9-20120909-story.html)

[https://en.wikipedia.org/wiki/John_Delaney_(Maryland_politic...](https://en.wikipedia.org/wiki/John_Delaney_\(Maryland_politician\))

<comment><USER7> _Tu quoque_. [0] One of the most powerful fallacies in politics. Shuts down countless reform attempts. Loved by the corrupt.

[0] [https://en.wikipedia.org/wiki/Tu_quoque](https://en.wikipedia.org/wiki/Tu_quoque)

<comment><USER8> I'm not sure it's that effective these days. The American electorate just seems to expect that its leaders will be hypocrites and rewards them for it.

<comment><USER9> The world wouldn't run without at least a little hypocrisy. I don't think hypocrisy is inherently immoral. Some immoral actions are hypocritical, but some hypocritical actions are the right thing to do.

<comment><USER10> Can you give a concrete example where being an hypocrite would be the right thing to do?

<comment><USER11> Well, let's say I'm a doctor, I'm well convinced that smoking is quite harmful, but I find myself too addicted to manage to quit. Certainly, my nonetheless quitting is the best outcome. But telling people to quit despite not doing so myself is preferable to telling people not to quit, isn't it?

<comment><USER12> That is not a case of hypocrisy being the right thing, but rather the doctor doing the right thing _in spite_ of the hypocrisy, not due to it.

<comment><USER11> Sure, I don't think you can find a case where hypocrisy is the right thing to do _for the sake of hypocrisy_. That's not really an interesting observation when clearly no one places a positive first-order moral value on hypocrisy.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I'm not sure how this would end gerrymandering. Setting up a committee to handle districting doesn't solve anything.

If I remember correctly, didn't someone finally come up with an algorithm which evenly divides populations such that average distance from the average location of the district residents is minimized? A law which mandated use of that or a similar algorithm for district boundaries would actually help. Just moving the problem into committee obfuscates the problem.

<comment><USER14> > If I remember correctly, didn't someone finally come up with an algorithm > which evenly divides populations such that average distance from the average > location of the district residents is minimized?

I had a colleague (mathematician) who suggested presenting district-ers with a dramatically distorted map of the region to be districted in which neighbourhoods were unrecognisable, and all that could be seen was population density. One could gerrymander such a map all one pleased, but with (presumably) no better than random chance of thereby accruing a benefit, and random risk of suffering a detriment.

<comment><USER15> This reminds me of the simple way my brother and I used to split treats (cake, chocolate, etc) evenly and without fights. One of us would cut, and the other would choose a piece. That way, you could bet your behind that whoever was cutting would be as even as humanly possible.

</comment></comment></comment><comment><USER16> I'm reading a lot of resignation, and I feel it too. Why is it than when SOPA came out or when health care is on the line, people rally super hard, but when election reform is out, there's almost no effort? Why can't we get passionate about this too?

<comment><USER17> I think because there are relatively simple solutions to both the problems you mentioned

* SOPA - don't pass the bill.

* Health care - spend more, if necessary increase the deficit and we'll figure out the problem later through increased taxes or reduced spending elsewhere.

With electoral reform, it's hard to know what the right thing to do is. Everyone wants to stop gerrymandering but what's the alternative? An algorithm based on population and population density? That has its own set of issues. Heck, it's not straightforward even figuring out if a particular district has been gerrymandered or not. And in some cases, such gerrymandering is considered desirable - such as when it creates district where minorities are the majority.

When the problem is hard to define, hard to explain tangibly, hard to provide solutions for, it's no wonder that people don't get motivated to solve it.

<comment><USER18> There are pretty low-hanging fruit out there, though.

Approval voting or ranking are almost universally agreed to be better than what we have (in most places--some places do have that). That alone would make a huge change.

Independent districting commissions would be a big step forward.

Election day holidays would help.

Actually, a lot of the stuff in this proposed bill would help.

You're right that there's open questions out there, but it's not like there aren't solutions that are obvious first steps.

Re: healthcare, I think that's probably even more complicated than electoral reform. For example, missing from your example are cost-cutting measures, like requiring more transparency in pricing and charging, and deregulating certain things to increase competition.

</comment></comment></comment><comment><USER19> Better than open top-two primaries: ranked-choice voting.

Better than districting by committee: multi-member districts.

Election Day holiday: good, but throw in automatic voter registration.

[https://represent.us/](https://represent.us/) [http://fairvote.org](http://fairvote.org)

<comment><USER15> Multi-member districts are what we have in Spain. While in theory they increase the proportionality of the election results, the downside is that there is no clear representative for a district. To whom do I write to complain when my province has 7 seats in parliament? What if it has 30?

</comment></comment><comment><USER20> "Delaney also introduced the Open Our Democracy Act in the 113th and 114th Congress."

</comment><comment><USER21> As a Canadian, this doesn't affect me. But the bill seems refreshingly straightforward, and introduces several reforms that I would argue seem desperately needed in American elections.

Sadly, I also have very little hope that this will go anywhere.

<comment><USER22> Sadly, I believe that you're correct: the bill was also introduced in the previous two congressional sessions, where it presumably went nowhere.

</comment></comment><comment><USER23> This is my election district: [http://imgur.com/a/C1UmB](http://imgur.com/a/C1UmB). It's in the dictionary next to "illegal gerrymandering." The southwest lobe near D.C. is predominantly African American, while the northeast lobe near Annapolis is predominantly Caucasian. Though I can't figure out who is being disenfranchised.

<comment><USER24> Apparently Republicans.

[http://www.fairdistrictspa.com/updates/efficiency-gap- votes-...](http://www.fairdistrictspa.com/updates/efficiency-gap-votes-cast- vs-seats-won)

<comment><USER25> I don't know why this got downvoted. Maryland is infamously gerrymandered to the detriment of Republicans. Both parties abuse redistricting.

</comment></comment></comment><comment><USER26> I feel like most of these changes would require a constitutional amendment.

<comment><USER27> We don't just need a Constitutional amendment, we need a new Constitution.

People act like the Constitution we have came down from the heavens in a beam of light. But it was written by a bunch of guys who had never lived in a real democracy before. In fact it was written at a time when there pretty much hadn't been ANY democracies in the whole world for two thousand years. We've had two hundred years of experience and hundreds of iterations of the concept since then, so we have a much better idea of what will work and what won't.

It bothers me so much the passion for the Constitution people have. Yet, there is almost universal distain for Congress and the entire political establishment. Washington is entirely a function of the rules that are set by the Constitution. Electing different people isn't going to change anything. Ending Gerrymandering (if possible while using districts) would help, but it doesn't go far enough. You would still have a two party system. You would still be forced to choose between the lesser of two evils every time you go to the polls. And a large chunk of the country would always feel that they don't have someone in government representing them.

If we want people engaged in government, and to have a government engaged in them, then we need proportional representation in one form or another. Anything else is just a bandaid.

<comment><USER28> > We don't just need a Constitutional amendment, we need a new Constitution.

Uh you can achieve that via amendments. And just who is going to write this new Constitution?

> Washington is entirely a function of the rules that are set by the > Constitution.

And all of the Supreme Court precedents that have bent the hell out of the document such that it's hardly the same document that it was 200 years ago.

States _could_ , if they wanted to, implement proportional representation themselves without having to amend the Constitution. It obviously wouldn't mean that the entirety of Congress is proportional, but it'd be a start.

<comment><USER29> Seriously. The last Constitutional Convention was convened to amend the Articles of Confederation. It wrote a new system of government. If you don't like our elected leaders, understand that a constitutional convention means giving them, as a convention, absolute power to do anything.

<comment><USER30> Not really; if the convention proposes an amendment that isn't ratified by 3/4ths of states, things stay as they are. Even a constitutional convention has checks and balances. (Historically, states have used the threat of a convention to force congress to act on issues where they were dragging their feet.)

<comment><USER29> > _Even a constitutional convention has checks and balances_

Any checks passed before the convention are null and void when it starts. The checks find force in the constitution being nullified by the convention. Constitutional conventions are temporary autocracies. Established when needed, but never to be lightly considered.

</comment></comment></comment></comment></comment></comment><comment><USER31> How about something sensible -- take a census of which party each person supports and then you get proportionate representatives from each party above .15% of the population. Elections then just determine who gets the seats allocated to each party. That's roughly how it works in Germany. Poof -- suddenly there is no such thing as gerrymandering.

<comment><USER17> Does each voter have a particular representative they can express their opinion to? As I see it, calls from constituents is an influence on politicians because they know these are the people who they depend on. I don't know how it works in Germany so maybe there's a provision for this.

Also, the unintended consequence of such an electoral system is that it encourages extreme views, rather than moving towards the centre. Of course gerrymandered districts have the same effect, but centrism is worth striving for, I think. It ensures that a majority of people have a candidate who isn't far from their own views. You can see how proportional representation would help parties like the UKIP do far better than they otherwise would have, which is not necessarily in the best interests of the nation.

<comment><USER23> > You can see how proportional representation would help parties like the UKIP > do far better than they otherwise would have, which is not necessarily in > the best interests of the nation.

In the long run, what's in the best interests of the nation is for the government to fairly represent as much of the electorate as possible, not a fictional "middle ground."

<comment><USER17> I agree with you in principle. But I also think in this particular case the UK has benefited from the UKIPs absence from Parliament.

</comment></comment></comment></comment><comment><USER32> One solution to the problem might be to increase the number of representatives. The house was supposed to scale with the population. This was stopped in early 1900. It's a scaling problem. More people to vote for means less effective gerrymandering.

</comment><comment><USER27> The problem with a system that's easy to manipulate is that the benefitting/manipulating party doesn't like giving up their advantage.

<comment><USER33> Being easy to manipulate is already a problem

</comment></comment><comment><USER34> I'm political in outlook, sympathetic to the proposal, and like to see politics on HN as long as it has sort of hacker angle to it.

On the other hand, IMO this sort of story crosses the threshold into general politics, which in the long term degrades HN and hence doesn't really belong here.

</comment><comment><USER35> I know this is a digression but can somebody tell me what happened yesterday? Bear with me because I'm not much of a lawyer and I don't get a lot of time to do my original research so I just get it from TV.

I'm flabbergasted that the SC was 9-0 in their decision. I guess I just don't understand. I thought the lower courts had applied the ban unanimously and it was made in accordance with the law. Is there a way to challenge yesterday's decision further?

</comment><comment><USER36> Expect this to become a much bigger issue leading up to the redistricting that comes after the 2020 census.

</comment><comment><USER37> Will this help reducing de-facto duopoly of incumbent parties?

</comment><comment><USER38> TERM LIMITS

</comment><comment><USER39> Surely guaranteed to go nowhere.

<comment><USER36> Solid start though. Even if the redistricting measure was dropped, a federal holiday for election day and top-two primaries would clear out a lot of the clogs in our election systems. I'm not sure the top-two measure is constitutional though.

<comment><USER39> Oh I agree that it's a good start and gerrymandering is bad, but can you honestly imagine this type of bill passing in this political environment? Congress has a, what, 12% approval rating?

<comment><USER36> I think it's being presented in the hope that a future Congress will run with it. Or that his constituents will appreciate his ideas. It is beyond this Congress to fix the system they've brazenly manipulated for their own benefit.

</comment></comment></comment></comment><comment><USER40> We have gerrymandering at every level, but first with the States. Why does Wyoming have two Senators and California have two Senators? We have 12% of the population of the US. Wyoming has 0.18%, smaller than DC. Of course, this continues with the House and the Electoral College. Et cetera.

However, there is no incentive for Wyoming and ND and Alaska and ... to fix this.

No Taxation Without Representation? Sure, but that doesn't mean the representation has to be fair.

<comment><USER41> This is going downvoted to oblivion but I think it's a fair point. The Senate / House divide made a lot of sense for 13 colonies, which were kind of like separate entities, but doesn't make as much sense now. For example, why are North Dakota and South Dakota separate states? If they were merged, and became just Dakota, would anyone notice? Why should they get double representation in the Senate vs. California? If anything, having North and South California makes more sense.

I think the system is outdated today. Of course, hell will freeze over before it is reformed in a fair way.

<comment><USER42> > For example, why are North Dakota and South Dakota separate states?

Because the Republicans at the time wanted 2 states that would vote Republican.

> If they were merged, and became just Dakota, would anyone notice?

Yes, as someone from North Dakota, you're being rather stupendously ignorant of the midwest and the differences between North and South Dakota.

> Why should they get double representation in the Senate vs. California?

Because the Senate is about state representation. The house is for proportional representation. This is basic civics 101 you learn in High School.

> If anything, having North and South California makes more sense.

You're not the first to propose it, feel free to join these people [https://en.wikipedia.org/wiki/Jefferson_(proposed_Pacific_st...](https://en.wikipedia.org/wiki/Jefferson_\(proposed_Pacific_state\))

<comment><USER41> This seems like a bit of a troll?

You haven't given any substantial reason for why North/South Dakota makes sense, while North/South California doesn't, except that "Republicans... wanted 2 states that would vote Republican", which obviously is not a legit reason. If it were, we would split North Dakota into 100 Dakota's so that it would give 200 Republican votes in the senate.

Also:

> Yes, as someone from North Dakota, you're being rather stupendously ignorant > of the midwest and the differences between North and South Dakota.

And North and South California are massively different, yet lo-and-behold they are the same state. Even more different is central vs. costal California.

<comment><USER42> > This seems like a bit of a troll?

Umm, no, thats the accepted reason why the territory was split in two instead of becoming a state outright.

From Wikipedia [https://en.wikipedia.org/wiki/Dakota_Territory](https://en.wikipedia.org/wiki/Dakota_Territory) because apparently one must link history or be called a troll.

> Admission of new western states was a party political battleground with each > party looking at how the proposed new states were likely to vote. At the > beginning of 1888, the Democrats under president Grover Cleveland proposed > that the four territories of Montana, New Mexico, Dakota and Washington > should be admitted together. The first two were expected to vote Democratic > and the latter two were expected to vote Republican so this was seen as a > compromise acceptable to both parties. However, the Republicans won > majorities in Congress and the Senate later that year. To head off the > possibility that Congress might only admit Republican territories to > statehood, the Democrats agreed to a less favorable deal in which Dakota was > divided in two and New Mexico was left out altogether. Cleveland signed it > into law on February 22, 1889 and the territories could become states in > nine months time after that. However, incoming Republican president Benjamin > Harrison had a problem with South Dakota; most of the territory was Sioux > reservation land and the state would not be viable unless much of this land > became available to settlers

> And North and South California are massively different, yet lo-and-behold > they are the same state.

Yet they're the same state today, and North and South Dakota are not. Are you proposing we merge these lesser states together and allow California to be the one state to have separations due primarily to population? Just so that it is more "fair" for Californian Senate inputs? The reason for the senate being 2 per state was to allow each state equal voting ability amongst states so that populated states couldn't easily override less populated states.

<comment><USER41> > Are you proposing we merge these lesser states together and allow California > to be the one state to have separations due primarily to population?

You're ignoring my overall point. The concept of "states" doesn't make sense in the way it did when the country was formed. The 13 colonies were actually separate states, with separate governments and economies that agreed to join together to form a single state/country.

However, as you pointed out, the process of creating states became political. An example (as you showed) North/South Dakota were split for political reasons, to achieve a certain voting outcome. The criteria being used to separate them is a political one, not something based on separate economic structures, or separate governments, or some other notion of what a "state" is.

This shows that the notion of a "state" has changed since the late 1700's. Some current "states" are the result of political calculations, where as the original 13 states were separate entities in some other sense.

> Are you proposing we merge these lesser states together and allow California > to be the one state to have separations due primarily to population?

I'm saying the entire concept of a "Senate" with 2 reps for each "state" doesn't make sense today. It's an outdated concept from a different reality.

The Senate does have other useful properties, of course, but the current division of states doesn't make sense.

</comment></comment></comment></comment></comment></comment><comment><USER43> Current US law requires racial gerrymandering to ensure blacks are able to elect black congressmen. This bill does not obviate that requirement.

[https://www.washingtonpost.com/news/wonk/wp/2016/06/09/how-a...](https://www.washingtonpost.com/news/wonk/wp/2016/06/09/how- a-widespread-practice-to-politically-empower-african-americans-might-actually- harm-them/?utm_term=.68d70f6094f4)

<comment><USER44> Your article it out of date. Racial gerrymandering is the one kind of gerrymandering that is not allowed according to the supreme court[0]. Representatives will go out of their way to argue that their gerrymandering is purely partisan because that's totally legal – for now.

[0] [http://www.motherjones.com/politics/2017/05/supreme-court- no...](http://www.motherjones.com/politics/2017/05/supreme-court-north- carolina-racial-gerrymander-case-voting-rights/)

<comment><USER43> That is incorrect. The Supreme Court's decision is with respect to "overconcentration" of blacks, in a context where, when divided, they were able to elect their preferred candidates. Their guiding principle is still that blacks must be neither diluted enough to make their votes irrelevant in "their own" areas, nor concentrated enough to make their votes irrelevant outside - as the dissent notes, this itself amounts to a racial gerrymander (you don't get to club yourself in the head when drawing district lines and "forget" that certain areas are heavy in both blacks and democrats). They did not overrule Gingles, they cite the state's action as contravening it.

Unsurprisingly their jurisprudence on this is a shitshow as they try to square this circle while pretending like it is some sort of neutral antidiscrimination provision while also attempting to secure a minimum threshold of black political power.</comment></comment></comment>


I left Android for iOS and instantly regretted it - <AUTHOR> https://medium.com/@ernopp/i-left-android-for-ios-and-instantly-regretted-it-dc2fd347ad46

<comment><USER2> No need to suffer -- Apple lets you return your hardware in 14 days. You can trivially switch back.</comment>


Boeing Brags About Size of Its Rocket, Says SpaceX's Is Too Small for NASA - <AUTHOR> https://gizmodo.com/boeing-brags-about-size-of-its-rocket-says-spacexs-is-1825677838/amp?__twitter_impression=true <comment><USER2> Technique is much more important than size.</comment>


Ask HN: Home finances app - <AUTHOR> I'm looking for some good solution to looking after the home budget. I've checked a few apps and web services already and they all seem to be... pretty terrible :-( The are only a few features I require:
- ofx / qif import
- recognising transfers between own accounts and cards (transfer is not an income+expense)
- categories (with some guessing about classification, or rules) + monthly report
- ability to mark a card transaction as 50%, or 100% owned by another person, so I can share a credit card and know who owes what this month
- Does not require sharing your bank account password (looking at you, pocket)
Money manager ex doesn't do automatic classification, skrooge is weird about transfer if I import both source and destination account, gnucash is... really complex.
I'm still using a spreadsheet for this and it kind of works, but I'd really like a better solution. <comment><USER2> You Need A Budget (YNAB) is the one I've usually seen recommended on personal finance forums. But i think their latest version switched to a subscription service.

<comment><AUTHOR> Thanks, I'll check it out. Don't mind paying if it works well.</comment></comment>


Uber's Board to Discuss Leave of Absence for Travis Kalanick - <AUTHOR> https://www.nytimes.com/2017/06/11/technology/uber-holder-report.html?_r=0 <comment><USER2> Dup of [https://news.ycombinator.com/item?id=14532641](https://news.ycombinator.com/item?id=14532641)</comment>


The First Ever Smartphone 3D Printer - <AUTHOR> https://www.kickstarter.com/projects/olo3d/olo-the-first-ever-smartphone-3d-printer <comment><USER2> This looks pretty neat - it's a clever idea to do a resin-based 3d printing system and use a smartphone as the light source for hardening the resin.

That said, the resin does not look cheap at all. At kickstarter levels, it's around $15 for 100ml of fluid. But still, a pretty cool idea.</comment>


How to be a star worker - <AUTHOR> https://www.linkedin.com/pulse/how-star-worker-jeremy-seeff?trk=mp-author-card

<comment><AUTHOR> A few thoughts of mine on how to excel in the work place... what do you guys think? Anything to add or change?</comment>


Google Wins Appeals Court Approval of Book-Scanning Project - <AUTHOR> http://www.bloomberg.com/news/articles/2015-10-16/google-wins-appeals-court-approval-of-book-scanning-project-iftpwxl3 <comment><USER2> As a former librarian I say YES!

The typical librarian actually doesn't fight for the access of materials but fights to enforce copy right stricter than the copy right law even calls for. At my college I took down the sign that said "No Copying of Books" at the photo copier and I put in place the actual copy right law. I can't tell you how many visiting librarians were "shocked" I did that. Well we also allowed bottles of water and talking in all areas except the study rooms and areas that had doors, but that is another story.

<comment><USER3> This is awesome. I can remember clearly, in junior high school, the librarian informing us that we were only allowed to copy six pages of a book for homework assignments. I don't really have a strong opinion on much of this (one way or the other), because I'm not well enough informed on the topic, but I remember feeling weird about it, becaus the library aid made us feel like criminals for wanting to copy more than 6 pages. The library at that particular school was pretty substandard anyway.

I'm not so sure I won't be aging myself by saying this, but I feel very nostalgic about libraries, and the thought of them becoming obsolete saddens me, not so much because I can't imagine a future with mostly digital books, but because I always felt at home at the library (and not in the "there's a man sleeping under the 600s shelf" sort of way). I always felt a sort of wonderment at the library, and that others were there for the same reason added to that. I didn't visit the public library for school reasons, typically. Instead, I just sort of explored. I have always been a slow reader, so finding the exact right thing to read next was a bigger deal for me than just reading book after book.

I also volunteered as library aid in 12th grade, which was fun.

Are there others that feel / felt the same about libraries?

<comment><USER4> Yeah, we were only allowed to use the first 30 seconds of songs in school projects. Presumably that rumor started because of iTunes (which is crazy of course because iTunes obviously negotiates extra rights that you and I don't have). Meanwhile we just had to cite where entire photos came from! I think it was just the recency of the music piracy issues that made them care.

<comment><USER5> > Yeah, we were only allowed to use the first 30 seconds of songs in school > projects. Presumably that rumor started because of iTunes

More likely, it was a rule adopted because fair use analysis is generally helped by using a limited portion of the copyrighted work, and organizations concerned with liability don't really want everyone independently trying to figure out how limited a portion is limited, so they like to set some standard that is likely to be limited enough in most real cases of the type they are likely to be exposed to (e.g., nonprofitable educational uses, for school projects) as to mitigate risk sufficiently.

> Meanwhile we just had to cite where entire photos came from! I think it was > just the recency of the music piracy issues that made them care.

That's actually perfectly sensible -- the demonstrated propensity of interested parties to file a lawsuit, and the likely damages in the case a suit is lost, are perfectly rational factors to consider when determining how to craft a legal risk mitigation policy.

<comment><USER6> In general photo content owners are as litigious as music ones.

</comment></comment></comment></comment></comment><comment><USER7> It's good that this news report includes a citation to the case decision at the end of the article. That citation is

Authors Guild v. Google Inc., 13-4829, U.S. Court of Appeals for the Second Circuit (Manhattan)

The ruling applies, of course, only to the United States, and only if it is not reversed by the United States Supreme Court. But I think the argument that Google's use of the book content is not market-destroying for book authors is correct, as I have bought books after discovering them through Google Books searches.

<comment><USER8> It has to be that these sorts of lawsuits are supported by a small minority of authors, right? It's crazy. Who has _ever_ planned to buy a book and thought "hey, I'll just use the Google Book Search to read through it"? I've never heard of 99% of the books that turn up on these searches, and I have ended up buying at least 2 or 3 of them.

<comment><USER9> Yesterday I downloaded a sample of "Ball Four" (one of the books mentioned in the article) from Amazon. No doubt Amazon has permission to do such a thing, but it is pretty odd for some authors to be worried about one type of sampling and not another kind.

</comment></comment></comment><comment><USER10> Surprised to read about the perceptions of and experiences with (mostly pre- university school) librarians here.

As a new academic librarian and recent graduate of UIUC's iSchool (top library school in the country[0] and an active hub of computer science), my experience is that the strict and shushing librarian is, mostly, as you all are _recalling_ , a _thing of the past_. Libraries are more and more about collaboration, computing, and guidance. Kitchens more than grocery stores. Librarians are more and more facilitators, teachers, and collaborators. The open access movement has a very strong base in libraries.

[0] [http://grad-schools.usnews.rankingsandreviews.com/best- gradu...](http://grad-schools.usnews.rankingsandreviews.com/best-graduate- schools/top-library-information-science-programs/library-information-science- rankings)

</comment><comment><USER11> Ok this is pretty cool, I've been waiting for the 2nd Circuit to decide this. Now to see if the Supreme Court will take it up.

I believe that this would also clear up a service that scans your books and sends you the digitized version. That would seem to be fair use of my own library as well. I spent about $1200 getting roughly a 1/3 of the volumes I've collected over the years digitized at 600 DPI so that I could have them all available on my iPad for reference.

<comment><USER12> May I ask where you scanned your books? I've used 1dollarscan.com before for some book scans, which worked pretty well.

<comment><USER11> 1dollarscan for most of them. There was a short lived outfit in Sunnyvale that did some before a lawyer came by and presented a cease and desist.

I've also acquired a nice guillotine paper cutter and a Fujitsu ScanSnap 1500 and have probably scanned 40 or 50 "trade" paperbacks with it, 6 years of Scientific American, several years of Air & Space, Nature: Materials, and assorted other magazines.

<comment><USER13> 1dollarscan doesn't seem that good to me, what am I missing? It's $2 per 100 pages if you want OCR, and even then it's not clear what output format they're delivering -- it sounds like it's still a PDF? The entire point of eBooks to me is that you end up with actual text, not just scans. And $8 per average length novel seems like a lot just to chop a book in half, throw it through an auto-feed scanner, and run an OCR program.

<comment><USER11> When I started scanning my library I signed up for the "platinum" program which is $100 for 100 sets (basically 10,000 pages) with most of the enrichments turned on (OCR, etc) I paid the $1/set uplift for 600 dpi for technical documents with complex diagrams and occasionally I opted for color scans for some things.

For a textbook style book "chopping it in half and throwing it in a scanner" is a bit more work than the sentence would suggest. The most cost effective scanner for this is the Scansnap 1500 as it will scan both sides of a page, has a 100 sheet "feeder", and will OCR the text (using ABBYY which is included). It screws up occasionally and especially on magazines which are very thin / shiny paper it can take a while (and several rescans) to get the magazine scanned. So in general there is a pretty solid time advantage to using 1dollarscan. Especially if you can use your nights and weekends productively doing something else.

That said, once I didn't have another stack of 10,000 pages to go at the end of the month (I had scanned all the "obvious" targets, minus the McGraw-Hill books which they won't scan) I did switch over to manual mode with my scanner because while the total cost of the cutter and scanner was close to $2,000 (not quite 2 years worth of 1dollar scan services) it is a capability that can sit idle without too much cost.

<comment><USER13> Do you share your scans (ignoring legality here), or are they all strictly personal?

<comment><USER11> No, I don't share them. The goal was to have my library be portable, and to a lesser extent more easily moved/preserved. These days I try to buy my reference books in a portable electronic form whenever possible.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> I think it's important to mention that Google only returns 'snippets' of the text. The entire book is searchable and indexed but Google book-scanning project prevents use to read the entire book. The court ruled this is fair use since it enables the searcher to find out if the searched book has substantial information regarding their research/searching.

<comment><USER15> One could wonder if the same rule would apply to music.

Would it be okay to have 30 seconds of any song available free online, just so that you could search for a lyrics of the song you heard on the radio, and then match it with 30 sec audio clip to find out whether the song is the one you were looking for.

<comment><USER14> 30 second clips (which would be about 14% of most songs) wouldn't be the equivalent. Since google is only providing less than a handful of pages in a ~300 page book (1%).

</comment></comment></comment><comment><USER16> There's nothing wrong with the linked Bloomberg article, but it's a little barebones and link-free. Here are two others with a little more background and commentary:

[https://www.techdirt.com/articles/20151016/08010632559/appea...](https://www.techdirt.com/articles/20151016/08010632559/appeals- court-explains-yet-again-to-authors-guild-that-googles-book-scanning-is-fair- use.shtml)

[http://arstechnica.com/tech-policy/2015/10/appeals-court- rul...](http://arstechnica.com/tech-policy/2015/10/appeals-court-rules-that- google-book-scanning-is-fair-use/)

And the Court's actual written opinion:

[http://www.ca2.uscourts.gov/decisions/isysquery/c3458e0a-f3d...](http://www.ca2.uscourts.gov/decisions/isysquery/c3458e0a-f3d2-492f-a8b3-6e1121cd5cff/1/doc/13-4829_opn.pdf)

</comment><comment><USER17> This is a great win for fair-use, and matches Google's original rationalization for why their scanning was justified.

Note, though, that Google in the middle years of this dispute sought to acquiesce to a class-action settlement with the Author's Guild. That would have more-or-less abandoned the (strong and ultimately successful) fair-use argument, and set up a system where Google and the Author's Guild were economically aligned, with a precedent against other (less deep-pocketed) groups who might want to make a similar fair-use argument in the future.

Third parties including the American Libraries Association, EFF, and ACLU objected to the potential negative effects on competition, privacy, and free- speech of that proposed settlement, which helped prevent it from being accepted by the courts. That forced Google to fall back to its original defense, and led to this broader win for fair-use principles. For more details, see:

[https://en.wikipedia.org/wiki/Google_Book_Search_Settlement_...](https://en.wikipedia.org/wiki/Google_Book_Search_Settlement_Agreement)

<comment><USER18> Reading the article, I do not see how rejecting the settlement between Google and the Authors' Guild improved the situation vis-à-vis censorship and privacy. I also do not see how approving the settlmenet would have prevented others from reaching a similar arrangement with the Authors' Guild, since Google was not granted exclusive rights. Nor do I see how the settlement would have threatened fair use: it would only have released Google from the burden of continuing to fight on behalf of fair use in this case, not that someone else could not have taken up the fair use argument.

Practically, the result of rejecting the settlement seems to have been a slowdown in the pace of digitization, and that readers are left with still no way to easily access orphaned works.

<comment><USER17> With a finalized class settlement, Google would have stopped fighting for fair-use rights, and entered into a moneymaking partnership with the Authors' Guild with a unique right – established by the expansive class including all authors not yet even identified – to scan and even market books, and be immune from further lawsuits from the class.

Anyone with shallower-pockets that then tried to do what Google did would likely have been sued by Authors' Guild – now strengthened by Google cash – or other members of the class. There was no precedent or requirement that others be offered the same deal as Google: if Authors' Guild liked their deal with Google (and why wouldn't they), they could tell others, sorry, we've already got a system in place, you're not part of it.

But further, why should other 'little guys' have had to fight a legal battle with Authors' Guild, or negotiate under threat of litigation by a de facto Authors' Guild-Google alliance, just to do something that (now, finally) is clearly authorized by fair-use?

The class settlement's Google-financed-and-managed system, for the benefit of the Authors' Guild class, would have started with an overwhelming and likely legally and economically insurmountable advantage in the scanning and marketing of older books. That gave rise to the centralization and privacy/censorship concerns of the ACLU, EFF, and American Libraries Association. They're smart and like old books, too – but perceived a risk that outweighed the benefit of "just scan 'em all quickly – under a Google/Authors' Guild monopoly".

<comment><USER18> Dragooning Google into the fight to defend fair-use may be a smart tactical move for the EFF, but that should not impinge on the objective question of whether the Google Books settlement was legal. The privacy and censorship concerns they raised seem orthogonal to the settlement itself, as the concerns would remain whether the settlement was accepted or (as was the case) rejected (e.g. Amazon removing Kindle books from users' libraries).

Why wouldn't the Authors' Guild be willing to offer others the same terms? How would it benefit them to depend on Google? The agreement would have granted a new sort of status to Google, but there is no reason that status would have to remain unique.

Regarding the anti-trust angle, the wiki article cites an MIT paper that concludes the settlement would not violate anti-trust and would in fact generate a consumer surplus. [1]

Forcing Google to fight for fair-use may have been a sound Machiavellian strategy for the EFF (as it resulted in today's ruling), but it's ironic then that the main reason why the settlement was rejected seems to be because it was not strong _enough_ on copyright, as expressed by individual authors' concerns over loss of control, and freeing of orphan works.

[1]: [http://www.criterioneconomics.com/Google%20and%20the%20Prope...](http://www.criterioneconomics.com/Google%20and%20the%20Proper%20Antitrust%20Scrutiny%20of%20Orphan%20Books.pdf)

</comment></comment></comment></comment><comment><USER19> It's great that this may soon be resolved once and for all -- assuming the Supreme Court doesn't put the brakes on -- but it's nightmarish that it has been dragging on since, literally, 2005. We've got to find some way to speed the legal system up; that might make it so you don't have to be Google to win an important case, too.

</comment><comment><USER20> I wasn't able to find much info on the current status of these efforts. Has Google (and their university/library partners) continued over the last ten years? I was under the impression that Google had suspended scanning years ago - partly due to this lawsuit and partly due to a change in company focus.

</comment><comment><USER21> The court's opinion is available here: [https://www.unitedstatescourts.org/federal/ca2/13-4829/230-0...](https://www.unitedstatescourts.org/federal/ca2/13-4829/230-0.html)

</comment><comment><USER22> I'm not sure that I agree with this ruling.

Although Google says that they're using it for one specific purpose, I can imagine that they'll use it for other things like improving their search and ad technologies. If that's the case, then wouldn't Google's work be considered derivative of the original content?

Why should the authors involved not be able to re-sell those digitalized versions to other companies (especially other search engines)? There are probably lots of companies that would like that data set and be willing to pay for the use of it (including me).

<comment><USER23> It's also possible that someone who reads a book might learn something from it and go on to make a lot of money based on what they learned, without compensating the author. Should this be different for machine learning?

<comment><USER24> Textbook authors hate them!

</comment></comment></comment><comment><USER25> Unless works under copyright are fortunate enough to be picked up as educational material/insanely popular, they usually vanish. Scanning helps with discovery and recovery. The gap in our cultural heritage is huge[1]

[1] [https://www.techdirt.com/articles/20140114/10565225874/copyr...](https://www.techdirt.com/articles/20140114/10565225874/copyright- week-our-lost-culture-what-we-lose-having-killed-public-domain.shtml)

</comment><comment><USER26> From what I hear (IANAL) fair use doesn't trump DRM anti-circumvention laws. It would therefore seem that this ruling creates _even more_ incentive for publishers to drop non-DRM'd formats.

If true, I'd count this decision as a net negative. (Sorry Google, your balance sheet means nothing to me.)

</comment><comment><USER15> > Judge Denny Chin ruled in November 2013 that Google Books provides a public > benefit and doesn't harm authors.

I'm interested what kind of evidence played a role here. How does the judge determine it didn't harm authors, other than using a time machine?

</comment><comment><USER27> I would love it if the publishers and google figured out a proper way to pay to read books that were still under copyright. I'd love to get rid of all my bookshelves knowing that if I wanted access to a particular book I could pay a few dollars and get it.

<comment><USER28> Why don't you pay one of the several startups doing book-scanning services?

<comment><USER27> I didn't even know there were any! I will take a look.

</comment></comment></comment><comment><USER29> Now we can run a search engine that just returns Google results since the top 10 results are just a small portion of the total results.

<comment><USER30> Google Search results are not a creative work protected by copyright.

</comment></comment><comment><USER31> I hope this is not too off-topic but since we are talking about book-scanning, how would I go about scanning my own books for private use?

For instance, if I have a bunch of books about drawing, I'd like to scan them all so that I later group all of the figure drawing pages in one folder, all the gesture drawing pages on another, etc, so they can be more easily used (and more useful) as reference.

Does anyone here recommend a way to scan books at home? I'm not against buying a contraption.

<comment><USER32> Google developed a system called the "cheese grater" and open-sourced the plans / design:

[https://www.youtube.com/watch?v=4JuoOaL11bw](https://www.youtube.com/watch?v=4JuoOaL11bw) [https://www.youtube.com/watch?v=3lLL0mUZHwU](https://www.youtube.com/watch?v=3lLL0mUZHwU) [https://code.google.com/p/linear-book- scanner/](https://code.google.com/p/linear-book-scanner/) [http://linearbookscanner.org/](http://linearbookscanner.org/)

</comment></comment><comment><USER33> Since when does the right of the owner shift to the consumer with respect to artistic creation? This sets off all kinds of red flags on all things created. The view is narrow, and lacks a broader view on the scope of artists in particular - namely photographers!

<comment><USER34> By "owner" are you trying to mean "copyright holder"? and by "consumer" I'll assume you mean "not the copyright holder or licensee".

If yes, then ever since copyright law was enacted. It's called fair use and the public domain. Also note not all artistic creation is actually copyrightable.

</comment></comment><comment><USER35> >Google has scanned more than 20 million books since 2004 without the permission of the authors.

I am blown away how this is ruled legal, but in many cases scanning books as an individual is considered copyright infringement. As though they don't reap financial benefit from expanding the scope of the data they control? It's their entire business model...

<comment><USER36> Scanning books almost certainly is not copyright infringement. Tons of people do it. What you do with the scans afterwards matters more.

<comment><USER16> _Scanning books almost certainly is not copyright infringement._

At least in the US, you are overstating the certainty. While I agree with you that it should not be infringement, prior to this ruling, the legal status of scanning books you own for personal use was not clear.

The qualified expert opinion I got regarding personal scanning was from a law school professor specializing in copyright (and who actually participated this case), and was along the lines of "it's probably legal but there is not yet settled case law".

This ruling probably moves it closer to settled, but I'd be suggest against placing large bets unless your qualifications exceed hers.

<comment><USER36> Interesting and surprising given that companies exist that offer it as a service, but I stand corrected.

<comment><USER16> They exist, but are well aware of the risks. And sometimes they find it wise not to test the legal boundaries:

      Any book you cannot scan?

      Unfortunately, WE CANNOT SCAN ANY PUBLICATION BY McGraw
      Hill. They do not allow us to scan their publications. When
      we receive any publication by McGraw Hill from customers,
      we will return it back by charging actual postage fee."

[http://1dollarscan.com/faq.php#8a](http://1dollarscan.com/faq.php#8a)

<comment><USER37> Good to know (/me makes note to avoid purchasing anything by McGraw Hill in the future).</comment></comment></comment></comment></comment></comment>


Tom Preston-Werner Uses This - <AUTHOR> http://tom.preston-werner.usesthis.com/ <comment><USER2> This is not particularly interesting. He uses typical software and hardware. Nothing esoteric, interesting, or insightful here. Just a guy using a Mac getting some work done.

<comment><USER3> It is interesting but there is very simple lesson to learn: terminal and decent editor is all you need. I know a lot of people who are still afraid of terminal (they can't live without TortoiseWhatever and are not familiar with basic terminal commands) and can't live without fancy development environments (like Visual Studio) after years of development. Even more - terminal + editor allows developer to switch between platforms almost without problem (e.g. my usual week consists of developing completely different projects for Windows, Mac OS X and Linux).

After all David killed Goliath with sling. What's wrong with the fact that magic things happens with dumb tools?

<comment><USER4> "[A] [T]erminal and decent editor is all you need."

Just to give the other side of the "argument": "all you need" isn't something to strive for. An environment which makes you the most productive is what most people strive for, not the minimum environment to be somewhat productive. IDEs make a lot of people a _whole lot_ faster, and for good reason - smart people have worked really hard to make it that way.

(I mostly use editors and not IDEs these days, but the allure of good IDEs is strong.)

<comment><USER5> Yup. After writing Java for Android in IDEA 10 CE for a few months I die a little inside every time I want to rename a function in C or JavaScript in TextMate. I should check if anyone has used js2-mode to write some refactoring functions for JavaScript in Emacs.

What good cross-platform IDEs do people use for C and JavaScript?

</comment></comment></comment></comment><comment><USER6> The only really interesting article on this page so far was the Andrew Huang's one:

<http://andrew.huang.usesthis.com/>

90% of the articles are almost the same - some kind of Macbook, software everyone knows about, "I wish it was lighter and had more battery life" etc. I think it's the format that makes this uninteresting. Probably a lot of those people do in fact use interesting little hacks, configure their software in an unusual way or have a nice looking workspace. But there isn't even a photo of the workspace attached to the article or a bunch of screenshots while people are doing some work. A vidcast or screencast would perhaps be a better medium than an article for doing this, like in the recent "play by play" peepcode screencasts (not an advertisement, they're better, but I didn't found them worth the price so far).

<comment><USER7> The two that I've found to be most interesting is rms's:

<http://richard.stallman.usesthis.com/> (think: _everything_ \- including his laptop - he uses is open source)

and _why's: <http://why.usesthis.com/>

<comment><USER8> I found Russ Cox's interview and setup also pretty original and informative: <http://russ.cox.usesthis.com/>

</comment></comment></comment><comment><USER9>
      At one focus is suspended a huge, omnidirectional, ten thousand Watt speaker
      system. At the other focus lies an elaborate, 21 screen wrap-around display
      connected to a Mac Pro cluster. In this dream, I am seated in a comfortable
      recline at the computer station while thundering trance emanates from the
      sound system and is parabolically focused upon my exact location.

Ah, so basically the traditional "Grandma's Boy" setup[0]. Yes, I think a lot of us share that dream. The more monitors, the better.

[http://www.youtube.com/watch?v=bHLR3faI7lU&t=00m06s](http://www.youtube.com/watch?v=bHLR3faI7lU&t=00m06s)

<comment><USER10> You know, I've never seen that movie. I suppose the techno-blasting isolation room with tons of monitors is some kind of archetype, to be stumbled upon time and time again by coders throughout the ages.

</comment></comment><comment><USER11> He should try <http://www.iterm2.com/> instead of Terminal.

<comment><USER12> iTerm2 has some truly amazing features that blow most other terminals out of the water: Full screen hotkey, global hide and show hotkey, better search, better history, and multiple sessions in horizontal and vertical splits is amazing.

Even the little feature like being able to hide the scroll bars for an extra few columns, or having growl notification of output when the app is in the background have made a huge difference in my productivity.

<comment><USER13> How do you find it speed wise? Last time I used it, it was struggling with full screen ncurses apps, but that was probably two years ago now.

<comment> ryan-allen If you haven't seen it in 2 years you'd be very surprised. Another developer took over it's development and has done a great job whacking it into shape. I use it instead of Terminal.app now and don't find it lacking.

</comment></comment></comment></comment><comment><USER14> A more interesting article by Tom Preston-Werner: [http://tom.preston- werner.com/2008/10/18/how-i-turned-down-3...](http://tom.preston- werner.com/2008/10/18/how-i-turned-down-300k.html)

<comment><USER15> That was a great post. Also love this clip of him on "The Road from Ruby Hacker to Entrepreneur" - [http://confreaks.net/videos/432-rubyconf2010-the- road-from-r...](http://confreaks.net/videos/432-rubyconf2010-the-road-from- ruby-hacker-to-entrepreneur)

</comment></comment><comment><USER16> His dream setup reminds me of Grandma's boy & Swordfish.

</comment><comment><USER17>
      I use TextMate for writing code, and it does most of what I need,
      but the allure of emacs is strong and I think that one day I will
      take the time to learn it and harness its power, but for now, I'm
      a TextMate man, and it treats me pretty well.

Oh how I love my father for teaching me the dark arts of emacs when I was 12.

<comment><USER10> I've actually started using Vim since I wrote this post, and it's treating me nicely. I still use TextMate for a lot of things, but as I become more familiar with Vim, I find myself there more and more. It feels much more natural to me than Emacs.

<comment><USER4> I'm sure a lot of people here would love a follow-up post about your Vim setup.

<comment><USER18> Check out some of Gary Bernhardt's videos (also a play by play on Peepcode).

I stole a whole lot of things from his VIM setup (red/green bar for test runs in VIM just rocks).

</comment></comment></comment></comment><comment><USER19> whats with all the guys going laptop only these days ? thats an ergonomic nightmare and i am so much more productive with 2 screens.

<comment><USER20> Two screens anchors you in one place. Some of us value the flexibility of being able to go work out of a coffee shop whenever we damn well please.

To add to that, I personally get no benefit from extra screens; maybe it takes a certain type of brain, but I'm able to visualize everything in my head very easily to the point where I can not be looking at a screen of text but still recall it all just fine. Having windows crammed onto a screen just isn't an issue for some of us. :)

<comment><USER21> The link between screen resolution and productivity is well established:

[http://www.newscientist.com/blog/technology/2008/03/screen-s...](http://www.newscientist.com/blog/technology/2008/03/screen- size-matters.html)

I have two screens sitting on my desk at home with bluetooth keyboard. Plug it in when I am at home with bluetooth keyboard, and laptop when I am away (although I usually always take my external mouse with me)

<comment><USER20> Perhaps that works for some people, but others (like myself) still differ. To each their own. :)

<comment><USER21> I can see what you mean. I do ok on the laptop alone, since you only need 80 columns of width. You end up just paging up and down a bit more

And Spaces and/or virtualterminals are a dream

</comment></comment></comment></comment></comment><comment><USER22> I envy that macbook pro configuration :) Do you guys know of any MailPlane alternatives to manage multiple gmail accounts?

<comment><USER12> I'm a pretty huge fan of Postbox. It eats RAM, but once you get to 8GB that's less of an issue.</comment></comment>


Watch a Verizon 5G phone hit speeds faster than your home Internet - <AUTHOR> https://arstechnica.com/gadgets/2019/04/verizon-5g-goes-live-hits-760mbps-in-a-speed-test/ <comment><USER2> So you can blast through your data cap in just 10 minutes now?

</comment><comment><USER3> root权限</comment>


Opal: Ruby to JavaScript Compiler - <AUTHOR> http://opalrb.org/ <comment><USER2> I'm going to use this as a little example of why compiling to JS is hard. I work on the Dart team, and people often ask what the big deal about JS compilation is. Opal's compiler is a good example of why it can be hard.

I want to stress, though, that I'm not singling Opal out here. I think Opal is a really cool project, and I hope it works well for lots of people. It's just a good example language since it's on HN right now.

Let's compile this Ruby code to JS with Opal:

        a = 0
        10000000.times do
          a = a + 1
        end
        puts a

Opal gives us:

        /* Generated by Opal 0.6.2 */
        (function($opal) {
          var $a, $b, TMP_1, self = $opal.top, $scope = $opal, nil = $opal.nil, $breaker = $opal.breaker, $slice = $opal.slice, a = nil;

          $opal.add_stubs(['$times', '$+', '$puts']);
          a = 0;
          ($a = ($b = (10000000)).$times, $a._p = (TMP_1 = function(){var self = TMP_1._s || this;

          return a = a['$+'](1)}, TMP_1._s = self, TMP_1), $a).call($b);
          return self.$puts(a);
        })(Opal);

We'll compare it to some vanilla JS:

        var a = 0;
        for (var i = 0; i < 10000000; i++) {
            a = a + 1;
        }

I don't care at all that the generated code is a little funny looking. That's fine. Opal's code is actually pretty readable to me. What is a problem for some (many?) users is the _performance_.

You'll note that Opal did _not_ compile "a + 1" to "a + 1". Instead it generated "a['$+'](1)". That's because Ruby's arithmetic semantics are different from JavaScript's. To implement those semantics correctly, it needs to use a method call instead of using the built-in arithmetic.

We can profile the two using this fiddle: [http://jsfiddle.net/3UtNf/1/](http://jsfiddle.net/3UtNf/1/)

On my laptop, the Opal code is 264 _times_ slower than the raw JS code. In other words, it runs at 0.3% of the speed of the JS code. Now imagine sacrificing that much perf on a mobile device. That's enough to make the language unsuitable for many real-world use cases.

This isn't intractable, though. You just need to compile math down to real JS arithmetic operators _when JS 's semantics line up with your language's_ (which typically means, when you're suring you've got numbers and not some other type with a user-defined operator).

Determining where you can do that is the hard part. It requires type analysis. Doing that well in a language that doesn't have a sound static type system requires whole-program analysis. It's extremely complex, monolithic, and leads to very strange output code.

This is why, for example, Dart's dart2js compiler is so complex and heavyweight. It _does_ do this kind of analysis. It compiles this Dart program:

        main() {
          var a = 0;
          for (var i = 0; i < 10000000; i++) {
            a = a + 1;
          }
          print(a);
        }

to this JS:

        function() {
          var a, i, line;
          for (a = 0, i = 0; i < 10000000; ++i)
            ++a;
          line = "" + a;
          H.printString(line);
        }

That has the same performance as the JS code. The reason it does this is because it knows "a" is a number. If we change the Dart code to:

        class Foo {
          operator +(other) => this;
        }

        main() {
          var a = new Foo();
          for (var i = 0; i < 10000000; i++) {
            a = a + 1;
          }
          print(a);
        }

Then generated JS changes completely:

        function() {
            var i, line;
            for (i = 0; i < 10000000; ++i)
              ;
            line = H.S(new Q.Foo());
            H.printString(line);
          }

Interestingly, here you can see the compiler understood that the "+" operator on Foo always returns the same object and was able to inline the call to it and then hoist it out of the loop completely.

This is the kind of stuff you need to do if you want to have a language that compiles to JS and (unlike, say CoffeeScript and TypeScript) has semantics that aren't very very similar to JS.

<comment><USER3> Not necessarily. You can compile a Ruby VM from C to JS, as people have done. That should give you somewhere around 2 times slower performance, or better, not 264 times slower (and with very little effort).

Things get more complicated if your VM has a JIT, but there are interesting results even there, see pypy.js.

This approach lets you have arbitrary semantics, even ones that differ hugely from JavaScript, with decent performance.

I've suggested this in the past on HN - I think that approach could work for Dart as well. Would be happy to help investigate it.

<comment><USER2> > You can compile a Ruby VM from C to JS, as people have done.

That sounds to me like it would just kill your startup perf. Users would have to download an entire Ruby VM every time they hit your site, wouldn't they?

Maybe I'm just a luddite, but spending network resources downloading a garbage collector written in JS only so that I can run it in JS... which natively supports GC just seems really gross to me.

Don't get me wrong, I think Emscripten is very very cool. It just feels like a strange fit for applications written in a language whose semantics aren't _that_ far from JS.

<comment><USER3> I see your point, but don't think it is quite as bad as that. For one thing, it would be cached etc., so it is about as bad as every site on the web using jQuery (that is, not great, but not horrible either).

Yes, it seems ironic to download a GC written in JS, when JS can do GC. But JS can only do SOME types of GC. For example, it lacks destructor callbacks, which things like Lua require. Some other language might need weakrefs which JS also lacks. So it is not quite that unreasonable to download a GC, as you can get the right semantics you want.

But I do agree it gets less clear when the semantics are very close to JS. I'm not sure if Ruby is close enough, though (CoffeeScript certainly is).

<comment><USER4> While convoluted, I believe this results in some pretty fast js. mruby -> llvm -> emscripten -> asm.js

See: [http://vimeo.com/70673036](http://vimeo.com/70673036)

</comment></comment></comment></comment></comment><comment><USER5> The name is a bit awkward, given the existence of Opalang, which is another $SomeLanguage to JavaScript compiler.

<comment><USER6> Given that Opal.rb was started in 2010 and Opalang (back then called opages) in 2010 as well, I would file that under "unfortunate".

[https://github.com/opal/opal/commits/master?page=107](https://github.com/opal/opal/commits/master?page=107) [https://github.com/MLstate/opalang/commits/master?page=126](https://github.com/MLstate/opalang/commits/master?page=126)

<comment><USER5> I don't remember when Opalang was started, but I joined the project in 2008 :) Fwiw, back then the name was Opa. Opages was the name of the CMS written in Opa/Opalang.

Funnily, Opa and Ur/Web were two projects started around the same time and sharing very similar ideas, and they also collided linguistically – in German, Opa == grand-dad, while Ur == ancestor.

Anyway, have fun with Opal.rb :)

<comment><USER6> Thanks a lot for clearing that up (also, my post misses a "?" after opapages)!

</comment></comment></comment></comment><comment><USER7> What is a good use case for this? Interesting project otherwise! :)

<comment><USER8> Say you have a function that validates a file written in ruby. Now you want to have client side validation in the browser for good UX. The spec for validation may be complicated or you are not sure about the implementation (no docs, person that written it just left). This is internal format with no good parsing library. I'd try it out.

<comment><USER9> Or you're completely sure about the implementation, but it may change in the future (because requirements evolve) and you don't want to have maintain two different versions.

</comment></comment></comment><comment><USER10> How hard is it to use an existing javascript library with Opal?

</comment><comment><USER11> Since the Opal developers are reading:

I'm curious, do you plan to support Encodings and proper Ruby strings, or it isn't worth the effort, and you'll keep using plain javascript strings?

(I tried to look for this detail on the website but came back empty-handed)

</comment><comment><USER12> How do people know that one lang would compile down to another? Is there something about the lang that make this possible?

Also, is it possible that something won't translate from ruby --> js and cause a bug?

<comment> peter-fogg Ruby and JS are both Turing-complete languages (as with just about any other programming language you'll ever use), which means that one can simulate the other. The simulation might be messy, complicated, or slow, but it will still work. In this case, Ruby and JS are close enough that it can be done without too much trouble (see the compiled JS).

<comment><USER10> But does "anything written in language A can be simulated using language B" imply "A can compile down to B"?

<comment><USER13> yes. If you can write a body of code X in language B which performs the same operations as any given body of code Y in language A, then all an A->B compiler needs to do is find X given Y.

<comment><USER10> Ok, but is finding X given Y tractable?

To me, it seems like compiling is translation of source (usually higher level source to lower level source), whereas simulation is more like translation of behavior.

Edit: and the ability to translate behavior does not seem to imply the ability to translate source

<comment><USER14> Couldn't you translate source given the ability to translate behaviour? If some behaviour in language X can be simulated by a state machine in Y, then you could just emit said state machine as the translation of the behaviour, give its output to the next state machine, etc. And gradually build up the behaviour of a program in X, but using a bunch of generated code in Y instead of just an interpreter. In other terms, if an interpreter for / simulation of X may be expressed in Y, then for each bytecode / AST node in X you could just inline the bytecode handling you would use in Y into the compiled output.

<comment><USER10> I think thats a very clever algorithm.

But I think your first articulation amounts to converting a turing machine to a huge generated state machine, which would be impossible. The behavior of the X program given _one_ input could be modeled as a sequence of states if it terminates. But the process of generation that you described would have to be repeated for all possible inputs into the simulated X program, which would be impossible.

Maybe a single "behavior" could be modeled by a state machine, but it would also seem impossible to me to decompose a program into individual units of behavior.

But as for bytecode -- one could always compile the X code into bytecode, and then decompile that bytecode into Y code. If you can always find a common bytecode language for two languages X and Y, then I think that would be a generic algorithm for X->Y.

Edit: I guess that common bytecode could just be in a language that describes a turing machine.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> If performance is an issue, you can drop down back to JS using %x{} or ``. Good idea to do this for mathematical operations.

</comment><comment><USER16> I pasted in the Chrome console opal generated js code, but I get that "Opal" is not defined.

<comment><USER16> Never mind, solved.

I see potential on this.

Thank you.

</comment></comment><comment><USER17> I'd rather learn js when I need to. Auto generation is waste time in this case

</comment><comment><USER18> How would Opal handle meta programming like method_missing and define_method?

<comment><USER19> Opal supports `method_missing`: [http://opalrb.org/docs/method_missing/](http://opalrb.org/docs/method_missing/)

`define_method` as well: [https://github.com/opal/opal/blob/f958d6b2468e57acf7f324e10a...](https://github.com/opal/opal/blob/f958d6b2468e57acf7f324e10a06b8a8fe475f55/opal/corelib/module.rb#L256)

<comment><USER18> This is not pure way of doing meta programming. It looks at the code to figure out what methods are being called in future.

Opal.add_stubs(["first", "second", "to_sym"]);

But lets say I am dynamically generating method using a string passed from user input or server then this would fail.

<comment><USER20> I had the same fear at first, but actually if you generate dynamically a method name you need to use `#__send__` (and friends) to call it.

Of course `#__send__` supports method_missing: [https://github.com/opal/opal/blob/0-6-stable/opal/corelib/ba...](https://github.com/opal/opal/blob/0-6-stable/opal/corelib/basic_object.rb#L13-L31)

</comment></comment></comment></comment><comment><USER21> Great, I love Ruby. But what do I do for debugging?

<comment><USER22> (Opal developer here).

When it comes to debugging, I just use the standard chrome dev tools with source maps. Variables and properties on objects all compile using their ruby names, so viewing local vars and ivars in the debugger is easy. I only ever debug the generated javascript when I am debugging a bug with Opals runtime/internals/compiled code.

</comment></comment><comment><USER23> So compile a bad language to worse :) (Ruby developer here)

I think it makes sense to transcompile type-checked languages to JS, though. Elm is pretty neat.

</comment><comment><USER24> afaik,it's not really a ruby to javascript compiler(like coffeescript compiles down to js).

You cant write xhr = XMLHttpRequest.new and expect it to compile in js.without importing some libs.

<comment><USER9> It is really a ruby to JS compiler.

Ruby, however, is not just a thin layer over JS the way CoffeeScript is. The thing you are referring to is a sign of CoffeeScript being a thin layer over JS, not CoffeeScript's compiler being a "real compiler".

<comment><USER24> my point was it doesnt transpile Ruby to Javascript.

<comment><USER9> It does, though; it just doesn't expose things that are exposed in the underlying JS environment to Ruby code without jumping through certain hoops. Which makes sense, because unlike CS, which is tied to the underlying JS environment, Ruby isn't, and exposing the underlying JS environment would make it harder to port general-purpose Ruby code as you'd be more likely to run into collisions with the JS environment that you wouldn't see on other Ruby platforms.

<comment><USER24> My use case was an online IDE where instead of using javascript to code webapps,users would use Ruby to do the same.But since opal doesnt expose window object,it's pretty useless for me. Maybe you have a solution for that,but I just didnt find one.

<comment><USER9> Exposing the window object is a different issue than being a transpired and, in any case, you can access the underlying KS environment in Opal, including fairly simple access to things like the window object.[http://opalrb.org/docs/interacting_with_javascript/](http://opalrb.org/docs/interacting_with_javascript/)</comment></comment></comment></comment></comment></comment>


Ask HN: What are some use cases for single-page apps? - <AUTHOR> Besides screen navigation<p>Things I can think of:<p>- Single field validation<p>- Complex Async back-end process(Download, complex reports etc)<p>- Suggestion text field<p>- Multi step Wizard(kinda screen nav)<p>- Grid<p>- Continuous scrolling<p>- game<p>- accordion <comment><USER2> I think it's an interesting question.

One use case example: if I'm looking up resources to learn about cryptocurrencies, I want a web 2.0 style experience. If I'm on an exchange and trading those cryptos, I'd rather have a real-time single-page experience (I think poloniex does a decent job as an example). Even single page apps seem to have a lot of additional 'web 2.0 style' pages supporting them, so the entire thing can become blurred. Even with 'single page apps' you'll often have separate interfaces for user admin, splash pages, etc.

multi-page sites seem superior if you're more concerned with things like search engine traffic, maximum compatibility, smallest size, lowest maintenance, interacting with standard browser functionality (i.e. letting users bookmark pages in your app, browser extensions, etc).

Single page seems better if you're more interested in feeling like a desktop app, more interested in UI/UX, serving notifications, showing live feeds, letting the user 'sit back' while you deliver content.

<comment><USER3> > multi-page sites seem superior if you're more concerned with things like > search engine traffic, maximum compatibility, smallest size, lowest > maintenance, interacting with standard browser functionality (i.e. letting > users bookmark pages in your app, browser extensions, etc).

Building single-page applications is my bread and butter, and I totally agree with this sentiment. If you're building something that's purely content and doesn't require too much interactivity (which is true for most websites on the web today), SPAs are not worth the hassle.

However, it's worth noting that most SPA frameworks support server-side rendering. For one of my clients, I built a server rendered React website that behaved less like a SPA and more like a regular server rendered website, i.e, navigating to a link within the website caused a full page reload. The performance numbers weren't too different from your average Django/Rails/PHP website, and making sure everything worked on Node as well as the browser wasn't as hard as we imagined.

The advantage was that we could write the whole thing with React, as opposed to using some kind of templating language to generate HTML and then using JS to inject the interactive bits. It's an interesting strategy that I wouldn't mind exploring again.

Why did we do it? Because we had to integrate with a bunch of legacy code and this was the only way we could do it sanely.

</comment></comment><comment><USER4> I think the single client-side state and navigation control is the most prominent cause to chose SPA. Every time you want to avoid full page/javascript reload for some reasons. Such reason may be heavely interactive website/app like whiteboard, chats (Slack,SkypeWeb), music apps with online playback (Soundcloud, Spotify), text editors, spreadsheets, real- time updating stuff.

In my opinion most cases applying full SPA to CRUDs and content pages with normal hipertext navigation is overkill and comes from fad or desktop development experience. Such end ups with poor implementations failing with edge cases which normal browser navigation would support. E.g. try to change LinkedIn tab while you are offline - nothing happens, no error, no "You are offline" etc.

</comment><comment><USER5> If you have a single "view" and you're moving stuff around in it, that makes sense for a single page app. If you have multiple views or multiple objects that each take over the entire page when you look at them in detail, that should not be a SPA and you'll just infuriate users like me by hijacking the browser's navigation facilities and slowing down page loading by trying to go the SPA route.

Too many sites' admin panels are like that. And don't get me started on single page econmerce or content sites.

<comment><USER6> SPA that slows down page loading is an extremely poorly done SPA. If done right, things should be considerably faster. Not saying that there is a lot of good SPAs.

<comment><USER5> Client side rendering of an entire page is almost always slower than server side rendering.

<comment><USER6> SPA doesn't imply initial client side render. The first render should of course be done by the server, ideally cached and reused. After that, you can leverage caching and preloading to significantly improve the user experience, page loads can be near-instant.

</comment></comment></comment></comment><comment><USER7> SPA stands for Singe Page APPLICATION therefore

Good:

\- Excel Online

\- Word Online

\- Email

\- Document processing application

\- Complex administrator dashboard

Bad:

\- Blog

\- E-Commerce website

\- Marketing website

\- Something that requires heavy SEO

</comment><comment><USER8> If you're tired of writing HTML that isn't inside Javascript.

Seriously, though -- the company I'm working for is serving SPAs that interact with APIs directly, so you can serve everything except your API from a CDN. You don't need a server to render your pages, and perform your API actions; you can just use a SPA.

I'm not super knowledgeable about all this frontend stuff, so I can't really speak to if it's the only option, but it does seem like one thing that's pretty unique.

<comment><USER9> Doesn't that run into the issue of exposing all your business logic in the JavaScript? Somebody can also build a malicious client to query your internal APIs, maybe even leak some data?

I want to know because I was thinking of doing this in a side project, but I fear my proprietary functionality could be exposed.

<comment><USER10> Some will have to be in the JS, but that isn't really any different from non- SPA web apps. They still serve up JS files that have business logic. JS and business logic are, to some degree, inseparable.

If you're giving trust to a user to query the API, they could also maliciously leak data or execute queries inside a normal web app just as easily if you build something appropriately secure.

<comment><USER4> This is about separation of layers and defined interface contracts which applies both to SPA and traditional server-side rendered pages. Remember mangling with query params back in the time? `.php?param=...`. Now regarding "JS business logic" in SPA, I think it should be only presentation logic (formating, handling input, navigation etc.) and at most some data aggregation from various sources.

It needs some real architecting skills to build secure and limited API. Unfortunately often ease is prefered over security for some so I have witnesed Elasticsearch or MongoDB APIs exposed to SPAs without any additional layer.

</comment></comment></comment></comment><comment><USER11> I was tweaking my monolithic BBS software's web interface and decided it needed to be rewritten single page app because there were elements that really needed to persist in memory for the experience I wanted.

There's web based terminal in that app, and the user would lose their session while navigating through the site, and there's also a radio stream going on that I didn't want to have to rebuffer.

I make SPA's all day for work, but they'd probably be ok with a different approach. Wasn't until I started to muck with my BBS's interface for fun from a user centric perspective that I realized that a SPA approach was the solution to most of the problems I saw. Not that this is a common use case, but just sharing my recent experience.

</comment><comment><USER12> Single page apps are primarily a design / experience choice. The limitation is one's ability to define an experience within a single-page app.

<comment><AUTHOR> Let me rephrase when might a SPA be a good design choice given various functional choices the user might need to accomplish.

or if that's not a good basis for choosing what things would influence your decision.

</comment></comment><comment><USER13> All of the things you mentioned can be achieved with server side rendering and embedded javascript.

The only pro SPA argument that has made any sense to me is performance. The idea is that you do not need to store any state information. This reduces server load and give the possibility to do caching, etc.

So I guess my answer to your question would be any time rendering the app server side will cause issues.

</comment><comment><USER14> An SPA is generally a good choice for applications with a lot of user interaction, if you're only creating a web site a server based solution may be the best.

Some of the potential benefits with an SPA is the developer ergonomics and ui speed.

</comment><comment><USER15> The field of application for SPAs is VAST - and (thanks, perhaps, to an ongoing obsession with the fragmented, resource-starved visual poverty of the mobile web) miserably underexploited.

A single page application is a good choice where interactive graphics are generated server-side (typically from a simple and tiny JSON configuration file), but finely manipulated (through selections and transitions) in a web browser.

Applications built using modern data-driven libraries have access to class and id values across the entire graphical structure, allowing exceptionally fine- grain selections, which can be grouped according to user's needs. These are the basis for spectacular and visually liberating transformations.

For example, for timeline-based, event-driven applications, GUI events can be grouped according to whether dynamic (timeline-driven) or static (hover-over / property interrogation) mode, allowing -overall- a much greater event handling density.

Using modern programming techniques, literally thousands of model configuration variants can be derived from one generic tool visualization base. For application areas with many classification families, this implies many thousands of unique models, but also (often the only workable solution) open-source / community-driven provisioning.

Generated on the server and presented on the client in either SVG or WebGL forms, each and any of these can be instantly and automatically hooked up with the timeline, sharing consistency, styling and timing with all other animations.

Visualizations can be literal (structurally redundant or abstract, as with SVG) or figurative (ad-hoc, drama based as in WebGL).

A compelling aspect of domain-wide SPAs is their ability to act as an integration stack for (otherwise standalone) artificial and machine intelligence solutions.

They may also build on off-site synergies, such as timeline-synchronized video or the psychophysics of visual processing, adding other intriguing visual dimensions or feedback channels.

Configuration preferences can be aggregated to define menu preferences and indeed entire online environments, which in turn can be one-click shared with others, providing the basis for globally-available information exchange platforms.

The linchpin in all this? Intimate data/DOM bindings, a.k.a. 'ditch MVC'.

My feeling is that as mobile bottlenecks are eliminated, graphics-rich SPAs are set to be the next great driver of user expectations.

All that and not a single example? Clearly didn't read the question :-)

</comment><comment><USER16> Electron apps. (Cross platform apps that can be built with HTML, CSS, JS really).

</comment><comment><USER17> Anything that would be improved by offline support.

</comment><comment><USER18> Microsoft Outlook email client</comment>


Im selling some domains to help bootstrap my startup - <AUTHOR>

I am selling a few domains that I havent gotten around to using in at least a year in order to help bootstrap my startup.
If theres anything you are interested in please feel free to make an offer! Your interest would be greatly appreciated and will help me fund my venture!
Kind Regards,
Matt

  *GTLD:*
  - appscale.net (idea: web services for apps)
  - appscale.org
  - energymind.com (my old consultancy)
  - godspire.com (idea: javascript MMO i never got around to starting)
  - heyreddit.com (was a popular chatroulette thing for reddit)
  - mediaparty.com (idea: deviant art for all media)
  - wordflows.com (idea: CMS platform)
  - wordflows.net
  - wordflows.org

  *UK:*
  - brokersmart.co.uk (idea: CRM for brokers)
  - cardiffmedia.co.uk (idea: Local consultancy)
  - cashhappy.co.uk (idea: finance comparison)
  - deyon.co.uk
  - digimall.co.uk (idea: multi-store marketplace)
  - energymind.co.uk
  - smartbroker.co.uk
  - wordflows.co.uk

  *MISC:*
  - dart.ws (idea: forum for dartlang)
  - snapshot.ws (idea: webpage screen shot service)
 <comment><USER2> I feel as though cardiffmedia could be a Doctor Who fansite of sorts (Fake news relating to Doctor Who universe, or unofficial news about Doctor Who). I realize there's a lot of other local applications for the domain, but it is an idea for a larger market.</comment>


Show HN : Stackwork :a bare TODO list - <AUTHOR>

URL :http://stackwork.appspot.com
This is my first post on HN and also this is my first web project. So please excuse me if i have made any obvious mistakes.
I have been learning Python for about 2 months now and i made Stackwork with Python and Google app engine.
Stackwork is a very basic TODO list.You are limited to adding tasks and deleting them .
There is not much at the moment but i value your feedback and ideas . So try it out and tell me what is broken. <comment><USER2> Looks pretty, and simple. I liked the quick sign-on.

A few niggles:

* After I've signed on, the first thing I see is it asking me to "Share with friends", before I've (theoretically) even figured out what the hell the app does. It feels a little obnoxious to me. I think it would be better if that were placed a little lower on the page (that is, _after_ the part where I interact with the real meat of the app, better to decide to share or not after I've experienced the app).

* The "Go" button might make more sense if it said "Add", because that's what I'm doing after all, adding a task.

* Similarly, after I've added a task, hovering on one shows a "Delete" overlay. While in the current implementation this seems to delete the task, maybe it would make more sense to say "Mark As Completed" or something along those lines?

In all though, excellent work, especially for just having started! Keep at it.

<comment><AUTHOR> Thanks a lot for the review jbrennan. * The sharing part would be moved . Would you suggest replacing it with a "how to" dialogue ? like how to add and remove tasks ? *Would you also prefer the tasks being there with a completed sign rather than being removed from the list ??

Again Thanks for your time ! It means a lot getting the first pat on your back for your work !

<comment><USER2> * Yes, I think something a little instructional would be good. Although as your app is very simple, it also makes it easy to understand already, so that's a great point.

* I think whether a task is "Deleted" or moved to a "Completed" list or just somehow marked as completed but staying in the same list is a design decision you'll have to make. I've seen it done either way in different To-Do apps. Some people prefer the style where a completed task is completely gone and out of sight and removed from the app. Others prefer to see a log of their completed work at the end of the day (/month /week, etc). So I think it's up to you to decide what's best for your app. I would lean towards keeping the ToDo, but either marking/moving it to indicate a completion, and maybe also having a way to remove it completely.

And deciding what to do is half the fun anyway! Best of luck with it.</comment></comment></comment>


Air pollution 'as bad as smoking in increasing risk of miscarriage' - <AUTHOR> https://www.theguardian.com/environment/2019/jan/11/air-pollution-as-bad-as-smoking-in-increasing-risk-of-miscarriage <comment><USER2> This is somewhat interesting, I find it equally interesting that since the 1900s we have exponentially decreased the pollution , especially such particulates such as magnetite with the obiteration of the steel and manufacturing industries. Certainly we need to remain vigilant making certain that we are being responsible.

The most interesting fact in which I came across after following the links and the looking at some miscarriage statistics is that the US (at least) performs more abortions than the reported number of miscarriage.

</comment><comment><USER3> Note that they found a correlation with the contamination of NO2, not just any contamination. [I guess NO2 is absorbed in the lungs and enters the blood stream.]

Also, a ~50% increase of the concentration of the NO2 increase the miscarriage rate in a 16%. I don't understand exactly how they compare it to the smoking risk. How many cigarettes should someone smoke in a day to increase the miscarriage rate a 16%?</comment>


QUIC: A UDP-Based Secure and Reliable Transport for HTTP/2 - <AUTHOR> https://tools.ietf.org/html/draft-tsvwg-quic-protocol-00 <comment><USER2> This is awesome. For high latency connections, and migrating mobile devices, it save a lot from the aspect of setting up a TLS connection every time.</comment>