Micro web-framework for COBOL - <AUTHOR> https://github.com/azac/cobol-on-wheelchair <comment><USER3> I remember showing my "systems analyst" brother-in-law my second year university schedule when I was planning which courses I would take that fall.

"You don't have any Cobol, PL/1, OS360 Assembly Language or APL on here", he observed.

"I am going to focus on C, Unix and operating systems. I want to write compilers for microprocessor based computers".

When he finished laughing, he called me "unemployable" and said, "microprocessors will never be used for anything but toys. Take COBOL!"

Since then, I have made a point of not even looking at COBOL code. I have been in the presence of COBOL, but have averted my eyes.

<comment><USER4> There was once a programmer who wrote software for personal computers. "Look at how well off I am here," he said to a mainframe programmer who came to visit. "I have my own operating system and file storage device. I do not have to share my resources with anyone. The software is self-consistent and easy- to-use. Why do you not quit your present job and join me here?"

The mainframe programmer then began to describe his system to his friend, saying, "The mainframe sits like an ancient Sage meditating in the midst of the Data Center. Its disk drives lie end-to- end like a great ocean of machinery. The software is as multifaceted as a diamond, and as convoluted as a primeval jungle. The programs, each unique, move through the system like a swift-flowing river. That is why I am happy where I am."

The personal computer programmer, upon hearing this, fell silent. But the two programmers remained friends until the end of their days.

The Tao of Programming, 8.3 [http://www.mit.edu/~xela/tao.html](http://www.mit.edu/~xela/tao.html)

<comment><USER5> From the Tao of programming, 1.2:

The Tao gave birth to machine language. Machine language gave birth to the assembler.

The assembler gave birth to the compiler. Now there are ten thousand languages.

Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.

But do not program in COBOL if you can avoid it.

<comment><USER4> 4.2:

The Master was explaining the nature of Tao to one of his novices.

"The Tao is embodied in all software -- regardless of how insignificant," said the Master.

"Is the Tao in a hand-held calculator?" asked the novice.

"It is," came the reply.

"Is the Tao in a video game?" asked the novice.

"It is even in a video game," said the Master.

"Is the Tao in the DOS for a personal computer?" asked the novice.

The Master coughed and shifted his position slightly. "The lesson is over for today," he said.

</comment></comment></comment></comment><comment><USER6> I once had the pleasure to meet a young person (~30 years old at the time) who had learned to program at a bank, so I had to ask her about COBOL.

Her reply was interesting, if I looked at it as a general-purpose language like C++/C#/Java, then, yes, it sucks really hard. But if you look at COBOL as a DSL for building specific business applications, it does not look all that bad.

Having never used COBOL beyond a simple HELLO-WORLD, I am not sure I can judge it either way. But her reply sounded surprisingly pragmatic to me.

<comment><USER7> _if I looked at it as a general-purpose language like C++ /C#/Java, then, yes, it sucks really hard._

Plenty of people get by swinging a hammer all day and not a Swiss army knife. COBOL is one person's hammer. For me, at one point, it was RPG. You think COBOL is "domain specific"? RPG has the DSL right in the name: "Report Program Generator". Yuppers, RPG is a report writer. And when you're writing banking software or the like, which is just inputs munged into outputs, RPG did the job. Why use a language with shitty, dangerous string handling, no syntactic sugar for the task at hand, whose output keyword consists of "printf", dragging along a runtime with crap I'll _never_ use, and other "general purpose" language problems when you can use a language crafted specifically for what you're trying to do?

I made plenty of money back in the day writing FoxPro. FoxPro sucks for embedded systems and writing an operating system. But ya know what it doesn't suck at? Taking some data, transforming it, do a little munging, and print some output. Which was precisely what customers were paying me to do at the time, and not writing a Windows competitor.

<comment><USER8> FoxPro! :)

I was in the other side of xBase languages, did some dBase III Plus stuff, Clipper Summer '87 followed by OOP with Clipper 5.x, hurray!

High level programming in MS-DOS and were just perfect for crushing out database frontends.

<comment><USER6> In my first job after my training, I had a boss who had practically written a couple of bespoke line-of-business applications for customers using FoxPro.

Three years ago I had to do some maintenance on an old-ish C++ application (also a one-of-a-kind-thing) that used a dBase backend for storage. I was lucky, though, the code was very well-written and, let's say, humble - <USER2> avoided unneccessary complexities whenever possible, and even without comments or any other documentation, I was able to figure out how it worked (at least the part that I was supposed to modify).

Part of the fun was getting a development environment to work with an ancient version of Visual Studio, but the second fun part was accessing that dBase database. I tried a couple of programs, none of them overly helpful, until I realized that ____ing Excel could open them. I don't know how well Excel supports interacting with these, but it worked well enough for inspection. ;-)

<comment><USER7> Excel _should_ have worked just fine. The DBF format is not hard to understand, and it was documented in the manual that came with (IIRC) both dBase and FoxPro (I can still picture the page in my head from the FoxBase+ manual). Just a header with a record count and some field definitions, then the data. I haven't tried, but I bet with the docs in front of me I could write a parser in any number of languages in about 30 minutes, 30 minutes more to write to the DBF without corrupting it. You're on your own for indices, I never had to crack that nut. :-)

<comment><USER8> Yes, sometime around 1992 I got a Turbo Pascal unit as shareware, that could handle them.

Indexes were some form of B+ Trees.

Back in those days I toyed with the idea of porting it to Turbo Pascal for Windows, but then never got to do it actually.

</comment></comment></comment></comment></comment></comment><comment><USER9> From the tutorial:

>> the-values hold information about variables received. At the moment, these come from PATH (GET and POST are on the way). You can access them in the same order they occur in path.

Well, this is kinda the crux of the situation isn't it? Query parameter parsing, and POST body parsing, can't do much without these. Is this to be implemented in cobol? I really hope not, parsing anything is quiet untenable in cobol. I believe gnu/open cobol has pretty good .so binding, so you could conceivable use third party utilities like apache apr request parsing.

Why is parsing untenable in cobol? Becuase idomatic cobol doesn't provide dynamic memory allocation, or associative arrays, so you have to build up all that infrastructure from scratch.

But, the absence of dynamic memory allocation is also a characteristic that makes cobol extremely stable and safe, and mainframe applications legendarily bullet proof. All memory is required to be statically declared at compile time (similar to c-sects in assembler). So the runtime can ensure user programs play nice with each other.

<comment><USER10> >> Query parameter parsing, and POST body parsing, can't do much without these. Is this to be implemented in cobol?

I'd have thought they're to be implemented in Rexx, which is really great for writing parsers in.

<comment><USER11> You're first I run into saying that who isn't a mainframe programmer. It was an interesting language in summaries I read but I never really dug into it. What was good about Rexx for writing parsers?

<comment><USER10> Who said I'm not a mainframe programmer? :)

I've worked for a big financial corp. I was in one of their mainframe teams for a year or so [1]. There's still _a lot_ I don't know but I sure know Rexx is the most fun you can have on a mainframe. It's kind of like the polar opposite of JCL, or getting stuck on a TSO command line.

The first reason why Rexx is great for parsing is the fact that variables equal themselves. There's no "string" data type. If you type "myvar" then that's the name _and the contents_ of your variable (unless you assign it another value):

      DO INDEX = 1 TO 10 BY 2
      SAY HELLO
      END

      /* Outputs:
         HELLO
         HELLO
         HELLO
         HELLO
         HELLO
         ***
       */

Skipping the assignment reduces clutter and makes it very easy to see what you're dealing with. Unless you mess it up later, obviously.

Second, for parsing, Rexx has a keyword instruction called ...(drumroll)... PARSE that essentially implements pattern-matching, of some sort, probably as a regular automaton like regexes but without the regex syntax which is actually really nice. Instead, you define a pattern as a string with literals and variables and the special symbol '.' (a period) to indicate any token, (that's similar to the regex '.' but it matches between spaces).

Here's an example from my notes from that time (spaces delimit literals and variables) [2]:

      /* Fun with patterns at the REXXREPL*/
      BANDS = 'SLAYER, BATHORY, MOTORHEAD, VENOM'
      PARSE VAR BANDS ABAND ', ' BEST ', ' REST
      SAY ABAND
       SLAYER
      SAY BEST
       BATHORY
      SAY REST
       MOTORHEAD, VENOM
      PARSE VAR BANDS . ', ' BEST ', ' REST /* Skipped Slayer */
      SAY BEST
       BATHORY
      SAY REST
       MOTORHEAD, VENOM

You can also use numbers to indicate positions in a string (absolute, in the example below, but there's also relative ones):

      DIGITS = '11001011'
      PARSE VAR DIGITS FIRSTTWO 3 NEXTFOUR 7 LAST
      SAY FIRSTTWO
       11
      SAY NEXTFOUR
       0010
      SAY LAST
       11

On top of that, Rexx has "compound variables", a data structure that (to me) resembles a tree and lets you compose hierarchical structures. For instance, here's part of a program that reads in JCL files (formatted to a standard format with another Rexx program so that everything of the same kind is in the same column) and stores their DD, dataset, step and program names in such a structure:

      /*PARSE JOBNAME OFF FIRST LINE IN JCL FILE*/
      PARSE VAR CA.1 '//' JOBNAME .

      /*PARSE OTHER NAMES INTO A STEM CALLED 'MATCHES.'
      EACH TYPE OF NAME GOES INTO ITS OWN TAIL
      TAILS FOR DDNAMES AND DATASET NAMES ARE INDEXED IN TANDEM
      SAME FOR TAILS WITH STEP AND PROGRAM NAMES

      IN OTHER WORDS, MATCHES. IS STRUCTURED AS FOLLOWS:
      TAIL INDEX           CONTENTS
      </comment></comment></comment></comment><comment>----           </comment><comment>--
      MATCHES.DDNAMES.N    N'TH DD NAME FOUND IN JCL FILE
      MATCHES.DSNAMES.N    DATASET NAME FOR N'TH DD NAME
      MATCHES.STEPNAMES.M  N'TH STEP NAME
      MATCHES.PROGNAMES.M  PROGRAM NAME FOR N'TH STEP NAME

      SO, TO GET THE DATASET NAME THAT CORRESPONDS
      TO THE 5TH DD AND DATASET NAME
      FOUND IN THE JCL FILE, YOU LOOK INTO:
          MATCHES.DDNAMES.5
          MATCHES.DSNAMES.5
      */
      DO INDEX = 2 TO CA.0 BY 1
          PARSE VAR CA.INDEX '//' DDNAME . 'DSN=' DSNAME ','
          /* IF DD NAME IS EMPTY, DON'T ASSUME DDNAME='DD'*/
          IF DDNAME = 'DD' THEN
              DDNAME = ''
          PARSE VAR CA.INDEX '//' STEPNAME . 'EXEC' PROGNAME ','
      IF DSNAME ¬= ''
         THEN
             MATCHES.DDNAMES.INDEX = DDNAME
             MATCHES.DSNAMES.INDEX = DSNAME
      IF PROGNAME ¬= ''
         THEN
             MATCHES.STEPNAMES.INDEX = STEPNAME
             MATCHES.PROGNAMES.INDEX = PROGNAME
      END

(The above will probably make more sense if you've seen a jcl script before).

The point is that all of that is _very_ hard to do with COBOL, and, I believe, impossible with JCL [3]. In Rexx on the other hand, it's a doozy.

I also note that all of the above is nice to have in _any_ language and that not very many of the languages popular outside of mainframes let you parse strings that easily, without explicitly calling a regex library or such.

_______________

[1] I raised hell until they put me in one of those teams. I could get plenty of experience with Spring and Hibernate outside of that corp. Since I was there, I figured I might as well learn something I _couldn 't_ learn anywhere else as easily. Still, people looked to me as if I was mad. "You want to be on a mainframe team? Why?".

Dude. Big computers. Millions of users. What the hell?

[2] Note that the "REXXREPL" in my comment is a Rexx program running on TSO (the Z/OS command line, ish):

      /* REXX INTERPRET */
      REPLPROMPT = "SAY  '>>'"
      INTERPRET REPLPROMPT
      DO FOREVER
        PULL USERINPUT
        IF USERINPUT = "END" THEN EXIT 0
        INTERPRET USERINPUT ; END

The INTERPRET instruction is another funky bit of Rexx that's real cool to have on a mainframe.

[3] Though I'm sure there's someone, somewhere still on this planet who would laugh in my face for saying that. But probably no more than four or five people.

<comment><USER11> Appreciate the examples. Yeah, that looks almost like a 4GL compared to regular mainframe programming. A lot more powerful.

"Since I was there, I figured I might as well learn something I couldn't learn anywhere else as easily. Still, people looked to me as if I was mad. "You want to be on a mainframe team? Why?". Dude. Big computers. Millions of users. What the hell?"

I like your style. Same excuse I had for trying (but failing sigh) to get onto a team with SGI NUMA machines. They were confused about why I'd want to do tedious work tweaking numerical applications. For 256 CPU's and 3TB of RAM in one machine? Obviously...?

Note: I imagined it had time in between jobs and a quota system not designed with people like me in mind, too. ;)

</comment></comment><comment><USER12> I actually liked COBOL. I wouldn't want to use it anymore, but as a language it was as straightforward as one could ask for.

You can clearly see how it contains the foundations for more 'modern' languages.

Well done for taking the time to explore something that's now off the beaten path.

</comment><comment><USER13> Great, now all the hot new build tools will be JCL based.

<comment><USER14> My brain just ABENDed.

<comment><USER15> You folks think you're being funny but I have vary off the interface on our iSeries to move it to a different ethernet switch then do an IPL over the weekend.

<comment><USER11> What's the reliability of the iSeries models in terms of the per-server failures? And have they worsened or gotten better on reliability or admin side than the AS/400's that preceded them? Just curious about such things.

<comment><USER15> It never fails. Its a bit grumpy (like do not unplug the ethernet without telling it first) but its rock solid. Calling IBM is pretty easy and they I've never had a real problem. I would say it would probably if we had a newer unit since ours is about 10 years old.

</comment></comment></comment></comment></comment><comment><USER16> Go ahead and laugh at Grandma. Sure she looks weird and smells a bit funny, but take the time to listen to her, you might just learn something.

</comment><comment><USER17> I remember this from a few years ago. The only recent updates appear to be a change to the tutorial link.

If you haven't clicked through to the inspiration ([http://www.coboloncogs.org/HOME.HTM](http://www.coboloncogs.org/HOME.HTM)) then it's well worth a look. Although the Rails page doesn't look like that any more, so it's not quite as funny.

<comment><USER18> In that genre "SQL on Rails" is also quite funny.

</comment></comment><comment><USER19> Finally I can use my schemaless document oriented database online!

That's ADABAS you hipsters, MongoDB was 30yrs late to the party

</comment><comment><USER20> There are other non-free webframeworks that run COBOL and COBOL-like backends. One I am familiar with is WEbPortal from a company called Zortec in the US.

It works very well, very fast and is under active development. Although the backend can be written in COBOL, making porting to the web quite easy, the language it actually uses is called 'Z'.

</comment><comment><USER21> Lords of COBOL, hear my prayer.

</comment><comment><USER22> Can we get an E-Commerce Shopping Cart platform written on this now? I'd like mine to be faster than 10 sec loading times most offer currently. /slightsarcasm

</comment><comment><USER23> (2013)

</comment><comment><USER24> Not cool.

</comment><comment><USER25> I almost fell out of my [wheel]chair when I read the title. LOL!

</comment><comment><USER26> Good Lord… [https://youtu.be/VKcAYMb5uk4](https://youtu.be/VKcAYMb5uk4)

How about Brainfuck on Rails, then? [https://github.com/cookjj/Brainfuck-on- Rails](https://github.com/cookjj/Brainfuck-on-Rails)</comment>


Is IE9 a modern browser? - <AUTHOR> http://people.mozilla.com/~prouget/ie9/ <comment><USER2> In earlier comments, I always cautioned people about IE9 and I just didn't trust them with actually creating a browser that works.

And while I agree with the article that IE9 is still very lacking, I also just went through making the application I'm working on IE9 compliant including rounded corners and shadows plus some CSS transformations. Here's the steps I had to do:

1) don't load IE specific CSS hacks

2) don't load IE specific JS hacks

3) ?

there was no step 3.

So if you are not using all the latest and greatest features in HTML5, but try using the essentials, you will get a very good experience while trying to make stuff work in IE9: The features it has seem to work correctly for a change and it has enough features to be useful in many webapps.

Of course it's still far away from being cutting-edge in feature support, but at least the usual crap of "try to open an existing website in a new IE version: see barely any page rendered until you add a ton of hacks" has gone.

Now, if IE9 would actually run on the (still) most-used operating system (Windows XP), I would be really happy as I could tell people to get a very good experience by just upgrading their browsers (as opposed to switching browser brand).

<comment><USER3> The app I needed to convert needed several JS hacks to get IE9 working. For example Number("") evaluates to NaN in IE9 while it evaluates to 0 in every other browser. It's small things like that which cause hard to find bugs.

<comment><USER4> IE9 actually gets this one correct according to the language spec, but I assume it was a bad assumption that made it incorrect.

The Number constructor is supposed to call ToNumber on its parameter, which is supposed to return NaN if it can't parse StringNumericLiterals, which would be the case with "".

I think the confusion came from "" being treated as "false" in JavaScript, and Number is supposed to return 0 if it isn't given a parameter. I could imagine the code in the Number constructor looking like this for non-IE browsers:

      if (param)
         num = ToNumber(param)
       else
         num = 0

whereas in IE, it probably looks more like this:

      if (param != undefined)
        num = ToInteger(param)
      else
        num = 0

</comment></comment></comment><comment><USER5> This is just a troll post getting way too much attention. Let's consider a few facts to put it in perspective.

Firstly, neither IE 9 nor Firefox 4 has been released, and neither HTML5 nor CSS3 is a standard, nor will either be for several years at a minimum. The entire argument in this post boils down to not liking one experimental piece of software over another because the author's personal preferences for experimental features are not supported.

Secondly, when it comes to performance, IE has been getting better with every version while Firefox has been getting worse. If you want to talk about modern browsers in a _useful_ way, instead of about bleeding edge features that no- one will be using on mainstream web sites for a while anyway, consider that Firefox is the only one of the major browsers that does _not_ handle each tab independently, leading to obvious performance and security problems.

Thirdly, the trend for Google and now apparently Mozilla to release updates every few weeks is _not_ necessarily a good thing. The major advantage is supposedly that it allows browsers to develop faster, but as any Linux advocate can tell you, it's no good having a great platform if no-one is building great stuff on top of it. For developers, automated updates every few weeks are often unhelpful, because you're always trying to test against a moving target. When you have to deal with inconvenient realities like contracts and customer approvals on major projects, it's now almost impossible to include testing against Chrome and soon Firefox because you don't even have a stable version to use as a basis for tests. I have no problem with pushing security patches more regularly, but they shouldn't be changing functionality and obviously Microsoft does this for IE anyway.

Maybe I'm just weird, but I consider issues like performance, reliability, and having a stable foundation to build on to be far more important than supporting your own browser's take on some hypothetical future "standard", which is just IE vs. Netscape all over again. On that basis, IE is currently the only one of the big three that is actually going in the right direction. It's just a shame they're not providing it on XP.

<comment><USER6> It's more than a shame Microsoft's not providing IE9 on XP. It's positively criminal. Do you know what it's like to target IE8 with a web app that was built for a modern browser? And XP has 60% of the market!

It has been a good... forever since MS has been a proper team player when it came to working well with websites that run on all other browsers with minimal modification.

This is closer than we've ever ever been in the past to having a remotely sane reality.

So pretty please, with sugar on top, fix the fucking browser.

<comment><USER5> > It's more than a shame Microsoft's not providing IE9 on XP. It's positively > criminal.

I understand the sentiment, but I don't think that kind of hyperbole advances the debate in any useful way. Obviously Microsoft are under no legal obligation to support an operating system first released many years ago and when two successors have been out for a while now. It may be _commercially_ sensible for them to do so, but that depends on many other factors beyond the preferences of the web development community.

> Do you know what it's like to target IE8 with a web app that was built for a > modern browser?

Yes, I do that for a living, on multiple projects, and so far I have encountered no serious difficulties in doing so. What problem(s) have you found with running "a web app that was built for a modern browser" on IE8?

> It has been a good... forever since MS has been a proper team player when it > came to working well with websites that run on all other browsers with > minimal modification.

So people often seem to say, yet I find very few portability/compatibility issues with running my web apps on any recent browser. I was surprised to find that in the last problem that did arise, it was actually IE that was compliant and Chrome and Firefox that were implementing non-standard behaviour. And as I noted before, IE is one of the only major browsers that _hasn't_ been playing silly political games with blocking useful video-related technologies lately.

> This is closer than we've ever ever been in the past to having a remotely > sane reality.

I guess we just have very different points of view, perhaps born of different real world experiences. In my world in 2011, we are closer than we have been for many years to the hell of IE vs. Netscape, everything working differently in every browser, and having no stable target for development. As I see it, the blame for this lies almost entirely with Mozilla, Google, and to some extent the standards bodies, not with IE.

<comment><USER7> [backporting IE9.0 to Windows XP]: "It may be commercially sensible for them to do so, but that depends on many other factors beyond the preferences of the web development community."

It's not within Microsoft's strategy of planned obsolescence. For their continued survival they need people buying newer versions of the same software.

<comment><USER8> XP came out in 2001. According to Apple, Safari 5 requires OS X 10.5.8 (Leopard), released in 2007. Microsoft actually has a pretty good track record when it comes to supporting older versions of its operating systems. Just a bad record getting everyone to upgrade to newer versions.

<comment><USER9> Stop the presses. Apple software like iTunes and Safari STILL RUN ON WINDOWS XP. The difference is in how many users are on XP (50%?) vs. older than OS X Leopard (low single digits).

Related: Firefox, Chrome, Safari, _and_ Chrome Frame are all more advanced than IE9 and all run on Windows XP.

<comment><USER8> >The difference is in how many users are on XP (50%?) vs. older than OS X Leopard (low single digits).

And the reason for that is probably that Microsoft keeps so much backwards compatibility that the cost of not upgrading the OS is much lower than on OSX.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I'm pretty gutted by the lack of support for the HTML5 history API. Without that, we're doomed to polluting the Web with broken #! URLs (ala Twitter and Gawker) for the next five years.

<comment><USER11> I've accepted that fact and I'll just continue to serve IE9 the same degraded web pages without using the HTML5 History API.

Better browsers get a better experience, IE users continue to reload the full page for each link, and everyone uses the same non-hashbang'ed URL.

Sucks for IE users, but I'll just continue to not give a damn now that it's apparent IE9 won't be improved any more between now and release.

</comment></comment><comment><USER12> As long as <http://crashie8.com/> crashes IE9, it shouldn't be considered a modern browser. A modern browser requires a development team that is responsive to large bugs (analogous to PHP and Java being modern languages because they quickly responded to the big-magic-number bug). None of the other "modern browsers" (e.g. Firefox, Chrome, Safari, Opera) have any crash-the- computer bugs anywhere near the scale that IE9 still has.

<comment><USER13> I know that page shouldn't crash any browser, really, but the crash happens as a result of poorly-written HTML (a missing </form> tag) that IE can't seem to handle.

<comment><USER12> The poorly-written HTML, however, is frequently generated by larger ASP.NET- based CMS systems (and occasionally SharePoint servers) that start the <form> in the header and don't close it on the page. This snippet is just a shorter example of the error, but is certainly not the only instance where this problem rears its ugly head.

<comment><USER13> That would be an example of yet more problems originating from MS products, then, right? I don't see why MS can't get this right. MS has the resources to produce a good product, but when it comes to the web, they fall on their faces.

<comment><USER14> Hey check your facts. I just tried with the RC build of IE. It never loaded the site but the browser didn't crash and the rest of the tabs are working fine.

<comment><USER13> Of course I can't rule out them getting it right in future releases, and I hope that they do. I was talking about what is out there in the MS ecosystem, today.

</comment></comment></comment></comment></comment></comment><comment><USER15> Whatever. The fact still remains that IE is the dominant Browser, and being the weakest link, you have to just be happy for every feature that they add or fix, because as soon as that happens, there's a hope of you actually being able to use it.

If I were to say anything to the IE team it woud be, "Great job! Now keep going, please."

<comment><USER16> For my sites IE is no longer the 'dominant browser', it's market share has fallen to ~35%, down from >50% a year ago. Of that 35%, only half is IE8 with IE 6 & 7 making up the other half.

If trends continue, IE9 _might_ constitute 10% of my total traffic in 2 or 3 years. I 'm not looking forward to supporting yet another quirky MS based browser.

<comment><USER17> When I was talking about XHTML, I estimated that IE8 might die in 5 years after IE9 release. I mention XHTML because it is an area where IE has been the weakest link for years.

</comment></comment></comment><comment><USER18> Sadly we'll have to continue supporting inferior browsers for a long time.

Don't get me wrong, IE9 is certainly a step in the right direction for Microsoft but it still doesn't stack up. Luckily there are a lot fewer hacks needed.

<comment><USER19> Is there nothing to be done about this situation? I have a poll up and would be interested to hear your views: <http://news.ycombinator.com/item?id=2222351>

</comment></comment><comment><USER20> Lack of WebGL support is a real bummer but realistically WebGL came to late for the IE9 release cycle.

Also, I don't think Microsoft plans on supporting in in IE10. Afraid of the competition with their own tech I guess.

I'm getting all my user to switch to chrome and firefox 4, I haven't gotten a lot of complaint about it. (none actually so far)

</comment><comment><USER21> Woah, am I the only one who loves the work that has been done with IE9? Their new rendering engine is sick, Microsoft must have stolen personal from their DirectX team to work on it. Everything is hardware accelerated, the anti- aliased fonts look great, Flash video playback of 1080p uses just a few percents of CPU, something that max out a whole core for me in FF or Chrome. Same thing with moving / fading / modifying elements with JQuery.animate(), super smooth and uses almost no CPU.

I'm still a die-hard fan of Firefox because of all the plugins, but damn I wish everyone were using rendering engines as good as the one in IE9. I hope FF and Chrome will close this gap soon.

<comment><USER22> On Windows Vista and 7, Firefox 4 uses the same rendering engine (Direct3D/Direct2D/DirectWrite) that IE does.

<comment><USER23> Even with hardware acceleration in IE9 and Firefox 4 enabled, Firefox 4 is still faster than IE9:

<http://developers.facebook.com/blog/post/460/>

</comment></comment></comment><comment><USER24> So let me get this straight... IE9 is not a modern browser because it is on par w/ Mozilla's shipping browser?

If IE stays one rev behind Mozilla in terms of standards conformance, but keeps up the great perf work they're doing then I think that's actually really good. Especially considering where they were coming from.

I've been using IE9 RC (after having to revert IE9 beta -- too many bugs and issues) and it has been near flawless. I'm not sure if its a better browser than Chrome now... but its close enough that I don't miss Chrome.

<comment><USER25> I don't see a problem comparing the capability of Microsoft's unreleased browser with a browser released two years ago. Although it's much more telling to compare it to Mozilla's unreleased browser. Or Chrome.

</comment></comment><comment><USER26> As far as I know, IE9 isn't planning to support WebSockets, either. How does Microsoft expect to break back into the modern browser space if IE9 doesn't even match (let alone exceed) the current offerings from Mozilla?

<comment><USER27> "For the client side, WebSocket was to be implemented in Firefox 4, Google Chrome 4, Opera 11 and Safari 5, as well as the mobile version of Safari in iOS 4.2.[1] _However, although present, support is now disabled by default in Firefox and Opera, due to concerns over security vulnerabilities.[2][3][4]_ "

It looks like WebSockets have issues beyond lack of support in IE. I agree on the rest, but this isn't just MS not supporting them.

<comment><USER28> Even if WebSocket didn't have supposed security concerns when used with buggy web caches, I'm extremely doubtful that MS would have supported them.

<comment><USER29> I agree with you, but at this point we're just axe-grinding. It's unfair to fault Microsoft for not implementing it in an alternate reality where it was a good idea to do so.

<comment><USER28> It's been live, working, and providing awesomeness in Chrome for ages.

<comment><USER29> But not Mozilla and Opera, and Google have said they're prepared to pull support if the vulnerabilities become more than theoretical. I just don't think it's fair to single out Microsoft for not implementing something that half the browsers out there (including IE's closest rival) intentionally disabled.

I wish we could have WebSockets, but it was not Microsoft's failure to implement that made them unusable in the general case.

<comment><USER28> > "I wish we could have WebSockets"

About 20% of Mibbit users are using websocket and have been for several months.

It's inevitable that any security worries will be rectified (Hopefully by simplifying the protocol rather than adding another layer of needless complexity), and browsers will update.

MS may as well implement what exists now, even if they decide to leave it up to the user to enable it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> "The reality is that IE9 is 2 years late. Microsoft is glad to come out with the <video> tag, the <canvas> tag, SVG, and some CSS3. Like other vendors did years ago. Firefox 3.5 had the <video> tag, the <canvas> tag, Geolocation, SVG in 2009. Canvas and SVG existed 5 years ago." Don't forget XHTML too.

<comment><USER10> I don't think XHTML is particularly relevant to web browsers these days. It's still useful as a format for storing documents, but I don't see it going anywhere as a widespread format for sending documents to web browsers.

<comment><USER29> Even on sites that claim to be serving XHTML, actual adoption is pretty low. You have to set the content type in the HTTP headers (no meta tag — the actual header) to "application/xml+xhtml" or you're actually just serving quirky HTML, and most sites don't bother, because HTML turns out to be perfectly sufficient and they don't realize they're doing it wrong (+ the old IE bugs with XHTML).

For example, look at the source for W3Schools.com. Then use Firebug or curl to look at the headers. That is an HTML page that thinks it's XHTML. The poor thing is addled.

At any rate, we've done without XHTML for quite some time now.

<comment><USER17> >(+ the old IE bugs with XHTML)

Yea, more precisely the lack of support, which was exactly what I was referring to in the OP. Particularly how it lasted for 11 years after XHTML 1.0 became a recommendation.

<comment><USER29> Yeah, I know, which is why I didn't go into more detail to repeat your point. I was just saying, XHTML never really happened.

</comment></comment></comment></comment></comment><comment><USER30> I stay away from these types or articles. It is impossible to get an unbiased flamewar starter writeup. Nor do I really care. IE9 works great for me and I like they new rendering engine and javascript compilation to native code.

</comment><comment><USER31> IE9 is a huge improvement over previous versions. The big improvement in IE9 is the attitude that MS have with the browser. Clearly good HTML5 support is a big goal of Microsoft's, as well as speed, stability and javascript performance.

These things were just not there before. Sure the feature set is still somewhat lacking but they are developing at a great pace. At this rate it will soon be a true competitor to the modern browsers.

</comment><comment><USER32> Microsoft really needs to break away from the major version number releases for IE and go with an iterative approach like Google does with Chrome. For something like Windows or Office it probobly still makes sense to have major version releases because for the average computer user a new major version number means there are a bunch of new features and that they should consider upgrading. But Internet Explorer is a free product. I don't see the marketing value in only releasing major version numbers. Instead they should be constantly pushing out new stuff. At least in my opinion, that would still provide the feeling of having something fresh and new if I was receiving a constant stream of new features and bug fixes.

Even if they did get every conceivable feature implemented for IE9, it would only be current for a short time after the release. It would then sit basically unchanged for a year or more (thus seeming old and outdated) while they work on IE10. Meanwhile Chrome would have put out a ton of new features that are all added a few at a time.

<comment><USER24> Unfortunately they likely won't due to IE being big in the enterprise. This is also why they tend to not add features in between revs, just bug fixes. And even then they won't fix a standards comformance bug unless there's a security issue.

Enterprise users want to be able to say, "Use IE9 to access your expense reports, period". They don't want it to be "Use IE220.127.116.11.1.a or above" or "IE9 shipped before 10/1/2011".

Pushback from the enterprise is probably driving this more than anything else.

They could go to a model where they have a consumer and enterprise branch. And the enterprise branch syns up with the consumer branch on major releases. But that starts to sound a little chaotic (but I think doable).

<comment><USER33> > Enterprise users want to be able to say, "Use IE9 to access your expense > reports, period".

Every time people bring this up they make it sound like it's a legitimate requirement. It's not, and the cost of supporting a given browser's rolling release schedule in-house at these companies is miniscule compared to the global cost to the web development industry and user productivity of having to support three (possibly four) different versions of IE at any one time.

<comment><USER5> > the cost of supporting a given browser's rolling release schedule in-house > at these companies is miniscule compared to the global cost to the web > development industry and user productivity of having to support three > (possibly four) different versions of IE at any one time.

That's a mighty bold claim to make without any supporting data, given that the maths is so heavily stacked against you.

Suppose a 5,000 person company standardised on Chrome tomorrow and built their key in-house IT systems to support it, as many have with IE over the years. Now suppose that in about five weeks, Google push a breaking change in the new release of Chrome, that takes out some of the organisation's key intranet functionality. What would that company do?

Think quickly, because for every hour that key system is down and all the staff are stopped from working, the company could have hired an extra web developer _for an entire year_.

<comment><USER33> > Now suppose that in about five weeks, Google push a breaking change in the > new release of Chrome

No, I refuse to swallow this particular strawman that you've been using throughout the thread.

I'll elaborate. Web development projects should be undertaken with reference to the current state of support across browsers for current and emerging standards, with the expectation that such support will improve over time. Basing your tests on the rendering characteristics of a single browser at a single point in time is simply wrong-headed. So this 'breaking change' idea is not just wrong but incoherent.

Obviously 'breaking changes' can happen in the context of browser UI but (a) that has nothing to do with web development and (b) rolling release schedules are actually better at catching those problems than epoch-making version releases.

<comment><USER5> > Web development projects should be undertaken with reference to the current > state of support across browsers for current and emerging standards, with > the expectation that such support will improve over time.

Says who?

If you're developing a major project, for a major client, for serious money, then there _will_ be formal acceptance tests, and if the product you build doesn't pass those tests, you don't get some or all of the money until it does. What kind of professional web development shop is going to make that kind of commitment when the tests themselves aren't pinned down, or to make any legally binding commitment that their finished product will work properly with software that is beyond their control and not fully specified? You can't even defend this position on the basis of Agile development practices, because a six week cycle is still too short to get through a full round of development, a full set of testing at the various levels required, and final approvals, before the goalposts move again. You don't seem to acknowledge this scenario at all, but outside of relatively small projects it is the norm.

As several of us have observed elsewhere in the discussion, the major problem with making this kind of open-ended commitment when the target platform isn't known yet is that sometimes support _doesn't_ improve over time. We have even given direct examples, such as Google's decision to kill H.264 support in Chrome.

<comment><USER33> I didn't say not to test. I said not to test only on a single browser version.

> Says who?

Do you really need a list?

> when the tests themselves aren't pinned down

Test for compliance with the standard, not compatibility with the engine. If not enough engines support a feature for which the standard is still emerging _don't use it_.

> We have even given direct examples, such as Google's decision to kill H.264 > support in Chrome.

Your examples don't hold water. No specific codec support should be assumed at this point _because it's not standardised_.

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> This reads like the Firefox team desperately trying to sound relevant, as the realization sets in that they're probably going to fade away from most people's consciousness pretty soon.

Internet Explorer is, and always has been the browser that comes with your computer. It works fine, and most regular people will never bother to change it.

Google Chrome is the better browser that your tech-savvy children or friend might install on your machine, and that you'll immediately notice is better in several ways and start using.

Firefox used to hold that 2nd place, but now it's been relegated to "the browser that people who were _really_ passionate about Firefox five years ago still use". It was a great alternative to IE6 back in the day, but its time has come and gone.

<comment><USER35> Firefox 4 beta is very noticeably faster than Chrome on my Mac in heavy JavaScript/Canvas experiments. Chrome is especially a dog when in fullscreen (2-3 times slower) for some reason.

<comment><USER34> Unfortunately, this seems like another example of FireFox optimizing for the wrong thing.

To the casual user, FireFox seems "slow" because it takes 30 seconds to start up when you click its icon. Chrome takes under 5 seconds, and is thus "fast".

Nobody but you and me care about how fast our javascript runs. The FF team is trying to please us, while ignoring the 99% of users who'd prefer to just be able to check their Facebook in the morning without waiting forever.

</comment></comment></comment><comment><USER36> They can't even let: body and/or element { width:100%; height: 100%; } which is css 1, behave properly. While chrome, firefox en safari behave as I would expect it to be.

Example @ <http://www.gamenull.com/> :-(

</comment><comment><USER37> I added some annotations to the infographic. <http://dl.dropbox.com/u/534786/ie9_vs_fx4.html>

While I love the new stuff being implemented in cutting edge browsers like Firefox, IE9 is a huge step up from IE8. Microsoft had to choose what to implement, and choosing stuff that isn't likely to change soon makes sense for them. We shouldn't be expecting them to implement everything all at once. Here's to more frequent updates to IE that bring these new features once they are more fully developed!

</comment><comment><USER38> All articles from Mozilla (especially from Europe) are usually not objective, they always tend to make some buzz around Firefox. Personally I use Chrome, and used Firefox before.

I am not personally familiar with all stuff from MSFT, but I won't take Paul Rouget's trolls into account to make me an objective opinion.

</comment><comment><USER39> Its sad, many developers tend to use features that is supported by all browsers, So, it may take a while for all the cool CSS3 gradients and animations to go main-stream, just because of IE9.

</comment><comment><USER40> FF3 certainly isn't, can Mozilla just shut up and stop?

</comment><comment><USER41> <http://habreffect.ru/files/a9d/72856cf6c/242622165.png>

</comment><comment><USER42> Nice analysis by Mozilla..but I still would go with Chrome 9!

</comment><comment><USER43> We need more than just a blog post, we need this out and about all over the interwebs.

Its absolutely true, and IE9 is now catching up to firefox 3.6 (finally) and ie10 will finally catch up to firefox 4.0 (maybe) in a year. AND the article forgot to mention that FIREFOX - ALL VERSIONS - WORK ON WINDOWS XP, VISTA, 7, MAC OSX, LINUX, UNIX. Which means that if you are a MICROSOFT WINDOWS XP user, you cannot use a Microsoft browser to freaken' browse the modern web, IE8 is the only hope. There is a lot wrong with the state of IE. And technology is only one of those things. Nothing but technology is being addressed though.

<comment><USER44> Right, and Firefox just switched to a Chrome-like iterative release schedule. The main problem with IE9 is that we're even talking about a specific version. If Chrome 9 was finalized today and a new one didn't ship for months/years, it wouldn't stand a chance feature-wise either.

</comment></comment><comment><USER45> Do you really think that Micro$oft can make something modern?! they just copy Firefox with more Color and Graphics!! As they have done before with Windows, Bing, VS ,...</comment>


I Knew It - <AUTHOR> http://gilesbowkett.blogspot.com/2006/12/i-knew-it.html <comment><USER2> Forget a down arrow; we need a trashcan icon.

<comment><USER3> Bleh, I agree. But he links to an old post by Aaron Swartz with an intriguing Google critique that I hadn't seen before. Since I've slammed Aaron's blog in the past my conscience wants me to point this out.

Edit: it's at <http://www.aaronsw.com/weblog/googlife> in case anybody wants to bypass the OP.

</comment></comment><comment><USER4> I for one am a believer that once you let mediocrity in through the door, you've screwed over your company. "Bad" people hire more like themselves, and eventually the kernel of brilliant people doesn't enjoy working there anymore and leave, and you end up left with all the ok and not-so-good people.

Yes, I'm elitist. I believe that you need elite people to achieve elite things.

<comment><USER5> This sounds like the Dead Sea Effect.

<comment><USER4> Yep, but I believed that long before that article was published.

</comment></comment></comment><comment><USER6> Google may have lost some of its feel and culture as it has grown but for such a large company it is a really cool place to work.

You mention since they can't find smart people to hire fast enough they can either lower the bar or hire less. The third option is to work more on recruiting people and that is just what they are focusing on.

<comment><USER7> Which in part explains their Traffic Acquisition Costs - <http://blogs.zdnet.com/BTL/images/goog2q1.png>

<comment><USER8> Can you elaborate a bit?

I know I'm probably being dense but I'm not seeing what you mean by hiring affecting their traffic acquisition costs. All that graph shows to me is that ad revenue is growing faster than outlay for traffic.

<comment><USER7> In order to maintain that trend, Google has to both keep hiring and acquiring the best people and also do what it can in a non-evil way to prevent the best people from becoming serious competitors.

</comment></comment></comment></comment><comment><USER5> So after being hyped to ridiculous extremes, Giles, in all his omniscience, foretold that some people might not find it quite so rosy?

In other words, he predicted some people...changed their minds?

Quite the savant.</comment>


There's no such thing as Radial Islam - <AUTHOR> https://qz.com/1715375/imran-khan-at-unga-there-is-no-such-thing-as-radical-islam/ <comment><USER2> Is that where the rubber meets the road?

<comment><USER3> >Is that where the rubber meets the road? ... only tangentially related ...</comment></comment>


The Benjamin Franklin Method: How to Be a Better Writer - <AUTHOR> http://marketmeditations.com/benjamin-franklin-learn-to-write/ <comment><USER2> > _And the secret sauce is obsession._

Correct. Above all else, passion and continued perseverance are the hallmarks of anyone truly successful at their trade. There is an excellent quote from Saint Francis of Assisi that, quite honestly, explains the software engineering field about as well as it did masonry in the 13th century (or writing in the 18th century).

 _He who works with his hands is a laborer. He who works with his hands and his head is a craftsman. He who works with his hands and his head and his heart is an artist._

<comment><USER3> As an exercise to the reader, name:

1\. He who works with his hands and heart, but not his head.

2\. He who works with his head and heart, but not his hands.

<comment><USER4> Also: with his head but neither hands nor heart, and with heart but neither hands nor head.

For completeness there's the null set.

<comment><USER5> For these cases:

Who is someone who works with...

...his heart, but neither hands nor head: A blood donor.

...his head, but neither hands nor heart: A brain in a jar.

...neither hands, heart, nor head: A pointy-haired boss.

</comment></comment></comment></comment><comment><USER6> This article has some good information. Having worked hard to develop my writing process I suggest the following:

1\. Writing poetry is good, but writing (and delivering) speeches is better. Nothing ferrets out difficult to follow, unnatural or confusing language better than getting up in front of a group and presenting it. Speeches also tend to be short-form, so they really force you to condense your ideas.

2\. Writing is a multi-phase process, and each phase should be approached separately. Specifically:

2a.) The first step in good writing is to create a logical structure of your document - figure out what you want to talk about, then arrange the ideas you are going to cover into an ordered tree structure. Include questions you want to answer, any relevant research, and examples or analogies you want to cover. Personal opinions aside, Ayn Rand's The Art of Nonfiction is actually a very good guide to logical document structure.

2b.) The next step is to convert this structured document tree into prose. For this step, I suggest getting a pen and lined paper and getting away from the computer. Have a printed copy of your document tree to reference, and try to flesh it out without worrying too much about style.

2c.) Finally, transcribe your handwritten prose onto your word processor of choice, and edit for style. The basic tenets from The Element of Style are good. Favor short, direct, positive, active sentences. Focus on descriptive verbs and nouns rather than loading up on adverbs and adjectives. Try to trim unnecessary words. Beyond that, try to inject metaphor into your writing as much as possible. If you use a metaphor, try to stick with the same one for the entire paragraph. Use wordplay such as rhymes and alliterations to make important sentences more memorable.

<comment><AUTHOR> Thank you for the tip on speeches! I suspect that will help my writing sound more natural too.

As for (2c), I've come up with a similar idea for doing multiple edits. I try to focus on a different writing "axiom" for each iteration. For example, I can cut out adverbs on the first run-through, add metaphor next, etc.

StackExchange has a nice collection of writing rules here: [http://writers.stackexchange.com/questions/761/the-rules- of-...](http://writers.stackexchange.com/questions/761/the-rules-of-writing)

</comment></comment><comment><USER7> The problem with looking at how Ben Franklin developed his skills is that he had relatively fewer books to read and he had many fewer demands on his attention. For example, I read a piece a while ago discussing how Franklin learned Italian: he and some friends make a competition of memorizing an Italian grammar book.

This is a terrible way to learn Italian, by modern thinking; because almost nobody is actually going to do it, and it won't actually get you speaking Italian. It's incredibly demanding for little reward. But if you know nobody who speaks Italian, have an Italian grammar book and immense dedication, and no TV or video games to fill the long, lonely, candlelit hours, I suppose you might as well?

Similarly, hand-copying and re-writing Spectator articles multiple times in multiple forms is probably a (labor-intensive) way to improve your prose. But today we have word processors with copy and paste and blogs. Why not just write there and practice rewriting that?

<comment><AUTHOR> I don't think the main takeaway is about writing by hand. A word processor is fine too. What's important here is the act of "active writing" vs "passive writing".

Franklin's method forces you to create writing (instead of just ingesting it) and then gives you specific feedback on whether you succeeded or failed (through comparison to the original).

The dissect-chunking-integrate-feedback model works everywhere, and what fascinates me is that Franklin figured it out through his own experiments.

<comment><USER8> For distraction-free writing, instead of a word processor I recommend Draft[0].

[0][https://draftin.com/](https://draftin.com/)

<comment><USER9> I dig Ulysses for the Mac[0]. Its distraction-free mode is very nice, but the organizational tools are there once you need to start stringing together larger pieces of text.

I do wish someone would make a non-OSX version that was as nice.

[0][https://ulyssesapp.com/](https://ulyssesapp.com/)

<comment><USER10> Have you heard of Scrivener? It's available for both OSX and PC, and I believe there's an iOS version, too. It's really wonderful. The organizational tools are just incredible, and are only as complicated and involved as you want them to be.

<comment><USER9> Whoa, missed this. Sorry for the late reply.

I have! I like Scrivener as well and it's very powerful but its "does everything" functionality has led to some bloat in the UI department. Ulysses seems more thoughtfully designed but doesn't have the same breadth of features.

</comment></comment></comment></comment></comment></comment><comment><USER11> Benjamin Franklin's entire story is really inspirational. He certainly had work ethic in abundance.

If you need an excuse to practice your writing, you may want to try National Novel Writing Month[1], which coincidentally, starts tomorrow.

[1] [http://nanowrimo.org](http://nanowrimo.org)

<comment><USER8> Slightly related, if you want to practise your text generation, there's National Novel _Generation_ Month[0].

[0] [https://github.com/NaNoGenMo/2016](https://github.com/NaNoGenMo/2016)

</comment></comment><comment><USER12> Many of these methods could be adapted to cleaning up your programming-writing style.

E.g: Take existing good code written by others, make notes on what it does, then write it yourself and compare to the original.

</comment><comment><USER13> Franklin was full of interesting ideas (I think if Tim Ferriss could go back in time to interview one person, it should probably be Franklin) and I really like the idea of trying to reconstruct/emulate good writing. If you have the time, this is a great technique.

For most of us, who need to write for work, we probably don't have (or think we have the time to do that). I've found it helpful to think of the story I'm trying to tell, as a story, with a beginning, middle, and end, and a hero(es), villian(s), etc. Then, everything is about the story, not about showing how smart you are by using a lot of big words, not about hiding complexity where it's a key part of the story, etc.

</comment><comment><USER14> > If I'm a storyteller, it's because I listen

Becoming good at anything, especially writing, is a practice in developing your attention.

1) Listen and Notice what's going on around you every day. Keep a daily journal of your observations. No one creates out of nothing. We only combine details we've seen elsewhere.

2) Focus on the smallest possible detail that still captures the meaning of the whole.

3) Do this every day. Create a practice of awareness. Life is full of meaning. We just have to learn to see it.

</comment><comment><USER15> These are good exercises, but you'd think that Franklin would have figured out some principles to writing beyond just trial and error.

If there's one thing which can vastly improve writing, it's knowing how to write in simple manner. And by "simple", I mean "keeping your parse trees[0] short". I don't know how computationally intensive parsing is on an universal computer. But I know from experience that trying to read a text with long run- on sentences or with obnoxious grammatical features (like an overuse of subordinate clauses) can feel like pure suffering.

And I think this advice largely emcompasses those recommendations like "keep it short", "be direct" or "always use a period, never a semicolon". Because if you keep away from baroque parse trees, at least you won't be a _bad_ writer.

In the popular sense, at least. If you're writing literature, you can do it freestyle. You can do a whole page of flow of consciousness, have footnotes on footnotes on footnotes, whatever.

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

<comment><USER16> >But I know from experience that trying to read a text with long run-on sentences or with obnoxious grammatical features (like an overuse of subordinate clauses) can feel like pure suffering.

It seems to me that until the 20th century, this was considered the "fashionable" and proper way to write. Most of the intellectuals of the time seemed to write this way. I wonder why?

<comment><USER17> B.R. Myers had a theory on that (in _A Reader 's Manifesto_, not _The Cleanest Race_ ): a less literate people are more fond of word games. The common people like to be awed by a skill they don't have; the elites, who can read, like to show off their ability to read and write. Thus flowery prose before mass education, and again at present.

However, I'm not sure if this is true or not; I'd have to look at how many copies of various books sold in the 19th century US, which was not known for its mass illiteracy. Knowing that the Ku Klux Klan got their burning crosses from Sir Walter Scott, I'm suspecting that Myers' theory isn't as comprehensive as it looks; Scott, at least, enjoyed a mass market. (And then there's the steamers from London greeted with the question, "How is Little Nell?")

The real dynamic might be elitism -- a desire to be reading text that the populace wouldn't understand, if they encountered it. That would explain why academic prose has gotten more opaque over time, regardless of what popular fiction is doing -- and would explain why postmodern floweriness is mostly confined to the sort of books that get reviewed in the New Yorker, the New York Times, and the like.

<comment><USER18> Writing from the 19th century United States tends to be relatively complex, but grammatically so, rather than the sort of existentialist run-on nonsense with which we're latterly so often abused. Here, as a reasonably representative example, is the first paragraph of _The Last of the Mohicans_ [1]:

> It was a feature peculiar to the colonial wars of North America, that the > toils and dangers of the wilderness were to be encountered before the > adverse hosts could meet. A wide and apparently an impervious boundary of > forests severed the possessions of the hostile provinces of France and > England. The hardy colonist, and the trained European who fought at his > side, frequently expended months in struggling against the rapids of the > streams, or in effecting the rugged passes of the mountains, in quest of an > opportunity to exhibit their courage in a more martial conflict. But, > emulating the patience and self-denial of the practiced native warriors, > they learned to overcome every difficulty; and it would seem that, in time, > there was no recess of the woods so dark, nor any secret place so lovely, > that it might claim exemption from the inroads of those who had pledged > their blood to satiate their vengeance, or to uphold the cold and selfish > policy of the distant monarchs of Europe.

This was an extremely popular novel in its day, in the literal sense of "popular" \- by no means was it read exclusively among the elite, and indeed the literary elite of the time tended to regard it despite occasional equivocation as generally of good quality - although Twain, with his usual inimitable style, quite rightly suggests [2] that Fenimore's work in general should have been considerably less well regarded than it was. Nonetheless, that it was so regarded, and so widely read, can hardly be brought into question.

[1] [http://www.gutenberg.org/files/940/940-h/940-h.htm](http://www.gutenberg.org/files/940/940-h/940-h.htm)

[2] [http://twain.lib.virginia.edu/projects/rissetto/offense.html](http://twain.lib.virginia.edu/projects/rissetto/offense.html)

</comment></comment></comment></comment><comment><USER19> For those not familiar with 18th century literature, a little context might be in order.

The Spectator that Franklin made a model of is no relation of the modern magazine. This Spectator was an "essay series", a peculiarly 18th century genre, something like an editorial column without a magazine -- or a blog, for that matter.

At the time, the Spectator essays were considered the high-water mark of good style and clear expression in English.

You can read them for yourself on Project Gutenberg:

[http://www.gutenberg.org/ebooks/12030](http://www.gutenberg.org/ebooks/12030)

<comment><USER20> I imagine writing like this in the present century would read rather strange. Is there a modern equivalent?

</comment></comment><comment><USER21> If you're interested in doing these techniques practically, Arthur Whimbey's materials on writing could be very helpful. They give you a more systematic and practical approach than is presented here.

<comment><USER22> Do you have a recommended starting point?

</comment></comment><comment><USER23> I came across Franklin's method years go while reading "Talent is Overrated" and modified his strategy by coupling Anki, a digital SRS—spaced repetition system—with books and articles by my favorite authors. It goes like this: read a sentence, rewrite it in my own words on one side of the "card", copy down the original sentence on the other side of the card. Practice. Rinse and repeat.

<comment><USER24> Is it possible for you to share your deck? I read Talent is Overrated and I use Anki too.

<comment><USER23> My deck is highly tailored to authors that I aspire to emulate, however, shoot me an e-mail and send you my deck. firstname.lastname@example.com

</comment></comment></comment><comment><USER25> The mechanism of introducing an information bottleneck, e.g. by changing from prose to poetry and trying to recover the prose, seems similar to autoencoder techniques that are popular in machine learning.

</comment><comment><USER26> I decided not to read this after the page scrolled back to the top twice while I was reading, and then threw a popup demanding an email address when I dared move the mouse. That's when I closed the window.

I've had about enough bullshit "engagement" today, and marketmedications.com won't be getting visits from me until I forget how rude they are.

I'm pretty sure that if Ben Franklin were writing today, he'd want to publish somewhere that wasn't so annoying it chased readers away.

</comment><comment><USER27> If you like this article, I highly recommend checking out [https://www.farnamstreetblog.com/](https://www.farnamstreetblog.com/). It drops a lot of wisdom around making better decisions, recognizing and working towards reducing the effect of cognitive biases, and getting to know our rational and irrational selves better.

</comment><comment><USER28> How do you take notes on a sentence?

<comment><USER29> I took it to mean "put the sentence in your own words in a shorter way"

</comment></comment><comment><USER7> He printed a local newspaper and invented the farmer's almanac, but is Benjamin Franklin actually a paragon of prose style?

<comment><USER29> They could have stamped a caveat just before the descriptions of the writing exercises:

"If you're already better at writing than Benjamin Franklin, feel free to disregard"</comment></comment>


S3rver Hacker Gets Access to HostGator Admin Password - <AUTHOR> http://www.maindevice.com/2012/06/04/hostgator-systems-hacked-s3rver/

<comment><USER2> Why are you linking this terrible article? Link the pastebin: <http://pastebin.com/TrNZC349>

<comment><AUTHOR> Because the author found out about it first. And why is it terrible?</comment></comment>


A chilling step closer to secret police in Australia - <AUTHOR> http://www.theage.com.au/comment/a-chilling-step-closer-to-australian-secret-police-20150421-1mpgdk.html

<comment><USER2> I'd like to point out that it's only the ISPs that have to keep the data for 2 years. As soon as another agency has slurped it down it can keep it indefinitely.

Realistically you would have the same effect if ISPs only had to keep it for a month or a week, but that would lead people to ask other questions and to shift focus on to the agencies accessing that data and how long they get to keep it for.</comment>