Why C# coders should shut up about Delphi (2016) - <AUTHOR> https://jonlennartaasenden.wordpress.com/2016/10/18/why-c-coders-should-shut-up-about-delphi/ <comment><USER2> It's hard being an old programmer as some technologies that you used in the past, that were more productive than certain technologies today, are no longer popular. Creating client side apps in the 90s was arguably easier than creating web apps today with the soup of html/css/js frameworks that are changing every month.

edit/mass reply: I've been coding web apps with the rest of you guys for 20 years. The web isn't the problem, the tooling just isn't there yet. The solution space is large and we're still in the 'throw things at the wall' stage. It will eventually be figured out and web dev will be nice and stable just like the backend and database layers.

<comment><USER3> Delphi certainly was supremely productive for the kinds of one-off, bespoke enterprise apps that I was involved with, and it is valid to question why that was the case. I don't think the tooling was necessarily all that superior, the industry trend was simply way towards "slap a grid on top of that SELECT * FROM Orders".

Clearly, there are many things wrong with that, but the fact that one could whip up several screens and essentially ship them in a few hours makes it a worthwhile thought exercise to think about what has been gained, and what lost. Most enterprise apps that I encounter seem to be massively overcomplicated for what they actually do.

<comment><USER4> What the hell else to business apps do? I'm genuinely interested to know what you think is the clear issue with showing users data from database tables.

<comment><USER3> I'm not sure I 100% understand your question, and it's also hard to respond without more context.

Many Delphi apps back in those days were very lazily slapped together, with thin layers of code (or none) on top of whatever queries got the job done. There are performance issues, security issues, correctness issues (in terms of: does the app allow you to do some things that should not be allowed). There are also meta-level issues that came into play, as anything that did not fit into the out of the box patterns was so outrageously more expensive to develop that companies opted away from it, and in many cases UX suffered.

On the other hand, we have now overreacted in the opposite direction, with many business apps having empty layers of code that do nothing except pass on the exact same message to the next layer, because, well, "that's how it's done in the real world", or something. Tons of boilerplate code get created that never end up adding any real value. Other than this specific example, there are plenty of YAGNI violations.

I prefer something of a balance between the two.

<comment><USER4> I guess I don't buy the idea that anything has changed. If a straight query shows you the data you need why would you put anything else but a thin layer of software over the top? More software is worse, not better. Apps are still lazily created by people downloading frameworks and plugging them into whatever shit they happen to be creating at the time.

The issues you state. Security, correctness and performance. None of these are solved by having more software. It might seem safer if you have more layers of shit between the user and the valuable data, but it isn't. Having a mental idea that now I use 'model and view' im going to be quicker, more correct or more secure I think demonstrably isn't true.

<comment><USER3> This could be argued infinitely, I think. I do appreciate your points; yes, simply adding code - by default or by itself - does not resolve those things I mentioned. But, it's important to view my comments within the context of what we were talking about, which was the defacto development style that grew around Delphi, especially in the early days (before their libraries got smarter). In the case of my "SELECT *" example, this was quite often literally the case - queries were not optimised in the least bit regarding the columns and rows that were being retrieved (mostly due to lack of awareness or laziness). In terms of correctness, you can bet that business rules were usually sprinkled around the UI in a happenstance kind of way, rather than being collected in a relatively well defined, easy to verify and unit test business object, say. Again, while I do agree in theory that "more code" does not necessarily solve anything, these are the kinds of practicalities I am arguing about, not on a pure level. The tooling was great for getting things done instantly, but encouraged a laziness that caused a counter revolution which went too far in the opposite direction.

<comment><USER4> My work until recently was working on one of the Delphi apps you're talking about. Not in terms of unoptimised queries but bad separation of business logic and ui. But the product has passed between 4 diffent companies and is over 20 years old now, I just don't see how you prevent these issues. I do see what you're saying, but I think the real issues is humans which hasn't changed.

<comment><USER3> Agreed, and I also don't have a real answer. At least, not a technological one. The closest we can get it is a bunch of developers who care about a product, ask themselves lots of "why do we do it this way", and "could this be done better", and try to come up with some solid answers. Of course, with products that survived 10+ years of maintenance, it is highly unlikely that enough time will be afforded to any team.

Circling back to what I was trying to say with the first comment - I suspect the rapid development promise and culture back in the day led to a lot of these apps being developed. The tooling was just an enabler.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> It's a really good crash course on the shared origins of Delphi and C# plus a brief reminder of all the modern features offered by Delphi that have flown under the radar, but the anger and emotion is rather immature and really detracts from the argument. Those words could have been better spent selling its strengths further.

That aside, things have changed rapidly in the last five years in the C#/.NET world first with .NET Native then with .NET Core and CoreRT. Exciting times, really.

<comment><USER6> Unfortunately .NET Native seems to be on the way out with the project Project Reunion, and it is not clear how AOT support will be like post NET 5 release.

So far they are demoing single file release, which is basically packing everything into the same exe, but you get a JIT + MSIL instead.

<comment><USER5> I agree. .NET Native was always for the full framework only; I think CoreRT was supposed to be the future there but it seems to be put by the wayside now as with .NET Core 3 the official recommendation for AOT was Mono with no mention of CoreRT in the roadmap. I would love to hear from Miguel what the plans are there.

Ironically this comes at the same time that C# the language has become much more usable without GC or with minimal GC thanks to the work that went into implementing Span but I think that was more a matter of necessity to support advanced async features for web usage (although I found it also made P/Invoke a joy and eliminated virtually all my need for marshaling in a few codebases.. and would have eliminated all the performance issues the led the OS team to abandon C#). It does seem that the ASP/Blazor team is driving the show and calling the shots after the UWP failure in terms of adoption, and I'm not seeing too much that would indicate it's not the case even with Project Reunion. I've been testing WinUI 3, MSIX, and WebView2 and have been disappointed at the lack of story for putting all the parts together. It seems like side-loading packages with sparse package projects is intended to replace "native" UWP packages ("regular" AppX packages require .NET native unless side-loaded and I can't get apps pulling in WinUI/STJ/Buffers/etc code to compile to .NET Native without an undeclared dependency on System.Private.CoreLib and without serious hacks to enable RTTI which makes me think they're not meant to be used in that way any longer) but as always MS isn't very forthcoming about the future of UWP components more than a single step at a time with all bets clearly hedged.

<comment><USER7> In C# 9 there will be Source Generators, an easy way to generate code in a build task before compilation. That will remove the need for Reflection in many areas. Work is also underway to identify and remove all "linker" dangerous code. Once the SDK is linker safe and has a lot less reflection, AOT becomes a lot easier.

Mono is now part of the dotnet family so I suspect they are going to use that for AOT in C# forwards. Starting with Blazor.

</comment></comment></comment></comment><comment><USER8> I love this post. My first gig was slinging Delphi for a telecoms company, my second was C# and I've been involved with TypeScript since it was announced. I'm a complete fan of Anders Hejlsberg work. To the extent that I gave genuine consideration to naming one of my son's "Anders". My wife was not onboard.

<comment><USER9> Could you have gotten away with naming him 'Sharp' instead?

<comment><USER10> No the logical name is C@, the great successor of C# ( [https://www.reddit.com/r/C_AT/](https://www.reddit.com/r/C_AT/) )

</comment></comment></comment><comment><USER11> > Some people seem to think that Delphi ended with version 7 back in the 90s

For me it is the case. Before Delphi was a really the greatest, smartest and easiest RAD IDE. I even think that today dev tools are in a bad state and nothing match what we once had back then! Especialy for creating 'responsive' Gui apps easily.

Then, as shitty companies always do, they changed completely the tool and the language with the new bad .net like one. Despite it to be wrong, they claimed that this was better than what we had before and forced it on users. But it was not anymore the Pascal Object that we liked!

</comment><comment><USER12> This is one heck of a rant. I couldn't make it through to the end to see if he ever got to the point.

<comment><USER13> Delphi doesn't get the respect it deserves and C# people are mean.

<comment><USER14> We are all slaves to the whim of companies. Sure I could've continued using Delphi beyond the late '90's but that would've meant that I wouldn't have been able to hold a job as a developer in the '00's when .NET became all the rage.

Sometimes you just have to make do with what your customers want. And besides, C# is IMHO the best computer language ever invented.

</comment></comment></comment><comment><USER15> as a delphi Programmer who works next to a C# programmer we agree to agree that neither of us will ever use the others shit language, we also agree that all the other languages are worse :-)

</comment><comment><USER16> Delphi is one of those languages which was a good product from a failing company - Borland. Just as Modula 3 was a good product from a failing company - DEC.

<comment><USER17> Have they been failing by themselves or have they been destroyed by Microsoft, e.g. [1]?

[1] [http://techrights.org/2009/09/14/ms-admits-draining-to- destr...](http://techrights.org/2009/09/14/ms-admits-draining-to-destroy- borland/)

<comment><USER18> I remember having read the story about Borland as follows: upper management decided software products was a thing of the past and the company had to switch to services. They did that and were out of business in 6 month.

<comment><USER6> Borland is still in business, although with another name, Embarcadero.

What happened was that decided indies weren't any longer their target demographic and they wanted to be enterprise and focus on product and process lifecycle management (PPLM) tooling instead.

So Delphi and C++ Builder got priced accordingly and they renamed themselves to Inprise.

After 20 years they are trying to get back the indies with community editions, but the damage is already done, and 100% of their customers are enterprise shops.

So unless you are working for a Fortune 500, you will hardly come in touch with Delphi / C++ Builder nowadays.

</comment></comment></comment></comment><comment><USER19> I am a C# coder and I don't hate or talk about Delphi at all, I didn't even know people still used it. ¯\\_(ツ)_/¯

</comment><comment><USER6> Satire or not, one thing I do fully agree.

It was a big mistake not embracing AOT from day one, C++ wouldn't have kept its king position in MS ecosystem if the original .NET had been like .NET Native since the begging and kept Delphi like features for low level coding (some of each are have been added since C# 7.x).

JIT support could still be an additional option as well, just like on languages like Eiffel.

Instead we got NGEN (with basic optimizations), .NET Native (out of Midori, but which seems on the death march with Project Reunion), MDIL/Bartok (out of Singularity, used only in Windows 8.x), and all remaining efforts are from third parties (Xamarin pre-acquisition), Unity, CosmOS.

And no one really knows if CoreRT will ever be integrated into the main product.

<comment><USER20> I've been doing C# for over 10 years, and so far the AOT trend just gets in my way. I would prefer .NET Core on all platforms to just function similarly to .NET Framework on Windows: shared runtime(s) with major releases for breaking changes, and point releases for in place improvements.

Case in point: when Windows RT jailbreak came out, my .NET Framework AnyCPU apps just worked there. Now when I package, I very often have to list the target architectures in advance.

When I hear Java announcing JIT in Java and catching up with C# on syntax sugar, I feel that C# + .NET might start to lag behind in innovation.

<comment><USER6> .NET has had lot of innovation, AOT was there since the beginning via NGEN, although there was never a big investment in its optimizing capabilities.

Then there was Axum, Cω, Phoenix Compiler (LLVM like in .NET), Singularity, Midori, Rosylin, MDIL, .NET Native.

GraalVM goes back to MaximeVM and JikesRVM, so JIT in Java is also quite old.

What all these projects need is the money and political willigness to keep driving them forward, and here is probably the main issue with some .NET research projects, because since the begging Windows Development (which kind of owns the C and C++ story) teams aren't that willing into having too much .NET on their turf.

</comment></comment></comment><comment><USER21> I have colleague who still write desktop application in Delphi. I sometimes work with him and to observe how he write Delphi, which is quite impressive, and the performance is remarkable. However, it is really bad at some points.

First, it is not friendly to web, we have some special web requirements, we decided to spawn a node process to do it.

Second, the tooling is so much better in Visual Studio. And the compiler is so much smart with sophisticated and syntactic analysis.

Last but not least, it really lacks 3rd party libraries so people always need to implement themself.

C# may not be the best option for any application. But it is general enough to almost support every types of application.

</comment><comment><USER22> I kept waiting for the tangents to end and the reasons for why Delphi was great would start.

He never got around to it.

</comment><comment><USER23> Except that C# worked on 64-bit OS's practically from the start and Delphi-- still only marginally does.

And this isn't theoretical--Altium actually did a _full code rewrite_ in order to get off of Delphi because of this.

<comment><USER24> Unfortunately C# and the rest of .NET ecosystem (and for that matter Java and rest of JVM) are not fully 64bit capable to this day and will probably not be fully 64bit capable for the next decade if ever. What do I mean with this? .NET and JVM native arrays use 32bit indexes and most standard container classes also use 32bit indexes so you cannot have more than 2^31 elements. Who needs that many elements in the array? No-one who develops in these environments...because they can't have them so they move to something that can.

<comment><USER25> I think you can, but it does involve a configuration switch [0]. The index accessor for arrays has always been allowed to be of type long, the runtime was the one causing the trouble. As for List<T>, it's still problematic since all the methods still accept an int.

[0] [https://docs.microsoft.com/en- us/dotnet/framework/configure-...](https://docs.microsoft.com/en- us/dotnet/framework/configure-apps/file- schema/runtime/gcallowverylargeobjects-element)

</comment></comment></comment><comment><USER26> I miss Delphi. I miss Clipper Summer '87\. I miss BeOS. I miss simpler times. Those were good times....

</comment><comment><USER27> This brought back fond memories of C++ Builder and the Jedi OSS library.

<comment><USER27> It lives! [https://wiki.delphi- jedi.org/wiki/JVCL_Component_Overview](https://wiki.delphi- jedi.org/wiki/JVCL_Component_Overview)

</comment></comment><comment><USER28> _Some 3 years after this satire post was published..._

Satire and (2016)

</comment><comment><USER29> (2016)

</comment><comment><USER30> This was published in 2016.

And the title included "C# coders". I am not a C# coder, but all C# GUI coders I know had praised Delphi for its design and convenience for GUI...

edit:grammar

<comment><USER31> The one thing that bugged me about Delphi apps on Windows, was that they used their own custom buttons on the forms (with little graphics of crosses and ticks etc.). I am not a Delphi programmer, but I always wondered why this was.

<comment><USER6> Because developers want to be fancy.

That was an additional custom controls library that you could enable, you could choose to use the standard L&F as well.

It was also available for the C++ products from Borland and it traces back to their first Windows 3.x compilers.

My first experience with it was in Turbo Pascal for Windows 1.5 (the last TP before Delphi was born).

Also, similar libraries existed for MFC or plain C Win32, sold by companies like ComponentOne.

</comment></comment></comment><comment><USER14> This blog is not an article but a rant full of half-truths and outright lies. The author doesn't realize that most C# developers have no knowledge of the history of both Pascal and C (I'm old enough to know) because they were born decades after these languages came into being.

The author also misses the point that C and C++ are systems programming languages (for developing operating systems, device drivers and low-level stuff such as compilers) and Pascal is an application programming language. C and C++ were pressed into service for developing application programming because many nerds thought it cool to have the fastest benchmark speed test result and ignored the fact that these languages are unsafe to use on a day- to-day basis. That's why C# and Java were invented.

<comment><USER32> I don't think the distinction you're making about C and C++ being systems languages, and Pascal being an application language totally holds.

Pascal is a totally fine system s language. AEGIS (a from scratch Unix like) was written in Pascal and by all accounts was a great option at the time.

And what makes C and C++ unsafe exists in Pascal.

<comment><USER33> Modern C++ is actually pretty safe. Pascal is reasonably safe as well if you know what you're doing. And all this safety talk is over-hyped anyways. Just learn hot to program properly. I do not really remember when was the last time I had problem with "safety" in either Delphi or C++. My commercial apps (C++, Delphi and C for firmware run for years without a single crash report).

<comment><USER14> C++ is safe if you know how to use it properly, but this does incur overhead and many people aren't willing to incur any overhead because they want the fastest raw speed available. So they usually mess around with C like constructs in their C++ programs.

Pascal OTOH is 100% safe no matter what you do because you can't access pointers directly or do pointer math or out-of-bounds array access. The pointers available in Pascal are "managed" pointers which prevent you from accessing the underlying machine hardware.

This all incurs a little overhead, but you won't find any insecure Pascal programs due to memory mismanagement.

<comment><USER32> You can typecast integer to pointers in Pascal. It's not memory safe.

<comment><USER33> You know, I can always jump from that cliff. Still keep wondering why don't I do it.

<comment><USER32> Please take your projected inadequacies elsewhere.

<comment><USER33> I could not reply to your message one below so moving it here: > _You 're the one that has three times now commented on one of my posts trying to prove to yourself that everything you're doing is fine and there's nothing you could be doing better from a security perspective._

I am just expressing my opinion. You know, taking distraction from mundane work to talk technical things. I am not trying nor do I need to prove how I do my development/design and what tools do I use and frankly I do not give a flying hoot what others might think about it. I run my own business after all.

As to you particular point of language being unsafe because it allows typecast pointer to integer: allowing unsafe features in my view does not make language unsafe as long as it provides safe way of doing things as well. It is called flexibility in my book.

Security wise: could I've done better? Sure. Anything could be done better but you've probably heard about the law of diminishing returns. Does the fact that I use language that have unsafe feature automatically make my software unsafe if I do not use said features - big fat NO. Even if do use such feature (and rarely but sometimes I do for the sake of efficiency) it does not really change the main point.

<comment><USER32> What's your business?

As senior engineer at a security conscious firm, who used to freelance by writing exploits for code written by developers with your attitude, I want to make sure we don't use your software.

<comment><USER33> You can save this theatricals for Broadway.

<comment><USER32> I'm serious. I'd like to make sure that we're not using your code.

Are you seriously afraid to promote your business because it might be attached to your comments? That should tell you something.

<comment><USER33> I think you should go and get help if you do not understand why people on newsgroups often prefer to stay anonymous.

And if you are as you say major security guy as you claim you probably already checked all the software you allow to use for security breaches. So you either found the problem and got rid of said software or you're just full of it.

And if your business recommendations to your company are base on "attitude" picked from internet chat or shall I say you personal likes why don't you submit this conversation to your employer.

And finally the last thing I feel like doing is promoting my business/services to people like yourself.

<comment><USER32> > And if you are as you say major security guy as you claim you probably > already checked all the software you allow to use for security breaches. So > you either found the problem and got rid of said software or you're just > full of it.

Do you know what an 0 day is?

> And if your business recommendations to your company are base on "attitude" > picked from internet chat or shall I say you personal likes

My recommendations to my employer are based on many things, including overall security posture. The world's best engineers ship memory unsafety bugs in C and C++, including modern C++. Your statements belay an overall lack of respect for the problem space, which in my experience leads to an increase of issues, even above the general steady state.

> why don't you submit this conversation to your employer.

I plan to as soon as there is actionable information.

> And finally the last thing I feel like doing is promoting my > business/services to people like yourself.

You're the one who's been regularly deciding to comment on my posts trying to convince yourself that everything you're doing is fine, and you can't do better. "People like [my]self" are just telling you that you can do better, and only when you decide to go out of your way to start shit.

I'd prefer if you stopped commenting on my posts.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


A nasty election in Poland: A win for intolerance - <AUTHOR> https://www.economist.com/leaders/2020/07/18/a-nasty-election-in-poland <comment><USER2> What a nasty text... 2- bad jurnalism for not writing objective truth.

So that "Mr. Trzaskowsky" is vice in Civic Party. You wanna know why they lost governing power 2 elections ago ?

Simple, becouse they are literally, LITERALLY, __uncapable__ of ruling !

Orginal from C.P: Scams ? "Our scams ?? Check Espana !" What they thing about their own internals and "governing way" ? "This is cesspit..." and "Shit, ass and stones heap"

I'm not making it, they mean all that ! :>

The moust expensive, "negotiated" price for oil from Rossia ? Check ! Inability to reform our military ? Actually, dismantle it as much as possible ? Check ! Allow China to destroy hundreds of small companies while _not_ finish few kilometers of highway ? Check !

Fuel costs 5 zł ? Prime Minister: Give me 7 !

And Trzaskowski "achivement" as capitol mayor, while not on sick leave, are: returning stoled to thives ! Seriously ! And poisoning main Poland river with stinking something.

Yea, The Economist ! And just few minutes ago I respected E. for some reason...

</comment><comment><USER3> That's a pretty subjective title if I've ever seen one.

</comment><comment><AUTHOR> Non-paywalled link: [http://archive.is/vVkum](http://archive.is/vVkum)</comment>


Scotland's Decision - <AUTHOR> http://www.bbc.co.uk/news/special/2014/newsspec_8699/index.html <comment><USER3> While I tend not to be too impressed by UK politicians I'm quite proud that the government is able to say to Scotland, OK have a vote and go independent or not. So many of the world problems seem to have been caused by governments taking the opposite view and saying it's mine all mine. See Ukraine and about 1000+ other examples.

<comment><USER4> This referendum is not binding in any sense. The government in Westminster will make the decision, and it will not be made by the current government (there isn't enough time before the general election). If the next government is formed of different people, then under British sovereignty traditions it will feel no obligation to pay any attention to the referendum run by its predecessor.

In practical terms: if Labour gets into power in 2015 then Scottish independence will not happen regardless of the outcome of this referendum, because Scottish independence would eliminate Labour as a political force in the UK (Tories would win all UK elections, SNP would win all Scottish elections).

It's not over yet.

<comment><USER5> > Tories would win all UK elections

If this would happen, I'm pretty sure some or other power-hungry fractions of the party would try to make a new party, so you'd again have two (or more) competing.

<comment><USER4> I would not be surprised by seeing a Tory split (into the nationalist and libertarian factions), but it would take years - there's a lot of money holding the two halves of their party together. I wouldn't like this outcome much though - it would mean Cameron was the representative of the "nicer party" in British politics.

</comment></comment></comment></comment><comment><USER6> In the latest opinion poll from the most No-friendly pollster[1] 'Yes' is ahead in all age groups apart from the over 60s, where No is way ahead. If there is a No vote it seems likely to have been won by the old. This backs up the narrative from this article that Britishness is dying out in Scotland (of course, pensioners have also been frightened by scary stories about their pensions, and tend to be more small-c conservative, so it's not entirely an identity thing)

[1] YouGov. Different polling companies appear to have different systematic errors in their results, meaning that polls are spread fairly widely. This particular polling company has until recently been showing large leads for No. In their most recent poll the lead had been cut down to 6%, reflecting a feeling 'on the ground' that there's a genuine shift happening. Personally I am still totally unsure what result we'll get in two weeks (two weeks!)

<comment><USER7> The SNP probably brought in voting for 16 and 17 year olds on the basis that it might counter the strong 'No' vote in the 60+ group.

However, that group is fairly equally split (45% Yes/44% No). I reckon they underestimated how strongly popular culture, which is focused on London, influences the 16/17 age group.

<comment><USER8> I will note that reducing the voting age to 16 in general elections is probably on the cards for the UK as a whole after the next general election:

[http://www.bbc.co.uk/news/uk-politics-21178379](http://www.bbc.co.uk/news/uk- politics-21178379)

</comment></comment></comment><comment><AUTHOR> I appreciate the politics may not impact many here, but I enjoyed the (by now fairly common, I suppose) design and the information being presented seems to me to be a good background to the current state of affairs.

<comment><USER9> > but I enjoyed the (by now fairly common, I suppose) design

The opposite for me, I had to use Clearly (restyling extension for easier reading) to remove all their distracting and annoying, erratically moving backgrounds (especially together with the semi transparent text background, if it was opaque at least).

The article itself was a great read though.

<comment><USER10> On my iPad Air the text is massive(as with most "mobile" websites) and an inch on each side of the screen is wasted with empty space.

Maybe I've got funny eyesight.

</comment></comment></comment><comment><USER11> It's really exciting to follow this referendum, even if purely from a democratic perspective (out of the last 68 years, Scotland has voted Conservative for 6 years, but has had Conservative governments for 38 of those years). The No campaign has a difficult job, because it's not easy to sell the status quo - but they've essentially resorted to fearmongering, and it looks like people are starting to see the lack of substance. I think that theweebluebook.com presents the argument for independence quite well.

<comment><USER12> >> out of the last 68 years, Scotland has voted Conservative 6 times, but has had Conservative governments for 38 of those years

Do you mean that Scotland has voted Conservative in 6 general elections? If so, with a maximum of 5 years between elections, they voted for a Conservative govt for up to 30years of those 38. That's quite a misleading way to represent that statistic isn't it?

<comment><USER6> On this page you can see graphical representation of Scottish and UK voting patterns, and how 'subtracting' Scottish votes would have affected UK results (in fact, very little):

[http://theweebluebook.com/principles-and- politics.php](http://theweebluebook.com/principles-and-politics.php)

<comment><USER12> This does not address my comment.

Is the 6 times: 6 parliaments or 6 years? Is the 68: 68 parliaments or 68 years? Are units being mixed for exaggeration?

<comment><USER13> In both the unit is years. However, the figure of 6 is incorrect as I assume it refers to the fact that in 1951 the Conservatives (at the time the Unionist and National Liberal and Conservative parties in Scotland) got the same number of seats as Labour in Scotland. If we count this, the correct figure is 8 of 68 years.

</comment></comment></comment></comment></comment><comment><USER14> Here's a dump of some other insights into the referendum:

Betfair's probability of a majority yes vote (NOT a poll of fraction who will vote yes) over time: [http://uk.sportsiteexweb.betfair.com/betting/LoadRunnerInfoC...](http://uk.sportsiteexweb.betfair.com/betting/LoadRunnerInfoChartAction.do?marketId=110033387&selectionId=5334892&logarithmic=true)

The University of Edinburgh has a guide to the debate: [http://www.futureukandscotland.ac.uk/guidetothedebate](http://www.futureukandscotland.ac.uk/guidetothedebate)

It also has a MOOC(!) [https://www.futurelearn.com/courses/indyref/](https://www.futurelearn.com/courses/indyref/)

</comment><comment><USER15> > For 15 years the Scottish Parliament has been a fiscally lopsided > institution. The money comes from a block grant from the UK Treasury. > Westminster decides how much tax we all pay and how much government there > should be in relation to the economy but not how it's spent.

> You can see why there's little room in the Scottish national discourse for a > party that says "vote for us and we'll cut your taxes; vote for us and we'll > make government smaller".

I'm not sure how this follows. Can someone clarify?

<comment><USER16> Scotland's parliament does have tax varying powers but has never used them . So, it takes the block grant from the Westminster parliament and decides how to spend it through something called the Barnett formula.

Scotland is essentially a socialist country (and socialist isn't a dirty word here). There is a sense of fair play and looking after the poorest in society - a party that would propose a tax cut for a smaller gov. wouldn't do well in the popular vote in Scotland.

Does that help?

<comment><USER17> It's worth pointing out that the only variance it can make under the existing powers is to _raise_ income taxes - this is why it's never been used. Doing so would be political suicide and see a population drain as those able to would quickly move "next door" to an England with lower taxes.

The Barnett formula determines the size of the block grant, not the spending of it. The Scottish Government spends the grant according to its priorities. At the moment these include: free healthcare (including prescriptions), free higher education, and free care for the elderly.

<comment><USER18> > free healthcare (including prescriptions),

For people not in the UK: people in England pay for each item on a prescription. The charge is currently £8.05 per item. You can get discounts if you need multiple items. There are a bunch of exemptions - people with a thyroid problem for example - which mean that about 90% of items are free.

[https://www.gov.uk/government/news/nhs-charges-from- april-20...](https://www.gov.uk/government/news/nhs-charges-from-april-2014)

<comment><USER16> It should also be pointed out that its not entirely a one way street - <USER2> example England has the excellent Cancer Drug Fund, which Scotland doesn't.

[http://www.scotsman.com/news/health/scottish-cancer- patients...](http://www.scotsman.com/news/health/scottish-cancer-patients- denied-medicine-fund-1-3117297)

<comment><USER19> I would strongly disagree with the CDF being "excellent" – it's basically money cut from other NHS budgets and repurposed for expensive individual cancer therapies.

At the very least, an expansion and improvement of the existing equivalent system in Scotland (individual treatment request) would offer a better solution for the need to fund individual specific treatments that haven't been widely approved.

</comment></comment></comment></comment></comment></comment><comment><USER19> This is a very good background on the wider causes of this referendum taking place – nice to see.

It's going to be very interesting to see what happens to the UK post- referendum, regardless of what way the vote goes.

</comment><comment><USER20> The worst outcome is increasingly looking like what will actually materialise: a narrow margin.

It doesn't matter who wins, if either side does not win with at least 60% of the electorate, it's going to undermine their position going forward. We could see Referendum v2.0 in 2-10 years, quite easily.

Nobody on either side wants that, but it's starting to feel inevitable.

<comment><USER21> Indeed. I can't see the rest of the country being happy with a limbo that ends up giving Scotland ever more powers in order to prevent a by then meaningless "No" in the next round while they all live in statusquoville. Combined with the apparent rise of UKIP the situation is all looking to be a bit of a mess.

The SNP may have successfully engineered the divisive conditions that the Parti Quebecois never quite managed, with the PQ example being that the uncertainty is almost more damaging than what is being debated.

</comment></comment><comment><USER22> Tangent to the Decision per se: that article is a really beautiful presentation, to my eyes. The implementation isn't perfect -- e.g., there's a bunch of low-hanging WPO fruit -- but on a good browser (Chrome 37 / OSX 10.9.4 / 1920x1200) and a fast connection, the UX is fantastic. IMHO. :)

</comment><comment><USER23> I'm curious, what view does BBC generally express on the matter?

<comment><USER24> BBC cannot express any view on that matter. It's bipartisan and will only report facts.

<comment><USER25> Actually it is not bipartisan; it is required to be neutral, regardless how how many political parties (or political / economic ideologies) there are.

<comment><USER24> Alright, that's what I actually meant when I said bipartisan - that it does not support any parties by definition. I know, wrong word.</comment></comment></comment></comment>


2016 Rust Commercial User Survey Results - <AUTHOR> https://internals.rust-lang.org/t/2016-rust-commercial-user-survey-results/4317 <comment><USER2> From the article: _"...fourteen companies responded to our outreach"_

That's not a survey, that's a focus group.

I'm impressed with Rust. The borrow checker is the biggest advance in memory safety since garbage collection.

But there's a lot about Rust that's unnecessarily weird.

\- The type system is unusual, and complex. It's hard to do anything without templates.

\- The template libraries are heavily biased towards closure-oriented functional programming. This is cool, but hard to read. Parts of expressions are nameless and have no visible type. This is terse but hard to maintain.

\- The hacks needed to avoid the need for exceptions are uglier than exceptions.

This creates major obstacles to adoption. Unlike the borrow checker, none of these things are clearly improvements. They're just different.

I would have gone for Python-type exceptions rather than error enums and macros, single-inheritance OOP rather than traits, and Python-type with clauses rather than RAII.

<comment><USER3> _The hacks needed to avoid the need for exceptions are uglier than exceptions._

I felt like this when I read the scary documentation: [https://doc.rust- lang.org/book/error-handling.html](https://doc.rust-lang.org/book/error- handling.html)

However, in the total 4 hours or so that I have been programming in rust the way of handling errors seems very sensible.

\- Match expressions instead of "if (error) dosomething()"

\- Match expressions with destructuring gives the error message.

\- Match expressions are exhaustive which forces errors to be checked.

Its simple and elegant. I think the documentation is a little overwhelming when it comes to error checking and introduces non-essential craziness without warning.

<comment><USER2> Rust now has not just "panic", but "panic::recover", with unwinding. That's an exception system. It's just one with weak syntax and semantics. Go went down this route, too. In the beginning, Go errors were fatal. Then the Go crowd added "recover". With unwinding. Both languages now have the heavy machinery for exceptions without full language support for them. The discussions of this on Rust mailing lists show much unhappiness with the situation.

If you don't put in exceptions, you seem to end up re-inventing "longjmp".

<comment><USER4> Panic recovery and panics can be disabled, and often are. Libraries are not supposed to rely on their existence. Thus these are not a form of exceptions ; they can't be used as such.

Their purpose is to recover from panics when embedding Rust in code written in other languages, where you don't want the panic to try and cross the ffi boundary (or to stop applications that should _never_ crash from crashing at the toplevel, or for better reporting before a crash). Many FFI-based applications turn panics into aborts anyway. Firefox does.

The unwind-recovery functionality in Rust is just enough to get you these useful features _if you need them_ (zero cost if you don't; turn them into aborts), without needing a full on exception system. The reason Rust avoids an exception system isn't the cost of unwinding, it's because it considers exceptions to be an inferior pattern compared to return value based / monadic error handling.

Rust doesn't have a mailing list anymore. I haven't seen much annoyance with panic recovery. There used to be some with panics in general because in the past they couldn't be turned off or recovered from without a new thread, but this has been addressed for ages with panic=abort and recovery. What the hell are you talking about?

</comment></comment></comment></comment><comment><USER5> I'm using it commercially, though wasn't asked in the survey. I've had zero crash causing failures in production with a web interfaced analytics pipeline service I wrote. It just sits there, with its 10's of gigabytes of data running day in day out... handling millions of events every day, crunching business vital numbers. Best thing ever.

<comment><USER6> Similar story here. Been using Rust in production for only a couple of weeks for a financial analytics pipeline processing billions of events per day and TBs of data, but absolutely no issues so far. The predictable performance of Rust has been wonderful to observe, compared to GC'ed languages this iteration of the pipeline has replaced (JVM, Go). The type system makes otherwise daring refactorings a joy.

<comment><USER4> -> [https://news.ycombinator.com/item?id=12877334](https://news.ycombinator.com/item?id=12877334) :)

<comment><USER6> Will ask employer for approval :)

</comment></comment></comment></comment><comment><USER7> Can't argue with anything in that list.

I think it would also be useful to survey people who looked into using Rust but decided against using it, as responses from people who suffered through the warts is analogous to looking at the damage to bombers that made it back to base. Still relevant, but not the whole picture.

I'd expect to see mobile/cross-compilation (which I know is getting better) to rank pretty high among people who didn't stick with it, but maybe I'm projecting.

<comment><USER8> There's some coverage of the "why I chose not to use Rust" in the Rust community survey that happened earlier this year: [https://blog.rust- lang.org/2016/06/30/State-of-Rust-Survey-2...](https://blog.rust- lang.org/2016/06/30/State-of-Rust-Survey-2016.html)

</comment></comment><comment><USER9> What I would be interested in is how these companies use Rust in their stack and what kind of problems they can solve. I suppose not every company can divulge this information but it would be awesome to know where Rust fits in for them.

<comment><USER10> [https://www.rust-lang.org/en-US/friends.html](https://www.rust-lang.org/en- US/friends.html) has a single sentence version of this kind of thing.

<comment><USER11> Lots of those sentences also link to posts with more extensive experience reports.

</comment></comment></comment><comment><USER12> > We received a resounding response to continue investing in building strong > IDE tools. IDE tools in a commercial setting help teams coordinate their > efforts by making it easier to navigate unfamiliar code, on-board new users, > and streamline the development process.

I cannot wait. I cannot wait until this happens. Rust will become my main language.

<comment><USER13> This is one of the key things preventing us from moving to Rust. Yeah, I love vim but on a very large codebase an IDE just helps you keep everything much more organized and productive.

Moreover, moving to Rust would require investing in ports of some large-ish C++ libraries we use.

I think Rust is here to stay. It's a great language without a runtime that should be able to match C++ in performance when the compiler frontends catch up.

We'll start using it in some new projects but I doubt we'll port critical infrastructure for a few years.

<comment><USER14> Which IDEs matter to you? We're actively working on it.

<comment><USER15> Not the poster you were replying to, but Eclipse here. I'd definitely want a great Rust plugin for Eclipse if I were going to invest heavily in Rust.

<comment><USER14> Cool! [http://rustdt.github.io/](http://rustdt.github.io/) exists but I've never used it.

</comment></comment></comment></comment></comment><comment><USER16> Great to see Rust gaining a foothold in commercial areas.

While by no means a perfect language, I enjoy it much more than writing C++.

<comment><USER17> Why do you specifically _enjoy it_ more than C++? As far as I know, the main goal of Rust is to be _safer_ than C++, not more enjoyable to write.

<comment><USER18> Long time C++ programmer here.

I specifically like the immutable-by-default, borrow, and move semantics. I can write safe code without bloating up my source with 'const &', std::move, '&& ...' and the like.

The safety issue for me is about the least important thing. Touting it as the big reason to use Rust is a distraction from my point of view.

<comment><USER19> > The safety issue for me is about the least important thing.

For real. Rust is a great language, but for the love of god, all you hear is safety safety safety. I give about 2 out of 10 fs about safety. The worst part of C++? Dependency management. Cargo is sick -- hype that up more!

<comment><USER20> > The worst part of C++?

The worst part is people using it as if it was C with a C++ compiler.

I lost count the amount of times I had to create a nice C++ wrapper for "C++" libraries that are just a pile of C functions and data structures, due to copy-paste compatibility.

And yes, the respective lack of safety by not making use of C++ improved type system and standard library.

</comment></comment></comment></comment></comment><comment><USER21> This wasn't one of the question of the survey, but while having the right crowd around, I have to ask.

When will Rust get

1\. function head patterns like other languages in the ML family, although Rust isn't really part of the family, but rather a distant cousin from another continent, which once played with ML and family during a summer vacation

2\. support for naturally writing recursive functions

<comment><USER4> > Rust isn't really part of the family, but rather a distant cousin from > another continent, which once played with ML and family during a summer > vacation

It's actually more of a sibling in the family who ran away from home at the age of 6 and fell in with the crowd on the wrong side of the tracks.

Initially Rust was very much like ocaml. It isn't anymore :) Many of the normally-in-functional-languages features in Rust come from these days. Others were lost and re-added later. It's a very complex history.

> function head patterns like other languages in the ML family

could you elaborate? I'm not familiar with this feature (only have dabbled in sml).

> support for naturally writing recursive functions

yeah, I wish we had TCO.

<comment><USER21> > It's actually more of a sibling in the family who ran away from home at the > age of 6 and fell in with the crowd on the wrong side of the tracks.

> Initially Rust was very much like ocaml. It isn't anymore :) Many of the > normally-in-functional-languages features in Rust come from these days. > Others were lost and re-added later. It's a very complex history.

Yeah, having tried Rust in those days, I kinda stopped when it broke every week, and was then surprised with the surface of 1.0. It seemed like a different person to talk to.

I've made my peace with the C'ification of Rust as the price to pay for attracting a large crowd of developers who grew up with C, C++, C#, Java, JavaScript, Ruby, Python, the list goes on. It's a reasonable sacrifice to make, but the two mentioned basic features aren't complex things to wish for.

> could you elaborate? I'm not familiar with this feature (only have dabbled > in sml).

Imagine being able to hoist your match clauses into function head (signature?).

      oldEnoughToDrink :: Int -> Boolean
      oldEnoughToDrink 21 -> True
      oldEnoughToDrink _  -> False

Not all languages with support for that force you to repeat the function name, and there are good arguments for/against. For example in Erlang, when you define an anonymous function, you do not repeat it:

      OldEnough = fun(21) -> true;
                     (_)  -> false
                  end,

Now, this may seem like a stupid little feature, but trust me when I say it's a natural feature to use like recursive functions after you're used to it.

<comment><USER4> Oh, yeah, I see what you mean by function head patterns. I'm aware of the coding pattern from Haskell, just didn't know the name :)

I don't think Rust will get support for that. You can simulate it with macros (and, later, syntax extensions). Of course, that isn't as clean as pure language support. I know why it makes recursion (esp tail recursion) easier to use though. You could always bring it up on the forums and try though.

<comment><USER21> 1 and 2 go hand in hand in recursive functions, but 1 is useful without.

Say you have a function that should will tell you a file extension is likely to be that of a text file:

      isTxt("txt") -> true;
      isTxt("org") -> true;
      isTxt(_)     -> false.

With a more comfortable syntax, this can be expressed more concisely, but I just wanted to show that this isn't only useful for recursive functions.

If Rust is planned to get HKT, then I don't see why I cannot get pattern matching in function heads when there's also guards as found in ML languages.

<comment><USER4> > I just wanted to show that this isn't only useful for recursive functions.

Oh, I know that it's useful; I've used it in Haskell often. And the `fn foo (x) { match x {}}` pattern isn't uncommon in Rust.

> If Rust is planned to get HKT then I don't see why I cannot get pattern > matching in function heads when there's also guards as found in ML > languages.

The HKT proposal logically extends existing associated types syntax so that you effectively have HKT. It's particularly elegant in that it's something folks (who are unaware of what HKT is) on learning about associated types _expect_ associated types to support. I've had folks ask countless times as to why you can't `type Foo<T>` in an associated type.

It also opens up access to patterns that weren't possible in the past.

OTOH function heads would just be sugar for fn + match. It doesn't open up new possibilities, it just makes some patterns easier to type. And frankly, with blocks being expressions, it's not much easier to type. You have to provide the function signature somehow, and it's there. The match arms are also there in both the Rust and haskell versions. The only thing exclusive to the Rust version is that you need to explicitly say `match`. Meh.

Languages have a "complexity budget" \-- spend too much of it and folks won't learn your language because it's too complex. Rust has spent a lot of it on the borrow checker. Adding random bits of syntax spends this budget, and you need a compelling reason to do so. This is why I'm quite fond of the current HKT proposal -- I'd always thought HKT in Rust was pie-in-the-sky, but the current proposal ends up with a very unsurprising and natural-looking syntax (and doesn't feel "new"), which makes me think that it has a good chance of succeeding.

If you can come up with a good proposal for function heads, who knows, it might happen! But it will have to be good; I don't think just proposing function heads without tons of justification and/or a syntax that fits in naturally will work.

</comment></comment></comment></comment></comment></comment><comment><USER22> I'd love to see a survey talking about what bugs get actually solved by using one of these modern languages like Rust or Swift, since i personally never once in my career had a bug that wouldn't have happened if i used const, let alone any of the many other annoying Rust features.

For a "systems programming language", Rust doesn't let you do anything i'd expect, like let you specify whether a signed integer is 2s compliment, and how it behaves when it wraps. Instead the programmer is at the whim of the compiler writer, same as in C, and its "undefined behaviour" which is a source of real, hard to track bugs. Rust doesn't even have support for modern features like wide registers, or any features that help you deal with raw memory, it just marks it as "unsafe". There aren't even any basic meta programming features like struct introspection.

What problems does Rust actually solve that C and its copycats have been suffering from since the 70s.

<comment><USER18> I'm sorry, I have plenty of gripes about the Rust team touting safety as much as they do but your comment just misses the mark, in my opinion.

To begin with, "safety" isn't solved by just using const. It simply isn't feasible to write safe code in C without restricted feature usage to the point of being crippled. It's much easier in C++, but requires an incredible level of focus and "cruft constructs" like ' 'const &' and such. Arguably until move semantics were standardized with C++11 it was a challenge to write safe code.

I will agree that Rust's developers have perhaps come down too far on the side of "YOU ARE DOING SOMETHING DANGEROUS BY USING A POINTER." But I think you're exaggerating a bit about how hard it is.

<comment><USER22> My point was that i haven't come across a Rust feature i felt would save me from creating a bug.

<comment><USER4> Rust isn't a panacea, nor does it claim to be. It doesn't prevent bugs. It prevents memory safety bugs.

<comment><USER18> > nor does it claim to be.

"It" doesn't do anything. But some of its fans conflate "prevents memory safety bugs" with "panacea", at least by implication, as I perceive it.

Besides, right now a lot of the "memory safety" of Rust has much more to do with selection bias (it is used primarily by people who are explicitly interested in using its safety features). When one uses exclusively (or almost exclusively) the "memory safe" features of the language, of course things implemented in it will be free of "memory safety" bugs. Rust helps make doing unsafe things explicit. It doesn't prevent one from doing unsafe things.

Here's how I see Rust: it's far and away already superior than C++ for a certain class of systems application programming (e.g. performant desktop/native application code that sits at the systems boundary). Rust code that seriously competes with C or C++ for "low level" systems programming is going to have to make use of plenty of Rust's "unsafe" constructs. If it gains traction "in the wild," my prediction is we'll start seeing plenty of "memory safety" bugs in that area. The question then is how easily they're spotted and rectified.

<comment><USER4> > But some of its fans conflate "prevents memory safety bugs" with "panacea", > at least by implication, as I perceive it.

While you may be right, I have never seen this happening (and I participate a lot in online discussions about Rust); people seem to be very careful about saying that Rust prevents memory safety bugs, not bugs in general. People do say that the type system _helps_ prevent general bugs, but that's only to the extent that any similar or more powerful type system (Haskell, xML, etc) can.

> Rust helps make doing unsafe things explicit. It doesn't prevent one from > doing unsafe things.

I mean, yeah. No language can (unless it avoids FFI entirely). See [https://news.ycombinator.com/item?id=12877136](https://news.ycombinator.com/item?id=12877136)

Rust gives you the tools to prevent yourself from doing unsafe things (and still be able to write software).

You can get a lot of stuff done in safe Rust. When you need to drop down to unsafe Rust, you can design safe abstractions around the unsafe code, and manually verify the safety of the abstraction. This has a human component, so it's not _perfect_ , but it's pretty close :)

The unsafe feature isn't just there for explicitness, it is designed to provide the ability to do this -- the ability to design safe abstractions.

> for "low level" systems programming is going to have to make use of plenty > of Rust's "unsafe" constructs.

Designing an operating system low level enough? There are a bunch of initiatives to write an OS (both serious and as a learning project) in Rust. As far as I've seen, all of them avoid unsafe code like the plague and design safe abstractions around everything so that they only need a smattering of unsafe code. os.phil-opp.com has a bunch of blog posts on OS design in Rust, some of which explicitly demonstrate this pattern (e.g. the page table one).

When you say "When one uses exclusively (or almost exclusively) the "memory safe" features of the language", you're talking about basically the entire target audience of Rust, and this _includes_ low level users. Rust isn't supposed to be used with lots of unsafe everywhere; and folks have tried hard to make it so that this isn't necessary even for low level applications (the Zinc project, while no longer maintained, is an example of this for embedded software). Of course there are areas where you'll be using more unsafe code than others, but you're still supposed to be "almost exclusively" using safe Rust code. If you need unsafe everywhere for your low level application then that's something you should bring up with the Rust community. (To be clear, the Rust ecosystem and language _right now_ has some issues that crop up in low level development, but these are being worked on)

In fact, there is only one place where I've seen unsafe code being sprinkled around liberally, and that's when binding to a C/++ library. Currently my job involves a lot of this, and I'm trying to make it safer (largely succeeding!), but it's still has a higher density of unsafe code than, say, Phil's Rust OS (or I think Redox, but I haven't looked at that in a while). In this case, though, you're already talking to C/++ and there's inherent unsafety there (plus an impedance mismatch), so you can't always blame Rust for it :)

\</comment></comment></comment></comment></comment></comment><comment>

I guess you're right that "Rust prevents memory safety issues" isn't 100% accurate because `unsafe` exists. "Rust gives you the tools to prevent memory safety issues" might be more accurate, but still misses nuance. I think for a soundbyte on Rust it's accurate enough to say (because it prevents these issues more or less as much as possible without being useless for writing software), but it's a caveat that we should probably mention more.</comment>


Barcelona's Sagrada Familia agrees to deal over lack of building permit - <AUTHOR> https://www.bbc.com/news/world-europe-45906155?fbclid=IwAR1oCjmO-jrzIt5RumH6XmHY_m7LdKE3SXfpY4VnmEs5w4jcN-JP2H8w1rc&__twitter_impression=true <comment><USER2> The most marvelous thing about the Sagrada Familia (okay, second to how insanely beautiful it is for a Catholic cathedral) is the ticketing system: There are almost no lines to get in.

Every ticket you buy has a time and day- a 15 minutes period in which you may enter. And there are a limited number of tickets per 15-minute period.

This does mean you have to plan your visit ahead by a day or two, but you'll be rewarded with not needing to line up for more than a few minutes.

Operationally, the management have an exact steady stream of visitors from open to close, so staffing can be just as even, which I can only imagine reduces costs. And management can also tell if they've priced entry correctly by seeing if they have open spots all week or having three weeks' backlog sold out.

Could we please do this for everything that has a line up? It's a wonderful system.

<comment><USER3> OTOH visitors who discover it will be unable to explore it. Seems like a tradeoff.

<comment><USER4> that's like "discovering" the eiffel tower, it's not like you're stumbling into an unexplored land

<comment><USER5> There's (at least one) order of magnitude difference in popularity between the two. I don't think the average American could name the Sagrada Familia from a picture of it, for instance. For me, when I travel, sometimes I don't really look up what there is to see/do in a city until I'm there. When I landed in Barcelona, I didn't know what the Sagrada Familia was.

<comment><USER6> Sure it's a tradeoff. But also consider, like the eiffel tower, both are large architectural installations with beauty one can marvel from a distance. No ticket needed. Haven't had your fill from the outside views, and want a deeper look, you'll probably go back home/hotel and look it up, learn a bunch about Gaudi on wikipedia, find out you can book tickets online. Get them, a couple of days later you can go back and explore the inside, and find that everyone there seems to be a little knowledgeable about Gaudi, and there are no lines, since there are no walk-ins.

</comment></comment></comment></comment></comment><comment><USER7> This seems absolutely insane, maybe someone can provide more context. Looks like a leftist government money grab to me.

How much tourism revenue does 4.5 million visitors annually bring the city of Barcelona? What other famous national landmarks (likely Church-owned) in Spain can be retroactively fined for being constructed without a building permit?

<comment><USER8> If you attract 4.5 million tourists a year and charge admission your "nonprofit" label is a bit of a joke.

I don't buy the argument about bringing in other tax revenue by association. "Everybody else" shouldn't be subsidizing infrastructure for the most attractive place in town just because it's the most attractive place... those people are probably working harder and taking more risks, they shouldn't have to foot the bill for the group profiting the most. (see also, sports stadiums)

<comment><USER9> > If you attract 4.5 million tourists a year and charge admission your > "nonprofit" label is a bit of a joke.

If you don't charge for admissions then there is no way to moderate how many people visit the site, and you start to create a lot of problems just to deal with the massive influx of people.

> I don't buy the argument about bringing in other tax revenue by association. > "Everybody else" shouldn't be subsidizing infrastructure for the most > attractive place in town just because it's the most attractive place...

If you ever visit the Sagrada Familia you'll notice that the blocks surrounding the cathedral are packed with businesses living off the cathedral's popularity.

Even FC Barcelona and Nike have official stores right next to the front entrance.

It is rather obvious that the cathedral is a huge profit source for the city and a lot of companies, not counting the typical tourism and HORECA businesses. Insinuating that the Sagrada Familia is leechng off the poor government's goodwill is simply wrong and the exact opposite of the truth.

<comment><USER8> What? You don't need to charge for admission to rate limit.

Just give out a fixed number of free tickets.

I don't have a problem at all with selling admission tickets, but maybe if you have millions of visitors a little bit of the money you get from them which you use to maintain your own premises and employees can also go to maintain the roads and police and schools just like everybody else.

Nonprofits can be great, but there gets to be a level with so much money that the value to society of not taxing seems lost.

<comment><USER9> > What? You don't need to charge for admission to rate limit.

That's your opinion, and one that is based on your personal assumption that no fee should be charged for admission.

> Just give out a fixed number of free tickets.

That's a effective way to generate a profitable ticket scalping network for criminal organizations. Is that your notion of a better outcome?

> I don't have a problem at all with selling admission tickets, but maybe if > you have millions of visitors a little bit of the money you get from them > which you use to maintain your own premises and employees can also go to > maintain the roads and police and schools just like everybody else.

For some reason you've assumed that directly or indirectly absolutely zero money goes into those populist cliches.

</comment></comment></comment></comment></comment><comment><USER10> Serious question: were building permits required in Barcelona at the time construction began?

(Side comment not worth its own response to others' posts: the church is not technically a cathedral—ie the seat of the local bishop—but rather a basilica.)

<comment><USER6> That would be surprising judging from some of the the pictures from the early 1900s

[https://bit.ly/2EyDkEt](https://bit.ly/2EyDkEt)

[https://i.pinimg.com/originals/06/4a/1d/064a1d213e4c75d4d48d...](https://i.pinimg.com/originals/06/4a/1d/064a1d213e4c75d4d48d37ab15b8df32.jpg)

</comment></comment><comment><USER11> This looks to be a way for the city to coerce some money from an organization, and which fits into an existing bureaucratic process, giving it the patina of legitimacy.

It is a bit surprising that the cathedral didn't just immediately stop construction and close down access with a big sign saying what was going on. After all, its all about complying with the law and all. They could have even started making plans to move the cathedral to a different site with all the proper permits and everything. The city would have caved for sure.

If you're not willing to go to the mat, you'll always get taken advantage of.

</comment><comment><USER12> If this were in the United Kingdom, the local council would insist the building be torn down.

</comment><comment><USER13> What's the point of getting building permit if you can build whatever you want anyway?

</comment><comment><USER14> Isn't it ironic that what Gaudi intended to be a monument to God has become a monument to Gaudi?

<comment><USER15> Cathedral building has always been about temporal prestige, with patrons, cardinals, cities, and nations competing to build the most elaborate house of worship. There's no unexpected element in your claim, therefore it is not ironic.</comment></comment>


Academics posting their papers online in tribute to Aaron Swartz - <AUTHOR> http://sciencecitizen.org/?p=219 <comment><USER2> From the webcache: [http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fsciencecitizen.org%2F%3Fp%3D219&oq=cache%3A&aqs=chrome.2.57j58j59l3j62.2860&sourceid=chrome&ie=UTF-8)

>>>

Aaron was an activist, a champion, and a really smart guy who worked on things he really cared about. So much has been said about his life, his death, and his fight for research open access — and I'm glad to be part of this conversation. I'm very glad to have helped Eva Vivalt (@evavivalt) start the #pdftribute movement, to spread the word about putting academic papers online for #openaccess.

Late last night, I noticed that Eva was opening access to her papers online in tribute to the memory of Aaron Swartz. I tweeted to some people I know in Silicon Valley, and to some friends of Aaron's, and then Anonymous picked it up — and we've now had millions of impressions and over 500 tweets per hour.

This is something we can do for the memory of Aaron Swartz, and to lead the way toward more access to the scientific process for everyone. As Eva says:

Where will this go? Well, maybe someone can scrape the pdfs together into a repository. Maybe #pdftribute can be a pledge to avoid paywalls in the future. Maybe we can push journals for more change. JSTOR's gradual opening has been heartening, but there is still more to do.

</comment><comment><USER3> It's a nice sentiment, but thanks to the Open Access movement, most recently published papers are already available online somewhere, and the people talking about #pdftribute are the people most likely to have _already_ shared their papers. Important historical papers, even those that are now public domain, are still behind paywalls. As Aaron said, "even under the best scenarios, their work will only apply to things published in the future. Everything up until now will have been lost." [1]

Sharing your own papers is nice, but it's also safe. It's not really challenging the status quo.

[1] <http://pastebin.com/raw.php?i=cefxMVAy>

Edit: I overstated my point. I don't know that "most" papers are already available; it certainly varies a lot by field. I kind of doubt that many #pdftributers are people that weren't previously sharing their papers, though.

<comment><USER4> That is not true. I work in neuroscience and often find myself not having access to "just released" papers. Some of them may appear as preprints months later, if the author bothers to do so. I 've tried to email authors for copies a few times with no response. Even my institution doesn't provide access to all the journals we need (probably the situation is different in the US). There are actually underground websites for searching paywalled journals through proxies.

TBH, historic papers are not that interesting anymore, since the most important ones are cited in more recent research. It's the cutting edge research where it's more annoying. What's more important though is that closed-access is depriving science of the ability to use automated tools for textual analysis. I hope this unfortunate event will motivate more people to realize that having unrestricted access to scientific results is an extremely important issue.

<comment><USER5> I am in astronomy and it is common practice to post papers on arxiv.org. Because of the need for journal subscriptions and the time it takes for papers to be published, this has become the primary way we keep up with the field. I would say this has revolutionized math and the physical sciences.

Perhaps one of the reasons for the difference between fields is that, at least in astronomy, our journals are supported by the professional societies, like the American Astronomical Society, and not run explicitly for profit.

I should also add that in astronomy, the authors pay a significant amount of to the journal when a paper is published. It is usually in the range of about $100 per page.

<comment><USER4> Exactly. Arxiv is a revolutionary thing for math, physics, CS etc. Good luck getting life scientists to put their precious papers there. Most don't even pay the open access fee when the journal provides it.

</comment></comment></comment></comment><comment><USER6> > Late last night, I noticed that Eva was opening access to her papers online > in tribute to the memory of Aaron Swartz.

That's good, but why didn't she offer them on her webpage before that? At least in the natural sciences, that is quite common now. The ArXiv is also a very popular option by now that is accepted by most journals.

For a few months now, started by a blog post of Timothy Gowers, a large group of researchers has been pushing for reform too, and in particular has been pressuring Elsevier into making their content more accessible: <http://thecostofknowledge.com/> .

</comment><comment><USER7> You know what would (probably) really be a tribute to Aaron Swartz?

Run a Tor exit node in an academic network that is blessed by JSTOR, Springer, etc.

Make a website that surveys which exit nodes are in these blessed networks and turns any URL for a paywall into a rendering using that exit node to access the paywall.

Let professors, students, and staff stand with Aaron by running exit nodes that are configured to only connect to paywalls on their systems.

<comment><USER8>
        > Run a Tor exit node in an academic network that is
        > blessed by JSTOR, Springer, etc.

I like this plan. But what should the school do when Elsevier cuts them off? Maybe we need moles in the publishing companies themselves.

<comment><USER9> > _But what should the school do when Elsevier cuts them off?_

Get more schools to do it. Get as many schools as possible to do it. How many schools would Elsevier be willing to cut off just to stop a few technically proficient users without university affiliations from accessing their stuff for free?

<comment><USER8> <https://groups.google.com/group/science-liberation-front>

</comment></comment></comment></comment><comment><USER10> Academics should already be doing this as a matter of course. If they'd like to actually show tribute to Aaron, they should:

1\. Find seminal and survey papers from their fields that are unavailable on Google/Citeseer/etc, whose authors are dead/moved on/unfazed by the Internet/etc.

2\. Download digital versions of these papers through their institutional access, or scan in paper copies if necessary.

3\. Post them on their personal website with appropriate titling (especially important for papers that have been through scanning) such that they will show up in search engines.

<comment><USER11> I've been doing this on and off, and encouraging some colleagues to do so as well. You can't mass-upload a ton of articles without attracting unwanted attention, but you can throw up a few interesting articles in unsecured directories. People do it accidentally all the time (Google Scholar finds lots of stuff from course wikis and accidentally open directory listings and such), so you could do it "accidentally" as well.

It's also a minor way to have some influence on what gets read and cited. A lot of academics have a favorite classic paper they feel is unjustly underappreciated in their field. Why not put it online? Getting the paper into Citeseer and Google Scholar, where someone might stumble across it, is a small way to help promote underappreciated work. An underappreciated paper nobody can find is going to stay underappreciated!

</comment></comment><comment><USER12> As seems typical for popular Twitter hashtags, it's mostly just people discussing the hashtag itself and relatively few links to papers.

<comment><USER2> I think until a system has been built up to manage this process, any postings will be more symbolic (as tribute) than of practical value. However, that's not to say that someone will see the need for something like this and build it. The inspiration has to start somewhere.

</comment></comment><comment><USER13> Honest question: why don't researchers normally do this? Those in the software development do this all the time: set up a tumblr/Wordpress/whatever blog and publish our findings. If I had a dime for every time I saw an article about some benchmark of tech X vs Y...

If every research lab ran a blog-type setup where they published their findings (along with any other updates), the whole field could be revolutionized. The general public would have much more direct access to what the researchers are working on. We could even add the ability to donate to the researchers directly. This would hopefully foster collaboration as well. Instead of waiting for someone to come out with a paper to find out what they've been up to (unless you have a very close relationship with the particular researcher), you can just read their tweet/blog post/etc a la "tried sample X, results negative, but this is weird..."

Combined with a research semantic markup (think OpenGraph but for scientific concepts), this could be linked into searchable databases. Peer review could be built in, maybe even via public key crypto: "this article is signed by 17 trusted researchers".

This saves everyone money: no more having to subscribe to expensive research publications. You could have for-hire scientific editors built in as a service too. Every time you publish a paper you run it by an editor, but the editor now works for you; or you don't, and you just publish the paper and let the world decide if it is any good.

The platform itself would probably have to be fairly extensive. We would want it to be distributed so that anyone can run their own system if they choose. We'd also want to have some more centralized hubs of this type, analogous to GitHub/Bitbucket. These might include easy access to for-hire editors, Tex/LaTex support, etc. There should also be a default license for the content. Perhaps an extension of Creative Commons but with specific provisions for the peculiarities of this field.

My premise here is that while there is a whole lot of institutions that attempt to enable collaboration, they do often just get in the way. However, from what I've seen of researchers, they have the same mentality as the software developers: they want to share their findings with the largest possible audience and don't really care about much else. I think if it was easy to do this type of setup many would go along with it. What do others think?

Edit: a nice side-effect of this could be that you don't have to be associated with an academic institution to publish. Currently, I could learn, say, all there is to know about quantum physics by reading all sorts of publications and material that is more or less freely available. I could then theoretically come up with something brand new, but couldn't get my voice heard since I am not a research professor at an institution. However, with this system graduates of the likes of the Khan Academy could have the same access to publishing and peer review.

<comment><USER6> They do! Or at least they are starting to. At least in physics/math in my experience most people have a personal homepage that they post their papers to, and also upload them on ArXiv. There is some complication with regards to copyright, because to publish in a journal you usually need to assign the exclusive rights to them. Nowadays most journals have realized the need for authors to post their papers on personal homepages and e-print services like the ArXiv, so that this is no big deal in practice.

There are still problems: 1.) Usually old papers are not available via this route. If you email the author and ask nicely he will usually send it to, but at least in pure mathematics one quite common wants to look up really old articles, say from the 1950s, and those are the ones that are terribly hard to come by, because they are often only available behind a paywall like JSTOR.

2.) Currently "prestige" and peer review is handled through the journal system: Authors send their papers to a journal for publication, other scientists review them (for free), and then the paper gets published (or not). Afterwards publishing houses, who add little value to the process, force libraries to pay horrendous amounts of money to get access to these journals (usually through selling bundles).

At the moment there are efforts underway to pleasure publishers into a saner pricing structure, and there are now some open access journals where usually the author pays once (if at all) and then it is free to read for everyone.

Many people also consider more radical approaches, for example, making journals simply be ArXiv overlays that point to a set of papers on the ArXiv. I have even heard suggestion of replacing peer review, at least partially, by an open review system like you suggest, and some journals have experimented with it, but it does not seem to have a lot of consensus behind it at the moment. But this is in a way orthogonal to the problem of making research available to as many people as possible.

The problem with the very radical change that you suggest, i.e., using blogs instead of research papers, is that peer reviewed papers have proven their worth over a long period of time. It is doubtful whether simple blog posts would guarantee a similar quality over a long period of time. My personal feeling is that there would be a lot of noise and incorrect stuff drowning out the important stuff.

With regards to your edit: If you submit a paper that seems to be serious research to a journal, it will be reviewed, and if it holds up, eventually published. If the paper is decent, you'll be able get it published without being associated to an academic institution (at least in mathematics, can't speak for other fields).

<comment><USER13> Thanks for the detailed response. Just one clarification: I am not suggesting using just pure blog posts, but rather publishing properly formatted papers using a self-hosted publishing system a la Wordpress. Blog posts may or may not be added in order to promote the content.

It seems like the real issue here is prestige, which then translates to funding. "Publish or die" is how most researchers seem to live. Thus I think if we are able to show that self-publishing/distributed publishing brings the money to the researcher and the academic institution then this idea would get traction.

Re: edit. I see. That's great to know.

<comment><USER6> Ah, I see. I would still prefer the papers to also be hosted on a more reliable system (for example, the ArXiV, or an electronic journals website), simply because they become easier to discover this way and there is a certain assurance that they will stay online.

I think that Terrence Tao <https://terrytao.wordpress.com/>) has an interesting take on using blogs for math: He publishes in journals, but uses his blog to post lecture notes as well as short summaries of some of his papers.

But then this is not so different from a typical academics homepage: Usually you will find a list of publications (hopefully with PDFs, at least for the newer ones) and lecture notes there. But of course it differs for each author, and perhaps other fields have different conventions.

<comment><USER13> I think if the license was open enough a the paper could be hosted in multiple locations. Once again, there is already a precedent for this: when you publish anything on a blog you send a "ping" to Google, Yahoo, Bing, etc. to re-crawl your site since you added new content. Your post ends up in the Google Cache, Coral Cache, etc. I think a system that would proactively tell ArXiv "hey a new paper is published!" or "hey a paper has been peer-reviewed and approved by X via their GPG signature!" could solve the issue you are seeing.

> But of course it differs for each author, and perhaps other fields have > different conventions.

I think this is also spot on. The research lab where I worked was a collaboration between the Physics and Chemistry departments. The technology used by the two chief researchers was radically different, despite having worked together for decades. For example, my professor and his sub-group (Physics) used LaTex to typeset all his papers. The Chemistry professor and his sub-group, OTOH used Microsoft Word. From what I understood that was pretty common for the respective fields. So much opportunity here as well as so much resistance in just these types of issues...

<comment><USER14> I like the gpg signature of peer reviewers part. It would both lend credibility to the paper, and leave a trail of reviewers. It would lessen the chance of a reviwer not taking their job seriously.

</comment></comment></comment></comment></comment></comment><comment><USER15> I think it is time for someone create an online repository where people can upload their scientific/research papers. Many top-scientist will continue to publish their manuscripts in closed-access journals to maintain their academic status. However, I also believe many of these same men & women would also quietly upload their papers to publicly available repositories.

<comment><USER16> This is the arXiv (arxiv.org). Science only, though.

</comment></comment><comment><USER17> Okay, I reposted the final post at my website, <http://www.jessicarichman.com/science-citizen.html>. Thanks for your patience!

</comment><comment><USER18> [https://twitter.com/search?q=%23pdftribute&src=typd](https://twitter.com/search?q=%23pdftribute&src=typd)

</comment><comment><USER19> Has anybody upvoting this actually read the article? It is just a database error for me. (originally tried to read it at around 9 points).

<comment><AUTHOR> The article was just an elaborate summary on the title by @venturejessica

It was working at the time I posted and even 2 minutes ago but I am getting a "Database Error" just like you. Here's another link which confirms the title of the article - - <https://twitter.com/YourAnonNews/status/290387879602032640>. If appropriate, I can edit to change the link on the submission.

Please advice, thanks.

<comment><USER17> We are working to bring it back up. Give me another 30 mins or so. If not, we can link to the cache.

<comment><USER17> Okay, reposted on my website at <http://www.jessicarichman.com/science- citizen.html>. Thanks for being patient.

<comment><USER17> Link should be back up. Thanks so much!

</comment></comment></comment></comment></comment><comment><USER17> Sorry for the site issues -- please do read the cache below. And support #pdftribute and #openaccess!

<comment><USER17> Here's a full reprint for those who have trouble accessing.

Our tribute to Aaron Swartz – #pdftribute January 13, 2013

Aaron was an activist, a champion, and an incredibly smart guy who worked on things he really cared about. So much has been said about his life, his death, and his fight for research open access — and I'm glad to be part of this conversation.

Late last night, I noticed that @evavivalt was opening access to her papers online in tribute to the memory of Aaron Swartz. I tweeted to some people I know in Silicon Valley, and to some friends of Aaron's, and then Anonymous picked it up — and it just caught on. We've now had over 3.5 million impressions and over 500 tweets per hour.

This is something we can do for the memory of Aaron Swartz, and to lead the way toward more access to the scientific process for everyone.

Now is the time to participate.

If you're in the UK, write to @ukhouseoflords using this link as they are accepting comment on these issues over the next couple of weeks. If you're in the United States, perhaps you can help launch a similar inquiry at the US House of Representatives Committee on Science, Space, and Technology by tweeting to @SciSpaceTechCmt.

For hackers, perhaps you can take all of the #pdftribute files and put them on a central web page. Maybe other journals will follow (or exceed!) JSTOR's lead and give more open access. Whatever happens, let's all be a part of it.

Please tweet your papers using #pdftribute!

@venturejessica, writing for @scicitizen, www.sciencecitizen.org.

P.S. It would be fitting if this got picked up on Reddit. Hint hint.

</comment></comment><comment><USER20> I was on the fence on publishing my work in a peer-reviewed journal or doing it online (I work in sports science). Aaron's death has firmly moved me to the free information camp.</comment>


Jack Ma's (Alibaba) Top Rules for Success - <AUTHOR> https://www.youtube.com/watch?v=9e_mqibZc-Q <comment><AUTHOR> 1\. Get used to rejection

2\. Keep your dream alive

3\. Focus on culture

4\. Ignore the #LITTLEMAN

5\. Get inspired

6\. Stay focused

Also his order of importance:

1\. Customers

2\. Employees

3\. Shareholders</comment>