C# Language Specification 5.0 - <AUTHOR> http://www.microsoft.com/en-US/download/details.aspx?id=7029 <comment><USER2> An interesting change in C# 5.0 involves the handling of foreach iteration variables when used in closure scope. This is technically a breaking change, although it is really hard to think of a case where the old behavior was legitimately desired.

Consider (stolen from the spec doc):

      int[] values = { 7, 9, 13 };
      Action f = null;
      foreach (var value in values)
      {
          if (f == null) f = () => Console.WriteLine("First value: " + value);
      }
      f();

In previous versions of C#, there is a single value variable is in the scope of the entire loop, so the above code would actually print out the last value in the list because that was the value of value (sorry) when the loop finished. In C# 5.0, a value variable is actually in the scope of each individual iteration (so within the braces). So now if you use your iteration variable in a closure scope it won't change on you when the loop iterates and the above code actually prints out the first value.

The same cannot be said for a for loop. It still functions as it always has.

<comment><USER3> Should have been that way from the beginning; having the loop variable have function scope was absurd to begin with and forced developers to copy the loop var to a local before using it in a lambda.

<comment><USER2> Yeah, they could have made the change in C# 3.0. I just don't think anyone really felt the pain until the Task Parallel Library came along in .NET 4. Since the TPL API is lambda heavy people really started using lambdas for asynchronous tasks, which leads (or used to lead, anyway) to pain and misery when using a loop iteration variable.

It could always be worse, though. Look at JavaScript. Simply copying the loop variable in the body of the loop doesn't work because all variables are scoped at the function level. So your "local" loop variable is actually a single instance for the entire function and you have the same exact problem. Instead, you have to actually create another function and immediately execute it with the loop iteration variable as an argument, and then use the parameter within the function to do whatever you wanted to do. Not cool.

<comment><USER3> Agreed.

</comment></comment></comment></comment><comment><USER4> A note to those that may be confused: C# 5.0 is the language version used by visual studio 2012, which was released in August of last year, alongside the .net framework 4.5. This is an updated revision, although a cursory look didn't reveal any differences to me.

I'm sure a few people were wondering if this was to go alongside Visual Studio 2013, expected to be released in beta later this week.

<comment><USER5> C# 5.0 adds asynchronous methods [1] and caller info attributes [2] to the language. They also changed respectively fixed the way foreach loop variables are captured in closures [3] and changed the overload resolution algorithm [3] and argument evaluation order [3].

[1] [http://msdn.microsoft.com/library/hh191443.aspx](http://msdn.microsoft.com/library/hh191443.aspx)

[2] [http://msdn.microsoft.com/library/hh534540.aspx](http://msdn.microsoft.com/library/hh534540.aspx)

[3] [http://msdn.microsoft.com/library/hh678682.aspx](http://msdn.microsoft.com/library/hh678682.aspx)

<comment><USER4> I'm sorry, I meant that I didn't see any differences from the C# 5.0 specification released in August 2012 and the revision posted here, which was updated in June 2013. I am aware of the differences from c#4 to c#5.

My point being that c# 5.0 is around 1 year old, and this spec is not new.

<comment><USER5> Maybe someone else will still find the information helpful. I also just noticed that the copyright still says 1999-2012 - maybe they just reuploaded it.

</comment></comment></comment></comment><comment><USER6> Here's PDF version: [https://www.dropbox.com/s/dt6xzum432zine0/CSharp%20Language%...](https://www.dropbox.com/s/dt6xzum432zine0/CSharp%20Language%20Specification.pdf)

<comment><USER7> Here's another version: [https://www.dropbox.com/s/4n6sg31v0v3nfok/CSharp%20Language%...](https://www.dropbox.com/s/4n6sg31v0v3nfok/CSharp%20Language%20Specification.pdf)

5.48 MB / Has bookmarks from document headers / For download and offline reading if you want to navigate to specific chapter quickly / Not for online viewing (the parent version is only 3.70 MB and is better if you're bandwidth- capped).

<comment><USER8> I'm curious - what's the difference between yours and the parent's in terms of the conversion?

<comment><USER7> This one is slightly bigger (a trade-off) because I included bookmarks (created from headers in the word document).

</comment></comment></comment></comment><comment><USER9> Asynchronous method... interesting. It seems to me that each version they just incorporate a little bit of some hot paradigms into this language that started as a sweeter(or less painful) java. I remember that during the ruby boom they added the "dynamic" feature into it. Together with linq, and lambda, is it me or all these attempts sometimes appear awkward and out of place?

<comment><USER10> As a former C# dev, here's my subjective view:

The stuff actually fits in the language pretty well. What has resulted, however, is that there are multiple ways to skin a cat in C#, and there's very limited guidance on what's considered idiomatic.

This is complicated by the fact that many .NET/C# shops have coding standards in place that don't go much beyond C# 2.0. The last C# interview I did, at an allegedly "progressive" .NET shop, the interviewer barred me from using null coalesce in a whiteboard example because "That's hobby project code. It's not how we write production code"

Great language, terrible culture.

<comment><USER11> Yes, the whole fights of people confused about "var" and avoiding it shows that a fair amount of MS's target group is simply not interested in proper language research or design. I'll admit that I love the ideas behind the CLR (the VM design is pretty slick, although it's stagnated the past years). I think some parts are really excellent (the generics), but when I approach a vendor and I hear they're using .NET, it is a slightly negative flag.

I too had a boss (new owner after acquisition) say "no you're not allowed to use lambdas".

<comment><USER12> If you want to start a flamewar just go to a C++ newsgroup and ask around about using type inference with auto.

This is typical enterprise stuff, I bet most typical enterprise already making the switch to Scala and F# also force their developers to type annotate everything.

</comment></comment></comment></comment><comment><USER13> I wish we had an accurate spec for Ruby. RubySpec project is great, but we still let the language be defined in terms of MRI implementation.

<comment><USER14> Sun started the trend when Guy Steele and Gilad Bracha (among others) wrote the initial Java Language Specification. Microsoft has a strong team of PL researchers, including Mads Torgersen and many people at MSRC (who published a paper on formalizing Async in ECOOP 2012), to do this work, which I think is very useful.

</comment></comment><comment><USER15> MS Word or Word Viewer to see the specification? Really?

Good to see nothing ever really changes in Redmond.

<comment><USER16> Is there something in this document that prevents you from reading it in your preferred viewer? The extension suggests it's just an Office Open XML doc. I can read it in QuickOffice on my Android phone.

<comment><USER15> Given that my preferred viewer for this kind of thing is Okular, with a fallback to Firefox+pdf.js if necessary, it's already struck out twice.

My Android doesn't have Quick Office, it _does_ have ThinkOffice but I can think of no reason I would a) read a _computer language spec_ on my cell phone, or b) ever use ThinkOffice on purpose.

<comment><USER16> I think you've missed my point there. I wasn't suggesting you read it on your phone, I was demonstrating that you don't need Word using what was handy to me at the time (QuickOffice is owned by Google and was preinstalled). It's not a Word document. It's an office open XML document which dozens of free and commercial word processors and web apps can read and write. Not using your choice of previously-proprietary document formats doesn't make this an "oh, Redmond" moment.

<comment><USER17> Office "Open" XML _is_ a proprietary format that got rubber-stamped as a standard to convey a sense of legitimacy. Significant parts of that standard say "do it like Word does" with varying degrees of indirection. Other office suites and viewers support it because they have to, not because the "standard" makes it any easier to do so.

Comments like this one suggest that the rubber stamp does indeed convey some legitimacy, which I'd consider unwarranted.

As a specification for a language coming out of Microsoft, it isn't _unexpected_ to see it in Word format, and it's certainly possible to cope with it using any number of other tools without resorting to Word, but that doesn't make it a good idea. Use PDFs.

<comment><USER18> > Significant parts of that standard say "do it like Word does" with varying > degrees of indirection

That's not correct. What it actually does is reserve some markup for use by third parties that have reverse engineered various old programs (including programs that competed with Microsoft programs), so that if those people have workflows that depend on features of those old programs that cannot be represented in OOXML, they can still use OOXML as a storage format but add in the extra information they need.

Here's the use case this is aimed at. Suppose I run, say, a law office, and we've got an internal document management system that does things like index and cross reference documents, manage citation lists, and stuff like that. The workflow is based on WordPerfect format (WordPerfect was for a long time the de facto standard for lawyers).

Now suppose I want to start moving to a newer format for storage. Say I pick ODF, and start using that for new documents, and make my tools understand it. I'd like to convert my existing WordPerfect documents to ODF. However, there are things in WordPerfect that cannot be reproduced exactly in ODF, and this is a problem. If my tools need to figure out what page something is on, in order to generate a proper citation to that thing, and I've lost some formatting information converting to ODF, I may not get the right cite.

So what am I going to do? I'm going to add some extra, proprietary markup of my own to ODF that lets me include my reverse engineered WordPerfect knowledge when I convert my old documents to ODF, and my new tools will be modified to understand this. Now my ODF workflow can generate correct cites for old documents. Note that LibreOffice won't understand my additional markup, and will presumably lose it if I edit a document, but that's OK. The old documents I converted should be read-only.

Of course, I'm not the only person doing this. Suppose you also run a law office, with a WordPerfect work flow, and are converting to an ODF work flow. You are likely going to add some proprietary markup, just like I did. We'll both end up embedding the same WordPerfect information in our converted legacy documents, but we'll probably pick different markup for it. It would be nice if we could get together, make a list of things we've reverse engineered, and agree to use the same markup when embedding that stuff in ODF.

And that's essentially what they did in OOXML. They realized there would be people like us with our law offices, who have reverse engineered legacy data, that will be extending the markup. So they made a list of a bunch of things from assorted past proprietary programs that were likely to have been reverse engineered by various third parties, and reserved some markup for each.

</comment></comment></comment></comment></comment></comment><comment><USER19> Anyone knows if C# is used inside microsoft to buiild desktop app ( office ? Visual studio ? ) I remember it wasn't the case for a long time but stopped watching since.

<comment><USER20> The Visual Studio IDE and Expression Blend are (or at least were) WPF... I guess there's a pretty good chance it was C# rather than VB.NET.

Not sure if there is anything else though.

<comment><USER21> Visual Studio since 2002 (.Net 1.0) has been partly written in C#/WinForms and then C#/WPF. Visual Interdev (from which the current Visual Studio lineage descends) was partly written in VJ++. It was these bits that were ported to C#/COOL for the 2002 release.

</comment></comment></comment><comment><USER22> Why, if this is version 5.0, does the document it downloads say version 4.0? Am I the only one seeing this? The details also mention previous version 3.0 on the webpage.</comment>


Stay Classy Makerbot - <AUTHOR> http://www.openbeamusa.com/blog/2014/5/22/stay-classy-makerbot <comment><USER2> Complaints about the author, methods, prior art etc aside... I've got a lathe here from the late 80's that has CNC. It has tool depth sensing via electrical contact and a bed leveling algorithm. Taking stuff that has existed for 30 years that anyone with community college level machine shop training knows about, tacking "with the 3d printerz!1!!" on and running to the patent office is a _giant dick move_ on the same level as all of the "on the intertubes" patents we've been dealing with.

They may have great intentions. Who knows, but boy-howdy if it walks like a troll...

<comment><USER3> Same thing with networking, queueing etc. It has existed since the dawn of desktop printers, but now that they add "3D" to the name, it's considered a novel invention? The patent system is flawed.

</comment></comment><comment><USER4> The author claims prior art based on things that were published in 2013, but Makerbot filed their provisional application on October 29, 2012. This also explains why the patent was filed October 29 of 2013, as that would be the last date they can file.

I don't really care if you hate the patent system, or hate that somebody wants to treat 3D printing as a traditional business instead of altruistically open sourcing all the things. To publicly lambaste a competitor through disinformation just because they don't share your personal values is about as classless as it gets. This is open-and-shut witch-hunt territory.

<comment><USER5> First, from elsewhere in this thread, from April 23rd, 2012, there is this auto-leveling technique, which probes by applying a slight current to detect contact:

[http://hackaday.com/2012/04/23/automated-bed-leveling- with-o...](http://hackaday.com/2012/04/23/automated-bed-leveling-with- our-3d-printer/)

Second, I disagree with your priorities and/or point of view on this, and I think it might be anti-hacker. It must be at once obvious to everyone that desktop 3D printing is both vital to the future and currently a "cottage" industry. What matters more: the future, or our personal notions of what's classy?

I feel that any action intended as a land-grab for enormous swathes of intellectual territory in an industry so driven by, and amenable to, individual invention and modification, rightly deserves the opprobrium of all hacker types.

Trying to patent compensating for a non-level bed in 3D printers is a jerk move. You could provide a similar defensive moat by just publishing your work, without stifling any of your peers in this infant industry.

Edit: when I said "priorities", I was talking about specifically about prioritizing being classy over protecting a nascent industry, and how that could be anti-garage-innovator. Re-reading my comment, though, I guess it sounds a bit more personal, which wasn't my intent!

<comment><USER4> I don't think you have any idea what my priorities are, you seem to have misinterpreted my point of view, and I find it amusing to be called an anti- hacker for all sorts of reasons.

The reality is that the patent system exists, in all it's horrible innovation- stifling glory. It's business, nothing more. It's not right and it's ruining the world, but you have to work within the system until the system changes.

If there is other prior art, that's fine. So be it. But the author did not provide any of that art, and instead made false claims based on a knee-jerk reaction to something that he misread.

I don't like having to defend the patent system at all, but the author is in the wrong. Simple as that.

<comment><USER6> _It 's not right and it's ruining the world, but you have to work within the system until the system changes._

I disagree with anyone calling anyone here anti-hacker. But I just wanted to point out that the above sentence can be used to justify any legal horror in any time. Think of all the atrocities that once were legal. If you think something is ruining the world, that's a pretty good reason not to work with it.

</comment></comment></comment></comment><comment><USER7> This whole thing is stupid. Leveling is a problem, "autoing" it is not patent worthy. Lots of things have some solution applied to them to "auto". This is a case of patenting a problem, not the solution. And if the solution (sensors and actuators) have been applied elsewhere, then there isn't anything patentable here. Move on, solve harder problems.

The Stewart Platform [0] was invented back in the early 50s, I could apply an SP to _any_ leveling problem. I shouldn't be able to patent leveling anything at this point. Leveling is a solved problem. Putting a computer in a feedback loop is a solved problem, one should not be able to patent feedback loops or computers or trivial applications of both.

[0] [http://en.wikipedia.org/wiki/Stewart_platform](http://en.wikipedia.org/wiki/Stewart_platform)

</comment><comment><USER8> I'm completely ignorant here, but when I read a "slew of patents" have been filed, two things come to mind:

1\. A startup that is trying to raise some funding is filing the patents as a requisite of an investor (it sucks, but it's part of the startup/investor game)

2\. A startup that was acquired by a larger company and the acquirer is trying to protect its shiny new purchase

I noticed Makerbot was acquired by Stratasys last year so point #2 seems likely. These filings are likely to be more on the behalf of Stratasys than Makerbot. Again, I'm not saying it's right, just saying it isn't surprising.

<comment><USER9> > 1\. A startup that is trying to raise some funding is filing the patents as > a requisite of an investor (it sucks, but it's part of the startup/investor > game)

> 2\. A startup that was acquired by a larger company and the acquirer is > trying to protect its shiny new purchase

In particular, it seems far too common for a patent troll to see a company that just got funded or acquired and figure they can extort some of the new funding. So it makes perfect sense for a newly acquired or invested-in company to spend some of the new funding they just got to set up a small stack of defensive patents or publications.

That said, for both of those cases it would potentially be cheaper and equally effective to file defensive publications rather than patents.

<comment><USER10> Defensive patents are not effective against patent trolls, since the trolls do not produce any products. The publications do make sense, though.

<comment><USER11> Defensive patents are effective against patent trolls, because if you have your defensive patents covering the things you do, you can bring those to court as proof of the origin and creation date of your ideas, should the patent trolls come knocking.

<comment><USER2> Yes you can bring them to court along with your million dollars and 6-8 months of time and aggravation. You'll likely "win".

</comment></comment></comment></comment></comment><comment><USER12> Shameless plug:

Bld3r.com co-founder here.

I started working on bld3r, because i was unsatisfied with thingiverse (owned by makerbot/stratasys). I'd like to see the community put a stop to a potential facebook-like hold on 3D model sharing learning since we are learning makerbot is very rapidly changing their culture from open hardware cultural icons, to an anti-social corporate subsidiary.

I'll hit some fairly basic bullet points:

* We are a functional 3D printing repo and social network, and in the top 3 alternatives to thingiverse.

* We on github (AGPL), and i'd happily accept pull requests: [https://github.com/bld3r/bld3r](https://github.com/bld3r/bld3r)

* We are built on google's app engine, so you can take our site and use it as a base for building your own social network and launching it in a couple hours or a couple of days.

* One major feature is that you do not have to upload 3d models to us. You can if you want, but you don't have to. We'd actually prefer if people host files elsewhere (via dropbox, github, tpb, etc., even thingiverse). You can then submit a link to your object and it'll appear on our front page crowd-sourced with reddit-style voting.

* We do not sell 3d printers, so if you do, we'd love to give you some free advertising while we grow our site. We are currently working on a contest feature, so within a month, if you want to host a contest, you can design what you want on our site, and launch it to promote your printers (Lulzbot was the first of such manufactures to do so, and we are very grateful to them for the notable bump in traffic and name recognition).

There are many more things we do to prevent even ourselves from exploiting a network effect in 3D repos.

We are not without our warts right now (this is neither of our main occupations, it's just a labor of love to keep 3D printing open), but please give the site a visit if you're interested. I live in SF and my co-founder lives NYC. We'd both be happy to get a beer and talk about the site if anyone is interested in using it as a base for another open social network.

[http://www.bld3r.com](http://www.bld3r.com)

</comment><comment><USER13> Terence is doing something vitally important. 3D printing is likely to be a "next big thing" and we have a duty to ensure the technology stays as open as possible.

As a community, we're lucky that ideas like 'open source' and 'freedom to tinker' are highly valued. Each of us has benefited tremendously from that commitment. But it wasn't an accident. Hackers, scientists and engineers have been fighting mini-battles over those ideas since the days of the 60s counter- culture.

When I stop and think about it, I feel a lot of gratitude and respect for our colleagues who set the precedent for an open Internet so early on. We have an obligation to pay that precedent forward so that technologies like 3D printing and DIY Bio can develop into vibrant ecosystems like the Internet.

</comment><comment><USER14> OK, a few things.

1\. Patents are very VERY specific. Someone can have a patent for Thing A and you can make Thing B that is quite similar to Thing A, with just a few minor adjustments, and it is not an infringement. This is why there are tons of patents out there that describe pretty much the same thing, with very minute differences.

The takeaway is: just because Makerbot / Stratasys is getting a patent on autoleveling does not mean no one else can do autoleveling. It just means they cannot do it the exact same way.

2\. A patent troll is an entity that has a patent portfolio, but has no actual products related to anything in that portfolio. They make their money by suing people (or bullying little guys into settling out of court).

Makerbot / Stratasys makes 3D printers. It is not trolling for them to file patents related to 3D printing technology. You might think the patent system is broken or feel that patent filing is not in the spirit of open source hardware (valid points which I personally share), but it is not trolling.

So, let's not undermine the legitimacy of those criticisms by conflating one particular (arguably douchey) business strategy with patent trolling (another, unarguably douchey strategy).

</comment><comment><USER15> The reprap ormerod is using an infra-red sensor for bed levelling, so no contact force. [http://uk.rs- online.com/web/p/3d-printers/7952333/](http://uk.rs- online.com/web/p/3d-printers/7952333/)

There was a nice bed levelling project I saw on hackaday a couple of years ago that was cool as well, I think their method isn't covered by this patent either - [http://hackaday.com/2012/04/23/automated-bed-leveling- with-o...](http://hackaday.com/2012/04/23/automated-bed-leveling-with- our-3d-printer/)

Also, the idea of bed leveling using contact force and other methods was discussed in the reprap forums at least as far back as January 2008 - [http://forums.reprap.org/read.php?1,8028](http://forums.reprap.org/read.php?1,8028)

<comment><USER16> This is why patents like this are annoying. The idea of automated bed leveling wasn't novel by the time this patent had been filed, and doing it with force measurement is an obvious method to someone interested in automated bed leveling. There's nothing novel about doing bed leveling with force measurement.

</comment></comment><comment><USER17> Business reality: patent trolls exist.

Rational strategy: patent things that you think you have no business patenting. Use for defensive purposes.

If Makerbot starts using such patents _offensively_ , then anger is warranted. Not before.

<comment><USER18> How do you avoid the chilling effects of patents existing then without getting into patent pools or cross-licensing arrangements? People will be hesitant to put any time into R&D if they don't have assurances their work won't be quashed by lawyers.

<comment><USER19> Funny how patents are supposed to encourage innovation and they're doing exactly the opposite.

</comment></comment></comment><comment><USER20> Does prior art, even backed by concrete proof, still matter now that US also has a "First to file" patent system?

<comment><USER21> Yes. Prior art still invalidates patents under first to file.

Actually, the system is harder now in some ways (and easier in others) because it's closer to "first to publish" than other "first to file" systems:

> an applicant could file a U.S. patent application covering an invention that > was the subject of a publication provided the publication was dated less > than 1 year earlier. This was true even if the publication was by another > individual or entity that independently arrived at the invention on his or > her own. Effective Saturday, March 16, 2013, if another individual or entity > independently arrived at the invention and published an article before the > first inventor filed the first inventor who filed will be unable to obtain a > patent.

[http://www.ipwatchdog.com/2013/03/16/a-brave-new-patent- worl...](http://www.ipwatchdog.com/2013/03/16/a-brave-new-patent-world-first- to-file-becomes-law/id=37601/)

A lot of the people calling "end of world" around "first to file" don't really know what the new system means (not their fault, it's complicated!). What first to file does is mean that if you keep your invention secret, you can't then claim it as prior art for someone else down the road or claim that you actually deserve the patent because you invented it first. At least in this way, it makes uncertainties around patents a lot fewer.

</comment></comment><comment><USER22> Does anyone care to explain to me why there is no patent service that takes care of this process for open projects for protection of said projects? A patent would be granted under an open entity, but never used, unless a company used the patent for closed source. It seems that this could be a great way to fund open source projects. Reverse patent trolling.

<comment><USER23> There's [http://www.openinventionnetwork.com/](http://www.openinventionnetwork.com/). There used to be [http://www.linuxdefenders.org/](http://www.linuxdefenders.org/) but it's not resolving for me.

</comment></comment><comment><USER24> Has MakerBot acted on any of these patents? If they are acquiring them defensively (a good move if they plan on working on them, lest a patent troll file the patent), I don't have a big problem with this. Of course, assuming altruistic motives is naive, I just wonder what their motives are.

<comment><USER25> It doesn't matter. Without a legally-binding pledge limiting the patents to be used only defensively, there is a chilling effect on innovators in the space. The threat of a lawsuit discourages development and investment.

<comment><USER24> That's true, although even a non-legally binding pledge (do pledges like that exist? IANAL, but from my time in law school, seems like the best solution would be to set up a foundation with a goal of using patents defensively and filing it under its name or something) is better than a troll filing the patent, in my opinion</comment></comment></comment>


Which program should I learn RoR or PHP? - <AUTHOR>

I've some basic SQL and relational database management knowledge. Which program would you recommend a marketing person to learn? RoR or PHP? Or do you even have another program in mind? <comment><USER2> php is a language and ror is a framework.

I myself have in mind python(language). Check out <http://learnpythonthehardway.org/> (text book) or [http://www.udacity.com/overview/Course/cs101/CourseRev/apr20...](http://www.udacity.com/overview/Course/cs101/CourseRev/apr2012) (video tutorials) or both. Then learn django(framework).

<comment><USER3> To clarify, would you suggest python to one who has not a lick of experience or prior training also? Codecademy is cool but what language should I learn first - what is mostly used? Needed to get a job in Silicon Valley, etc?

<comment><USER2> Well if you learn one language enough to get a job in Silicon Valley you will be fine learning other languages. The learnpythonthehardway is for total beginners. Im opinionated for python(favorite) and not so much expert to tell you if it is the best for beginners but you can search quora / stackoverflow and see this: [http://udacity.blogspot.com/2012/05/learning-to-program- why-...](http://udacity.blogspot.com/2012/05/learning-to-program-why- python.html) (Udacity's courses so far have been using Python because it is overall, the most convenient language for teaching and learning. The natural syntax means students spend less time grokking code than with terser languages.)

</comment></comment></comment><comment><USER4> PHP is a programming language and is very easy to get started on since every web host in the world has a version of PHP5 running on their servers.

There are many web frameworks available for PHP, my favorite being CakePHP but other notables being Drupal, Zen Framework, and CodeIgniter.

You should first learn to program--I'd use JSFiddle.net and some PHP books to teach you that.

Then, you'll need to learn the frameworks, which all have lots of documentation to get you started.

As another commented pointed out, RoR (Ruby on Rails) is simply another web framework for the programming language Ruby, and you could choose to learn Ruby first and then move to Ruby on Rails in the same way I described, if you wish.

I'd say learn PHP - Ruby is like 2 steps from just typing an essay about what you want your app to do.

<comment><USER4> Also PHP = more jobs, at the moment. Maybe in the future Ruby or Python will become more popular at the enterprise level

<comment><USER5> I tend to agree with this. There is a lot of work out there on the PHP side.

</comment></comment></comment><comment><USER6> Guh, run, run away from PHP. Try ruby or python. And then a framework of your choice on that such as Rails, or whatever the lead framework in Python is these days (Django?).

</comment><comment><USER7> I would recommend ASP.NET and C#. The .NET framework is fantastic, Visual Studio is a fantastic IDE and C# is a great language to learn and use.

If you don't wish to use ASP.NET then I would highly recommend Python and Django as a platform. It can be a huge pain to install if you're a beginner, but it's a fantastic language and framework.

<comment><USER8> This is bad advice. In this day in age it is a serious mistake to start learning back-end development on the Microsoft stack. Microsoft technologies are non-existent in every aspect of cloud computing... which is the future of back-end development, and the basis of the future of mobile/web computing. I know a few Windows die hards that are practically unemployable these days because they were either afraid, or technically incapable, of using Linux and command line tools, and now their MCSE point-and-click skills are useless in the new mobile/cloud computing age.

Python on Linux would be a much better option.

<comment><USER7> This comment is so wildly inaccurate that I'm calling bullshit. I've never heard of anyone who is "practically unemployable" because they didn't keep up with mobile or cloud computing and I'm willing to bet that you don't know any Windows die-hards. Even the tech hipsters of HN are fully aware of the demand for solid ASP.NET developers in the real world.

<comment><USER8> I've never seen a job opening for an Azure developer. Sure there might be ASP work, but you almost certainly won't be working on cloud or mobile apps. It's nearly impossible to build a large-scale cloud architecture using Microsoft technology, and Microsoft Windows phone represents such a small portion of the market that it is inconsequential to ignore it completely. These are very strong reasons to avoid Microsoft technologies when choosing something to learn regardless of how employable ASP developers are at the moment.

</comment></comment></comment></comment><comment><USER9> What do you want to learn this for? Personal development? Employability? Freelancing? For each I would learn: Ruby, C# / Java and PHP respectively. Ruby IMO is a more concise, readable and functional than Python, C# and Java are standard enterprise fodder and PHP is widespread but not really designed but more evolved.

</comment><comment><USER10> I'm familiar with both, but it's a little difficult to make a recommendation with so little context. Why do you want to learn one of these languages? Is there a specific reason / project or do you just want to "learn to code"?

<comment><AUTHOR> Sorry, I did not add much detail information. I intend to learning coding to be able to do web development and then later mobile app development. Am a business guy. I don't have the intention of learning to code to get a job, but more to be able to program MVP of product ideas I have. Which one is the most easiest for a rookie Ruby or RoR or PHP or Zend or cakePHP or Yii. My goal is to get results quick, later I can then jump into the nitty gritty.

<comment><USER11> Do you have any programming experience, if you do, in which languages?

<comment><AUTHOR> Yes, I coded in MySQL/SQL before. I also started learning PHP some years agao, but stopped because I was lazy.

</comment></comment></comment></comment><comment><USER12> Has anyone had experience with Grails? It looked pretty neat, but I didn't want to start delving into it just to find out that it is something that is not being used or developed all that much.

<comment><USER13> Grails is an amazing technology founded on two very time tested technologies being Spring and Hibernate. The programming language itself is Groovy which in turn is founded on Java

For those coming from PHP, Python and Rails the thought of using something based on Java frameworks may be a turnoff but I assure you all the boilerplating and configuration complexity is hidden away with the preference being the convention over configuration approach.

The beauty though is if you need to reach down and leverage some specifics you are free to do so, Grails doesn't tie your hands allowing you to have your cake and eat it to.

So in a nutshell, Grails gives you all the things you love with frameworks like Rails while under the Hood you can leverage the power of Java and all the supporting libraries and frameworks developed for it over the years. Anywhere it can go Grails&Groovy can go to (well almost). Oh and in terms of performance, the upcoming version of Groovy 2.0 will provide performance enhancements that will bring it seriously close to Java execution through static type checking and compilation. These two options are once again free to use or ignore as the developer sees fit.

</comment></comment><comment><USER14> I've personally had success with Django/python framework. Although it took 4 days of hassle to install Django/WSGI on Dreamhost.

</comment><comment><USER15> As PHP is a personal favorite, it bears my recommendation along with the Yii framework for web applications.

</comment><comment><USER16> Learn php first. With SQL background it is easier to adjust to php.</comment>


Ask HN: How to post using a new throwaway account without posts being hidden? - <AUTHOR>

I've recently tried creating a throwaway account in order to post about sensitive subjects. I've done this twice and both posts were hidden (I could see the post when logged in, but not when logged out).<p>Is there any way to avoid being hidden / flagged as spam? <comment><USER2> I've never had a new account get treated that way, when I occasionally make a new account when I don't have my password with me. If it's not Tor, it is probably the content of your posts that is making the difference.

</comment><comment><USER3> For the most part: "wait".

I don't recall the specifics but, e.g., accounts created over Tor also run into this. After a period of time (~14d?), they come a little more "trusted" and this stops happening, IIRC.</comment>


Don't Cry for Me, Elanthia: An Archaeology of Gemstone III - <AUTHOR> http://theappendix.net/issues/2014/10/dont-cry-for-me-elanthia-an-archaeology-of-gemstone-iii

<comment><USER2> Wow, that took me back.

"When I was twelve, I found a crystal amulet that allowed me to telepathically communicate across vast distances. A telltale glint of quartz had caught my eye as I strode the coastal cliffs of Elanthia. I scaled the rock face and discovered a glowing amulet half-buried in white sand."

Yep, I remember the Coastal Cliffs, farming sea nymphs to stock up on gold rings. The amulets were nice, but the gold rings let you mark a location and teleport back to it by turning the ring. Very convenient for long-distance travel.

If the author was tired of all the calculations and such, it is a shame they didn't try out the "sequel" to Gemstone III, Dragonrealms. Still set in the world of Elanthia, DR's purpose was to provide a game world of description and imagination, and instead of the raw calculations and random rolls it displayed text narratives of what was happening. For example, a critical hit might result in severing a limb or decapitating your foe. There were many other major leaps beyond GSIII and DR was an absolutely amazing game with a passionate community (still is as far as I know). Simutronics also had a few other attempts at gaming experiences with a Hercules and Xena knockoff, a detective game, etc. Never really got into those however.

One of the bigger issues I had with how Simutronics approached things though was their absolutely ridiculous pricing. It made sense back in the day when they were the MUD of choice to play and cutting edge. But the only thing that has changed since then is the prices have gone up. Currently it is $14.95/mo for EACH SEPARATE GAME. And extra character slots are an extra $2.50/mo/slot [1].

I normally am quite polite when I speak with customer service reps. However when I called them last year to consider reactivating my account (after tiring of all the latest MMOs) and asked the price, I slipped when he told me and blurted out "YOU HAVE TO BE SHITTING ME. This an ancient text-based MUD and you are charging HOW MUCH?! And it would cost even more to get access to all my extra characters again?!"

Not the rep's fault of course, but come on...that is an absurd price to charge for a text-based game with gaming where it is today. Yes they had highly- involved GMs, and the community was exceptionally high-quality, but that price is just unrealistic (for me at least).

I'd love to get back in, and would even consider paying $5-10/mo for access to all games with a much higher character slot limit, but there's no way I'm paying this price. Which is a shame, because I spent a large chunk of my youth exploring these lands (and can credit it with teaching me to touch-type at over 100WPM at my peak).

[1] [http://www.play.net/dr/account/account_faq.asp#A1](http://www.play.net/dr/account/account_faq.asp#A1)

<comment><AUTHOR> Author here. I tried out Dragonrealms a bit back in the day (c. 1996) but it was too surreal to play a game with almost the same mechanics and descriptions as Gemstone, but with everything slightly different. It was almost like a dream version of what I was used to.

While I was researching this article I looked into the current incarnation of the game, Gemstone IV. Amazingly, I think some of the players of it have been active since c. 1992. I would imagine that's the longest-running internet game community, but maybe I'm wrong. A tiny party of me wanted to re-create my character from when I was 12 (Sylvanon) and start back up again...

I believe Simutronics now has some crazy pricing model where a handful of players pay a ridiculous amount ($100 a month last I checked) for the "Platinum" version of Gemstone, which is essentially a different server with only the elite players. I do sort of miss the austerity of a purely text-based game.

<comment><USER2> Correct. I'm sure they did some research and realized they had hardcore customers that are willing to pay an absurd premium and milked it for all its worth. The big shame is that if they simply went with more reasonable pricing, they may have been able to make even more.

DR took some getting used to when I made the transition, but overall it was a much more enjoyable experience once all the numbers were taken out of it. At a certain point you stopped trying to min/max things and just enjoy the experience which I think was the entire point. Then you added their visual Stormfront client and it was amazing. I'm sure I still have all my maps somewhere.

I'd LOVE to understand the business factors that caused Simutronics to arrive at their current prices. Such a shame...

<comment><USER3> Interestingly, Simutronics tried to get on the graphical MMO bandwagon, but their product, Hero's Journey, never got finished.

The engine itself, HeroEngine, was somewhat successful, though. It was licensed for some successful titles (like Star Wars: The Old Republic).

[http://en.wikipedia.org/wiki/HeroEngine](http://en.wikipedia.org/wiki/HeroEngine)

<comment><USER2> Wow, I had no idea the engine made it into SW:TOR, thanks for that bit of trivia!

I remember eagerly waiting for Hero's Journey and how crushed I was once it was cancelled. Too bad nobody has resurrected the actual vision for that game.

</comment></comment></comment></comment></comment><comment><USER4> Great memories, I still haven't spent any amount of time on anything in life that passes the amount spent on Gemstone III (not that is a good or bad thing, just fact of my life).

Like the author, I started playing in '96, but I also picked it up again a couple of times over the years. It was amazing how many people I connected with on there and the life lessons learned at a young age. I still don't find anything as engaging as text adventures (though Gemstone III was always more alluring to me than other MUDs). There was real community and imagination in the game in a way that WoW picked up on but I feel never could quite replicate in the same way as graphics always seem to fall short of dreams.

I was reminded of Elanthia again a couple weeks back when Simutronics sent out an email on the latest "Ebon's gate" event. Elanthia is still there and still surviving!

"It's that time of the year again! In the real world, the leaves are turning, the temperatures are dropping, and everyone is reaching for their favorite warm beverages! In Elanthia, chaos and turmoil abounds throughout the realms. In the grand tradition of Ebon Gate, the Merchant Consortium opens Feywrot Mire, the location of the Eve of the Reunion Celebration!"

</comment><comment><USER5> Great article. I also played from 12 to 15. There must be more of us out there. Great memories from that time spent in such an immersive world. The thrill of the "Lord" title at 20 (and 920/implosion spell) and the "Legend" title (and Hearthstone membership) at 50. Real friends, real connections. To this day I can type >100 wpm and with almost no thought or effort my fingers are tapping out "prep 702" "cast 702" from ancient muscle memories. I've often thought it would be fun to create or join a resurrected MUD similar to GS3 later on in life. There's something about the experience that I haven't found anywhere else.

</comment><comment><USER6> Played a lot and recognize all the things mentioned. That said, it was just a backup game for me. Both Gemstone III and Neverwinter Nights were multiplayer games available on AOL. Neverwinter Nights had a limited number of people who could play, however, so often if it was full I'd go try Gemstone III.

NWN had better graphics. In the tradition of AD&D gold box games it had a map view and a first person view although you could only move grid square by grid square instead of moving freely. Perhaps on the down side, it was easy to hack too. You just had to flip a bit in memory and you were a GM and could make custom items, teleport, etc..

Gemstone III on the other hand, was more cheat proof since everything was done on the server. I had a script that rerolled a character until it got perfect stats, and many people used advanced mud clients like zMUD that would automatically map areas and could run complex scripts to automate actions, but it was tough to tweak game behavior. I guess it is a good example of good scaling winning over poor too, since it could handle the large amount of players NWN couldn't, and even got some form of graphics later on. It could show an image for each area you went to.

</comment><comment><USER7> Gemstone III was the first online multiplayer game I was a part of. I must have played 20 hours a week when it was free on AOL!</comment>


Need 10,000 stars, please  - <AUTHOR> http://code.google.com/p/chromium/issues/detail?id=16362#c43

<comment><USER2> This reminds me of how Mozilla's bugzilla used to (still does?) block links from slashdot.org, because spam like this in a development tool really gets in the way of reading and responding to the actual bugs.</comment>


Show HN: Store your DB in a json file - <AUTHOR> Hey my developer friends. I make my first open source project which is usable for developers , so im feeling excited :D
If you like it please star the project on github this will make me motivated :)
https://www.github.com/ahmetbcakici/js-json-db <comment><USER2> Give the submission a useful title and prepend "Show HN:", so you get a bit more attention.

<comment><AUTHOR> everything is okay now?</comment></comment>


TTIP: A locked room, no internet access, two hours, 300 pages and lots of typos - <AUTHOR> http://www.theregister.co.uk/2016/02/10/surreal_world_of_the_ttip/ <comment><USER2> It's been suggested that the typos are unique to each viewer as a form of anti-copying mechanism, allowing anybody who sees the pirated excerpt to link it back to the leaker.

Clever, but surely easily thwarted?</comment>