The Crazy World of Code - hobonumber1
http://tilomitra.com/the-crazy-world-of-code/

======
Su-Shee
Well, this kind of insanity made me step back 10 steps and invest some time
(almost a year by now) into the "classics" so to speak.

Inspired by Crockford's talks in which he mentioned a couple of times the lack
of history and historical knowledge among developers, I suddenly remembered
that I got an education in humanities before I even went into programming and
really did start with the classics - Greeks and Romans and Philosophy - and I
asked myself why on earth I never really considered doing something similar in
computing. (Someone called it in some article I've sadly forgotten the Oxford
way - you learn Latin and Math and from there you can learn anything anyways
;)

So I decided to ignore all fashions, new things, upcoming frameworks and such
for some time until I got what I would consider (totally subjectively) a solid
foundation (not there yet, will probably take another year at least) of
knowledge.

I personally decided to define "classics" along the lines of "knowing Unix and
its history and concepts well" (re-learning shell and commandline wizardry on
top), "understand decent C and Assembler", "becoming familar with the
influential languages of important concepts like functional and OO programming
(Scheme/Lisp and Smalltalk). This includes really understanding SQL (which I
suddenly started to really like to my own surprise). Maybe I add some
PostScript and TeX along the way. I also found a new appreciation for Perl's
text processing capabilities and its influence from the 1990ies on.

Set aside that I constantly have to fight kind-of a "bad conscience" exactly
BECAUSE I'm not hurrying along to try out the latest and greatest new fashion,
I'm starting to feel a deep change in my programming skills, in my thinking
about design and I'm constantly marveling where computing already has been and
how much there is to learn from the classics. I also started to get a distinct
feeling of "Man, I just don't NEED all this clutter and stuff" and a newly
found appreciation of "simplicity" (Watch Rich Hickey's talk about "simple
versus easy"..).

I started to slow down, to think more carefully, to read a lot more on
concepts and ideas. I've finished recently Christopher Alexander's Pattern
Language book for example to get a better feel for the "orginal" idea or read
up on the history of "lean production" and Toyota's influence or looked again
at Dieter Rams' design principles (I'm German and I basically grew up with
Braun appliances, I didn't even realize how influential his designs have been
to me..)

All this changed me and my thinking about programming deeply and made me find
kind of a "central theme" or "essence" in programming and design I like and
I'm starting to strive for.

In the long run, this also gives me a foundation of how I'm judging new tools,
ideas, frameworks and programming languages.

On top of that, I'm better able to place myself into a certain "style" or
"culture" of programming I'm not going to give upon as long as I can afford
it.

Anyways - I personally think there actually is a choice whether one tries to
catch up with everything new or peek into new things selectively or just steps
back a little and watches how all this will unfold in the long run.

(I also have a long-held, un-proven personal theory that people simply like
_writing_ frameworks a lot more than _using_ them - some are just faster to
release theirs into the public.. :)

~~~
gaius
We need to rewind computing to 1990 and start again from there.

~~~
gerad
The dream of the 90s is alive in Portland:
<http://www.youtube.com/watch?v=TZt-pOc3moc>

------
moocow01
I myself have reverted back to doing "everything" myself... I don't use
frameworks besides my own crap.

The downfalls... 1) stuff can take a LOT longer to develop, 2) sometimes I
feel like I'm stuck implementing middleware when I should be developing
features, 3) there is more room for bugs to sneak in 4) scaling could be
tougher when/if the need arises

The positive... 1) I for once feel like I actually know the full flow of
execution and this at times makes certain solutions much easier 2) I don't
feel that Im on the treadmill of hopping from learning one framework to the
other 3) it grows my skill 4) I feel more like Im chiseling something from one
stone rather than tying together rocks

Im not entirely sure Id recommend what Im doing - in someways its really
stupid but I personally get gratification from it and oddly feel more
productive than when Im fusing together multiple frameworks.

~~~
amix
I do this as well - - everything from the JavaScript framework, to the ORM, to
the web-framework is built or assembled by me. I even use my own special
databases built on top of Tokyo Tyrant and Redis. It's basically my world
where I know every part of the system. This makes me super productive and I
can change anything. It's also a great learning experience. This said there is
a huge problem with this approach and it's scaling your development team...
It's hard for people to figure out how stuff works in an environment where
nothing is standard.

My plan to solve this is to open-source my tools/libraries and switch to
Flask, so at least some of the stack is familiar. Open-sourcing these tools
will force me to isolate them, clean them up and write some documentation - -
it can benefit other people and maybe open a pool of developers that know the
tools better.

~~~
jasonkester
" _My plan to solve this is to open-source my tools/libraries_ "

Quick advice: Don't. You'll make it worse.

You're already undermining your thing in that first sentence ("switch it to X
so that other people will understand it"). Turning an in-house framework into
a "ready for the real world" framework is a ton of work and will invariably
need to dull down the sharp edges and general case a bunch of things.

The thing is, those sharp edges are what make it such a good tool. You _want_
sharp edges on your tools. Dull tools might not hurt anybody else but they
won't be as good at doing what they do.

You've got something that works _really well for you_. Chances are it's so
focused towards your workflow and way of thinking about the world that it just
won't be all that useful to anybody but you. That's just fine.

Trying to make it useful for everybody else will only succeed in making it
less useful for you.

~~~
amix
Hey Jason. The general problem is hiring people when you use a lot of internal
tools - - as some of them are made in a haste and are hackish, and most of
them don't really have good documentation. But maybe you have a point and the
first step could be to clean the tools up and write some internal
documentation for them.

------
mnutt
I understand where the author is coming from, and it can be hard to figure out
where to even get started on new projects. On the other hand, I am thankful
from the _obscene_ amount of great software coming out of the open source
community every day.

While things like paradox of choice and project abandonment are worth
discussing, let's not forget that thousands of developers have found something
that they think is lacking, fixed it, and taken the time to give it to us
gratis so that we can use and learn from it. I, for one, am excited.

------
connor
Excellent critique. I feel that HN often blows by rational ignorance with some
of it's advice (<http://en.wikipedia.org/wiki/Rational_ignorance>). Sometimes
it's best to do it wrong and actually do something, rather than hopping around
per someone else's dogma and never actually making anything.

But I think it's also possible that the HN frontpage simply doesn't give a
good impression of the average hacker. The average hacker is not welding
together the latest js frameworks while tying it all together with node.js and
hadoop. Perhaps more articles on "common man" hackers could be beneficial, or
at least give some perspective.

~~~
hobonumber1
Completely agree with this. HN is great for technical discussions, but at the
end of the day, arguing over technical details doesn't solve any real problem
for 99% of the users out there.

------
alttab
Love it. Sometimes I feel like we nerds get caught in the weeds and forget to
solve real world problems. We have enough JS frameworks by now... Funny thing
is most of them are the same given a few differences.

For JS specifically, it's starting to look like there is no "right" clientside
model, at least yet. Web apps behave so differently and have different
requirements that no one framework will fix it, sort of like rails, or game
engines that solve a large class of problems pretty well.

For side projects or "helper apps" (I make a lot of them), I still use rails
238 and prototype because I'm productive with it. Think of all the things you
could accomplish if you didn't spend all that time fiddling with 0.0.1 version
software.

~~~
hobonumber1
I would somewhat agree with this. I recently wrote a completely client-side
app using a variety of different micro-frameworks. I used Parse's JS API for
my backend. At the end of the day, I felt that a traditional CRUD system on a
LAMP stack would have probably been easier to implement and would have fit the
client's requirements just as well

~~~
swah
I'm in exactly the same situation - will try to finish it anyway though, but
in general I regret that I didn't go with Flask and instead went with a
client-side + REST framework.

Even if you're doing a client side app, some views are easier to implement in
the server-side "full-page reload" style, and you want to have the option to
do that.

~~~
swah
Also, its very funny how sometimes I think I don't need the four CRUD
operations for some object ("oh no, this one works differently") but in the
end always notice I do need them...

------
powerslave12r
This has become a serious problem for me in my search for a better job.

Interviews are nothing short of awkward.

Interviewer: So what do you like to do?

Me: I'm a Python/Ruby guy. I also have worked in Java/C. Currently playing
around with node.js, machine learning algorithms, some functional programming
and pet project with my Arduino Duemilanove.

Interviewer: Sounds good, you'll hear from us in the next few days.

:(

~~~
PlanetFunk
Sounds like you're not applying to the right companies. Any developer that
comes to me with an obvious love for code moves to the top of the list. If
you're coding in your own time for fun, it's not a job, and I'd want to hire
you - in some capacity :)

~~~
nick89
The growing trend that I've seen now days is companies requiring extensive
knowledge in "this" framework. It doesn't help that every company requires a
different framework.

Interviews are a drag, and none of them like hearing that it will take one
month to become fully accustomed (in-depth knowledge) with their framework.
They'd prefer someone with limited knowledge who knows their framework rather
than one who's well versed in multiple frameworks/languages.

~~~
einhverfr
It's a pretty stupid trend too. Let's face it, the best programmers will learn
"this" framework quickly, get up to speed etc. Not only that but the
programmers you really want to hire are going to be those who love learning,
thinking, and critiquing their own code, not specialists in Framework X NG.

It seems to me that a better approach would be to put new hires into code
maintenance first with a mentor who can help them get up to speed.....

But most of us know that HR departments are not always the best judges of
talent.

~~~
alttab
This is exactly what we do where I work - a lot of our programmers don't know
Ruby when they walk in the door but that shouldn't matter if you choose the
right people. I'm scared of choosing language or framework 'specialists'
because they have a limited view on what programming is, and a cemented view
on what it should be. The only exceptions I can see are when the
specialization is language specific to the problem domain, IE C for high
performance server or system code.

Programmers who advertise themselves as "Ruby programmers" or "Python hackers"
or what-have-you come off as inexperienced and one dimensional. The best
hackers have used the right tool for the task at and, and the best hackers
have solved a wide variety of problems to require different tools.

------
wellpast
As frustrated as I am with what seems like an unnecessarily immature software
industry, I am grateful for the plethora of wonderfully crafted free
frameworks that I have at my disposal ([http://www.jmolly.com/2012/07/01/the-
wide-landscape-of-java....](http://www.jmolly.com/2012/07/01/the-wide-
landscape-of-java.html)).

I want to solve problems that need solving. I don't want to reinvent wheels.
As you grow in expertise, you get better at picking the right framework for
the right job. If you're not there yet, just make your best pick and move
forward. In the end you can make anything work, you can refactor, you can
replace. Software is malleable.

~~~
unimpressive
> As frustrated as I am with what seems like an unnecessarily immature
> software industry,

Could you expand on this?

~~~
wellpast
I didn't really phrase that right.

I often feel that the software industry should be much 'further along' than it
is. It's 2012 and most software interactions are through kludgy, blocky web
interfaces, its not uncommon for rather basically behaving systems to be
backed by millions of lines of code.

I know this is rather a soft lament, but it doesn't feel right. It feels that
with all the years we've been at this practice we should have progressed
further than we have.

~~~
gaius
We spent the 90s and 00s rewriting the 80s again and again. The 10s look like
they're going the same way. Same concepts, same functionality, different
syntax only, no progress.

I'm having a lot of fun right now doing 68000 ASM for my personal projects.
Going to try to figure out where we _could_ have been if we didn't get stuck
in a rut in the late 80s.

~~~
unimpressive
As someone with an interest in this subject, where did we go wrong? Plenty of
people say *nix. But I'm not old enough to have witnessed any of that
firsthand.

~~~
gaius
The issue is as much psychological and cultural as it is technological.

The 80s were a period of great diversity and hence progress. In that decade I
used 6502 (BBC Micro), 68000 (ST), ARM (Archimedes), there were also Z80 and
early x86s. There were many approaches to systems design, many competing
ideas, what you might call a Cambrian Era
(<http://en.wikipedia.org/wiki/Cambrian_explosion>).

By the 90s, things settled down. People (as in, "end users", the people who
ultimately pay for software) had figured out what they wanted to do, which is
forms (screens for entering data into a database) and reports (screens for
getting it out again, nicely formatted). Messaging, as in email/IM, is just a
special case of this (and today, FB et al are just forms and reports). What
was "good enough" for this was an x86 (which happened to be running Windows,
but that's irrelevant IMHO) and that became the lowest common denominator. The
diversity was still there in the form of the Unix workstation market but they
spent all their strength competing with one hand and trying to standardize
with the other. Meanwhile the relentless march of hardware continued on, Intel
was swimming in cash and none of the Unix vendors noticed, they were all
preoccupied. Now there is one architecture to rule them all (tho' ARM still
clings on).

And we the developers are to blame. We fell into a comfort zone. The users
wanted forms and reports, and that's what we gave them. Then the hardware gave
us more power and we gave them bells and whistles too. But really, that is
solved, has been solved for 2 decades now. Nearly everything we do with
computers now, could have been done in 1990, and what they did then, we do the
same now, except arguing over syntax, which of a dozen functionally equivalent
"frameworks" to use, which ALGOL-derived language to use, which desktop to use
with slightly different-looking widgets that do the same thing, etc etc etc.
All this is just procrastination. None of these things matter. But comfort
zones are, well, comfortable. It's like we climbed a small hill and stopped to
enjoy the view because we are afraid of the mountain we have to climb still.

There are a few tantalizing glimmers now, of the "next level". But we wasted
20 years dicking about.

------
Kaali
If you start your day by reading your favorite software development news
aggregation sites, containing news about interesting libraries, frameworks and
how different people have succeeded with them; you can get disillusioned about
the importance of technology choices.

Your project is not the framework you use, nor does it matter which language
you chose. It is a non-issue if Facebook or Google uses the same stuff you do.
Your projects value is not a combination of buzz-words.

Choose technology based on what gets the job done, and all the better if it
makes the project fun to do. Don't be paralyzed by the choice, focus on
solving the problems of your project instead.

Off to write a Clojure compiler in Haskell which can run natively on iOS and
translate itself to HTML5 for live development with SocketIO backing the
Closure optimized Javascript using node.js for the concurrency model.

PS. The last bit is a joke

~~~
gtrak
No doubt you've heard of this? <https://github.com/jspahrsummers/cocoa-
clojure>

------
wizard_2
Just make little things. Backbone is fun, make some little backbone
views/models, they'll work perfectly with any other JS you have. Want to try
rails? Do another little project in rails. Is it too much? try the next one
but only use sinatra. Like javascript? Do your next project in Node.js. (and
remember jifasnif!) Felt like you're in callback hell? (remember use flow
control and streams!) Try out gevent in python on the next project.

See my point? It doesn't mater what you use as long as you're making things.
Pick something and do something. Iteration can only come after you've
completed projects. Eventually you'll figure out what you prefer, and even
then it wont hold a candle to what you've made.

~~~
hobonumber1
Completely agree with this. However, when I talk to developers who aren't
based in tech hotspots, they often tell me they are lost because they dont
know what they should learn, because there's so much out there. The side
effect of this (which I have seen) is that people write off every new OS
project that comes out, because they feel by the time they learn it, something
new will be out there. I don't agree with this philosophy but it's something
that I have seen with my own eyes.

~~~
einhverfr
One of my views is that you should figure out what you want to make before you
figure out what you want to learn. Once you have a functional idea of what you
are doing, then it is easier to pick something similar, or look to library
repositories (CPAN, gems, etc) and decide what you want to do.

If you aren't in a tech hotspot and you aren't chasing jobs, it doesn't matter
what you learn. It matters what you make and how you can sell yourself.

------
gizmo686
I agree that no single person should be jumping around between all of the
languages and frameworks out there, but the diversity is a sign that there is
an active community that is experimenting with new ways of doing things. If
one of them is especially useful for your problem, then you should learn it as
a matter of practicality (mind the cost of transition though). If you enjoy
language development, then you should definitely switch to a .01 language
framework, that is where the interesting research is being done. If you come
up with something good, and work out the kinks, then mainstream languages will
start to use it.

------
felipemnoa
This article is probably appropriate:
<http://www.joelonsoftware.com/articles/fog0000000339.html>

And a quote from the same article:

>>Think of the history of data access strategies to come out of Microsoft.
ODBC, RDO, DAO, ADO, OLEDB, now ADO.NET - All New! Are these technological
imperatives? The result of an incompetent design group that needs to reinvent
data access every goddamn year? (That's probably it, actually.) But the end
result is just cover fire. The competition has no choice but to spend all
their time porting and keeping up, time that they can't spend writing new
features. Look closely at the software landscape. The companies that do well
are the ones who rely least on big companies and don't have to spend all their
cycles catching up and reimplementing and fixing bugs that crop up only on
Windows XP. The companies who stumble are the ones who spend too much time
reading tea leaves to figure out the future direction of Microsoft. People get
worried about .NET and decide to rewrite their whole architecture for .NET
because they think they have to. Microsoft is shooting at you, and it's just
cover fire so that they can move forward and you can't, because this is how
the game is played, Bubby.<<

Except that in this case the wounds are self inflicted.

------
malbs
Just use what you enjoy.

I recently had a similar experience - on a whim I decided I would learn python
by taking a asp.net mvc app I built and have maintained for the last 3 years
and port it. So I just needed to choose a python web framework right? omg. So
many, micro, mini, full stack, no stack, template engines, wsgi, uwsgi, whoa!
My head was spinning

You can be completely overwhelmed just trying to make a decision, I haven't
even looked at storage yet but I'll probably just use sqlite (the old .net one
used db4o, which ended up being a huge mistake, great tool, pitfa to do maint
on)

on a side note, loving python, and I settled on bottle, but I wrote my own
template framework called canvas, inspired by the seaside component/tag/canvas
classes.. essentially it's all just python code, no html.. example usage is
<https://gist.github.com/3087622> (i'll push it to github once I'm happy with
it, hah!)

~~~
dbaupp
That looks pretty neat: the use of context managers seems very nice.

But is "canvas" (and "HtmlCanvas") meant to refer to the HTML5 <canvas>
element? If not, I can see that being a point of huge confusion.

~~~
malbs
no it isn't, and you raise a good point, I'll change it

canvas.canvas() would definitely look weird

------
pnathan
Quite a few years ago, I decided I would simply not invest my learning efforts
into MS tech due to their acronym/framework spinning. It was a waste of my
time. Of course, this limits me in some ways, but frees me to study more
deeply into other areas.

It also happens with other tech areas. So I simply take the road around them
unless it looks like I need to use one.

My personal work is done with Common Lisp, and I would prefer to keep it that
way, by and large. It's a sufficiently extensible language that I can feel
comfortable that (1) needed features will be programmed in, using CL, and (2)
it will be stable for a _long_ time.

But I guess that's a bit eccentric of me. :-)

------
exDM69
I think this post is missing the point a little. Being a good programmer,
despite what recruitment ads like to portray, is not about being proficient in
dozens of frameworks and languages. No, it's about learning the skill of
learning new frameworks and languages.

Getting into a new platform or familiarizing with a new tool is something you
get better at the more you do it. Learning your eleventh programming language
will be easier than learning the third. Getting familiar with yet another
framework is easier if you know a few already and can compare the similarities
and differences.

And let's not forget about the fundamentals. Having a strong background in web
plumbing, understanding http and html, etc well is the key to being a good web
programmer, not which frameworks you know by heart. Knowing a little theory
about programming will make it easier to grok new languages faster.

If you're tired of constantly learning new frameworks and languages, go learn
C and systems programming. That stuff is going to stick around for a long time
and will provide secure jobs for the foreseeable future.

------
terryk88a
Pretty awesome distillation of the history of software tools since, oh, no
later than 1980.

Back in the dino days, the rate of change was tiny compared to today's daily
delta V. We mostly had monthly and a few weekly rags to tell us about the next
big thing; there weren't that many next big things, anyway. Hey, it was a
really big deal when cartridge tapes came out and we didn't have to thread a
1/2 inch magtape by hand anymore... Geez, who could forget 1-base-T
networking? or 9600 baud modems? Whew.

Don't get me started on software innovations like Oracle SQL\Forms! ManOhMan!
Fergit CICS!

 _Seriously - the barrier of entry is so low now, that the least of us can
throw something up on the wall and if it sticks or even just leaves a little
residue, the flies are all over it, preaching it up, "This is the best shit
ever."_

There _really_ isn't much new out there, mostly it's just lots of new flavor
wheels. Think "Hudsucker Proxy" at times like this...

------
itomek
oh, JavaScript you say? I stopped on jQuery! Everything else sort of flutters
by... too much! Especially since .NET is going insane right now with kick-ass
magic! So I'm still trying to catch up on .NET stuff and the JavaScript is
sort of passing in another lane, but I'm like the old lady who won't take my
eyes off of my lane beacuse I'm too scared to let go of the wheel that I'm
barely hanging on to.

Exhausting as it may seem, its far cooler than 10 years ago! As another reason
pointed out, use what you like.

ASP.NET MVC - check LINQ - check EntityFramework - check

next step, SignalIR!

next next step: Metro! :)

~~~
wooUK
I've used .NET from the start and since 3.5/4.0 its just ramped up. Feels like
every day there is a new acronym to master!

ASP.NET MVC 4.0 projects now include knockout.js by default. So that may be
around for a while if only to support .NET devs who are just using out-of-the-
box technologies.

------
gaius
This is a phenomenon limited to the frothy world of webdev. See
<http://prog21.dadgum.com/140.html>

------
pjmlp
Could not agree more.

At the end of the day, what is important is to deliver a piece of software
that works according to the customer requirements.

If the customer dictates the operating system, language, etc. Then it is
already decided what to use.

If some technology liberty is given, then it should be something that is
working as desired at the given deadline, regardless of the technology.

------
hluska
In marketing, there's something called 'the paradox of choice.' The theory
goes (and there's some decent research to back this up) that if you give
people too much choice, it decreases the probability that they will make any
decision.

~~~
hobonumber1
Actually, there's a theory very similar to that in UI/UX design. Menus that
are too large often intimidate the user and cause them to bounce out of the
site.

~~~
hluska
And here I thought I was creative for applying it to UX...thanks for this! :)

------
madrona
Getting blown from one framework to another so easily means you're not doing a
good job of getting traction on your project. Build some positive momentum and
then staying the course will become natural.

------
lifthrasiir
It's an abstraction all the way down. Somewhat related: <http://xkcd.com/676/>

------
kracekumar
The article had all Buzz words(Positive sense) except Python.

------
nlz1
Just use mod_perl. Duh!


Pandoc Markdown and ReST Compared (2013) - hidden-markov
http://www.unexpected-vortices.com/doc-notes/markdown-and-rest-compared.html
======
egh
The really nice thing about ReST is that it has provided generic syntax for
extensions, one for inline text: :foo:`hello world` and for blocks:

.. extension:: hello world

In markdown, on the other hand, you have multiple, incompatible versions which
have entirely different syntax because there is no generic extension
mechanism.

ReST feels more well thought-out, generally.

That said, I've pretty much given up advocating it, because markdown seems to
have won and has so much more tool support.

~~~
BruceM
I like ReST as well. With Sphinx, it is great for producing documentation. A
project that I work with has converted hundreds of pages of books of technical
documentation over to Sphinx and a custom Sphinx extension.

~~~
fprintf
I like ReST as well.

It's more powerful and looks much cleaner

// e.g. how do you write footnotes in markdown? And how do you do this in
markdown?

      +------------+------------+-----------+
      | Header 1   | Header 2   | Header 3  |
      +============+============+===========+
      | body row 1 | column 2   | column 3  |
      +------------+------------+-----------+
      | body row 2 | Cells may span columns.|
      +------------+------------+-----------+
      | body row 3 | Cells may  | - Cells   |
      +------------+ span rows. | - contain |
      | body row 4 |            | - blocks. |
      +------------+------------+-----------+

~~~
mercurial
Since basic Markdown is so basic, multiple incompatible flavours of Markdown
have cropped up, including Pandoc-Markdown, which can do footnotes.

------
biscarch
Pandoc is actually a really powerful tool for converting between different
formats. As an example, I recently wrote a book using Markdown (Pandoc's
version) and was easily able to export .html, .pdf and .epub from my markdown
files. The addition of footnotes and built-in syntax highlighting (with
optional line numbers, etc) was also very useful.

Pandoc can be as simple as `pandoc input.md output.pdf` but can also handle
things like a Table of Contents, different highlighting styles, latex engines
and fonts:

        pandoc --toc --variable version=0.0.1 -N --highlight-style=tango --latex-engine=xelatex --variable mainfont=Helvetica --variable monofont="Meslo LG L DZ" --chapters $(ls -d -1 `pwd`/_input/*.*) -o _output/book.pdf

I tend to set the more complicated command as a build file or alias and I've
been considering using local markdown files and then using pandoc to convert
them to .html for my WordPress-based blog.

------
frou_dh
The Markdown ecosystem reminds me of shell scripts in a bad way. There are a
bunch of subtly and not so subtly different dialects and environments out
there, and not many people have a strong awareness of these while writing, so
if something seems okay "on my computer" or in Markdown's case "on my preview"
then off it goes.

------
teleclimber
Am I the only one who feels like they were teleported back to the early 1990s
upon seeing these text files with code intermingled everywhere?

I am not bashing markdown and friends, as I understand there is a use for
these tools in some cases, but I am surprised they are so widely embraced and
loved.

To me they just evoke the days of typing an essay on dad's 386 with Word
Perfect 5.1 installed, and having to hit "reveal codes" to figure out what is
going on. MS Word won against WP when they completely did away with these
codes.[1]

Now it's 2014 and we're loving building tables by hand-crafting ASCII art.

Am I the only who thinks we can do better?

[1]
[http://www.theoligarch.com/microsoft_vs_apple_history.htm](http://www.theoligarch.com/microsoft_vs_apple_history.htm)

~~~
gkya
Most the tools we have for WYSIWYG document creation lacks _determinism_ and
_portability_. For the latter, one could argue that there are open formats,
but still, there should be a program that can interpret the format; whereas
with plain text, such a need is void, as it is possible to view the document
on any decent system. For the former, the argument might be that the modern
word processors provide the facilities to deterministically lay out a document
through the user interfaces they sport, but then because the formats they save
are either are endemic to themselves or badly supported in other software*
this feature is not of much use.

I can open a Markdown/ReST/Textile/... file with any text editor, including
Notepad, Vim, Emacs etc., and also view it through _more_ or _less_ programs,
or just _cat_ them. I can pass them through _head_ or _tail_ ; search them
with common utilities and even edit them with some others. I am not bound to
any programs in order to edit my program. If, on a computer I have to use,
there is no Word, or Writer or Pages, I can still edit/read the document. I
can read it online, via a browser. I can use programs that are decades old,
and I also will be able to read the file decades later. When I send the file
to someone else, I can be sure that they will be able to read it. Any usable
operating system has a text editor bundled. This level of portability is just
a dream for WYSIWYG editors. For these advantaged, I happily trade editing
convenience off.

* Last summer, my cousins needed to use my computer for editing a _docx_ document that was important for their undergraduate education. I was running Ubuntu OS at the time, so I told them to use the LibreOffice's word processor. The experience was bad; the document did not render properly, editing was problematic. This is the only case I can provide as an example to support my argument, as it has been multiple years since I used a word processor program.

~~~
teleclimber
I agree with what you said. I understand the advantages of markdown and why it
is adopted (particularly in dev environments).

But you seem to agree with me that the markdown editing experience leaves a
little to be desired ("...I happily trade editing convenience off").

What I don't get is why that editing experience doesn't annoy people more.
There are tons of markdown-powered blogging platforms, editors, commenting
forms coming out every day, but you almost never see projects that try to
solve the original problem.

~~~
gkya
Desirability of the editing experience is a function of the kind of editing
one does: I mostly write text-heavy stuff, blog posts, README's and similar
stuff. For these stuff, I am quite happy with markdown, vim and the general
workflow of mine around these tools; and I like that workflow. I do not need a
piece of text to be red, or be centred, or wrapped around an image. Still, me
and alike are the minority; _normal_ people want these kinds of stuff.

For instance, I've deployed (!) a couple WordPress blogs and a PhpBB forum for
a friend (yes, I'd touch none of these for my projects). When it was time to
test-post in the forum, I started explaining him the markup for PhpBB. His
reaction was this: "But in vBulletin, there is a text editor. I think I'll pay
them $400 for that." He wants to centre the text, and emphasise phrases via
colouring them red. Because he can. He is a normal person.

While I like my workflow, with markdown, vim, and a static site generator; I
do not find markdown and alike useful for any major inscription, e.g. papers
and books and alike. I'd rather use a suitable tool that takes away the burden
of manually writing the markup, and allow me to focus on content for such
work. iA Writer makes me _horny_ , but unfortunately I do not own a Mac. I
admit that I'd go nuts should I need to write a book in, say, LaTeX (or
however it is spelled). Yet, the problem of portability of files is a superior
problem than lack of convenience while editing. If I write my book with iA,
and if it goes next year, what'll I do?

~~~
teleclimber
Thank-you for the thoughtful response.

Yes, clearly the markdown thing is natural for developers. After all devs
spend all their time in cryptic text files that get transformed into something
more useful and beautiful That's their (our) thing.

And since developers are the ones who create forum software, blogging
platforms, one can only expect that their personal preferences would bleed
over into these projects.

But it's unfortunate because in the meantime we're not really advancing the
art of editing content, which is something the "normals" would appreciate.
(And I think even a number of developer-types would appreciate writing content
without markdown if you gave them something that actually worked and worked
with static site generators.)

Regarding IA, I don't have it but it says that it saves files as plain text?

~~~
bowerbird
let me try again.

if you have _specifics_ on "the art of editing content", and the interface you
want, i would like to hear them...

-bowerbird

------
specialist
Those ReST examples reminds me of the ASCII docs I'd write for my shareware
software. Fairly typical for the time.

Not so different from the IEFT Document Conventions. [http://www.rfc-
editor.org/rfc/rfc3.txt](http://www.rfc-editor.org/rfc/rfc3.txt)

Or the RFC guidelines. [https://www.rfc-editor.org/rfc-style-guide/rfc-
style](https://www.rfc-editor.org/rfc-style-guide/rfc-style)

I wrote a markdown renderer for my web dev stack. And I've been "cross
compiling" to markdown, screen scrapping docs and persisting it to markdown.

Now I realize choosing markdown was rather arbitrary (personal preference,
familiarity). Any document structure would suffice.

Nice comparison, thanks.

------
beagle3
Markdown has always looked limited and incomplete to me.

But I can't decide between ReST(+Sphinx) and AsciiDoc(+?) - ReST seems to me
like it was better thought out, but somehow my AsciiDoc documents turn out
looking better, even though I like ReST more.

~~~
lambda
Note that this article compares Pandoc Markdown to ReST; Pandoc adds a lot of
features that vanilla Markdown lacks.

Of course, this is one of the big problems with Markdown; there are a bunch of
different implementations, each of which adds its own extensions. Actually, if
you take a look at the Pandoc homepage, you'll see that it implements 5
different Markdown flavors:
[http://johnmacfarlane.net/pandoc/](http://johnmacfarlane.net/pandoc/)

------
joaomsa
For me Markdown wins just because I'm used to dealing with it daily on GitHub.

Sidenote: Wish Github Flavored Markdown would adopt some nice things from
Pandoc, like multiline tables.

------
balladeer
Pandoc and ReST are extensive, flexible, and simply complete. They are great.
I have never understood the fetish behind Markdown and the cult-like fan-
boyish approach to it. It was not needed. It would have been rather good to
standardised an existing markup (or a combination of them) than copy the
existing one and pretty much release it with a different name.

~~~
Turing_Machine
" I have never understood the fetish behind Markdown"

For one, there are multiple (and good) implementations of Markdown in
Javascript, so it's trivial to embed Markdown in web pages and do all the
processing client-side -> faster and better user experience + much lower
server load.

Pandoc a) only runs locally/server-side and b) requires a 200 MB Haskell
install before it will work.

------
nsomaru
Always wondered how Pandoc MD, ReST compare when my document type is slightly
more complex, for example: a question and answer session?

I ended up entering notes from such sessions into handwritten XML, which I am
reconsidering. What is a good format to store one's notes? I am transcribing
from handwritten text.

------
bowerbird
i am in the process of releasing "zen markup language".

it's "lighter" than all the other light-markup languages.

it's more _powerful_ than the others, including asciidoc.

it's also far more agile, and much easier to understand.

and i won't allow it to be fragmented, like markdown is.

i've coded converters in javascript and other languages.

the javascript minimizes well for inclusion in web-pages.

i have cross-plat apps, and a web-app converter with a.p.i.

output formats include .html, .epub, .mobi, .pdf, and more.

if there's anything i haven't thought of, do please tell me.

you can reach me at my e-mail address given in my profile.

-bowerbird

~~~
prairiedock
I Looked at the site for z.m.l
([http://www.z-m-l.com/](http://www.z-m-l.com/)). It doesn't seem to do math,
so it's a nonstarter.

BTW, Pandoc (which does do LaTeX math) really needs no improvement, only more
widespread implementation (e.g., an online site, and/or a chrome extension
coded in javascript.) I suppose its being written in Haskell has been an
impediment.


Poop Is Raining from the Sky in Canada, and the Government Says It's Not Planes - pseudolus
https://motherboard.vice.com/en_us/article/wjbm3w/poo-raining-from-the-sky-in-canada-government-says-not-planes
======
Nerdfest
I'm assuming it's the spinning up of "Space Force".

------
gregoriol
In 2018, none of the people impacted took pictures?..

------
h_r
Nobody managed to get a sample? This has to be easy to prove it's bird waste
or not, right? Or that it has plane system chemicals in it.

------
tqkxzugoaupvwqr
If it’s not coming from a plane then maybe someone has fun freezing poop and
lunching it into the air.

------
ENTP
Sounds like a shitstorm

------
mchahn
Big blue birds?


Did Iran Just Rocket Creatures Into Space? Sure Seems So - alexandros
http://www.fastcompany.com/blog/kit-eaton/technomix/rockets-iran-kavoshgar-3-space-race-organisms-missiles?partner=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fastcompany%2Fheadlines+%28Fast+Company+Headlines%29&utm_content=Google+Reader
======
mixmax
Guess Denmark won't be the third spacefaring nation then.

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

~~~
InclinedPlane
I guess the Chinese aren't people? Or maybe you're counting from index 0?

~~~
gcb
Or he was excluding the US. since everyone knows by now that their space
program was done in a hollywood basement.

------
streety
I can understand the use of a rat and worms as they're traditional
experimental models but why use turtles?

~~~
mhb
Gamera, FTW:

<http://en.wikipedia.org/wiki/Gamera>

~~~
GiraffeNecktie
It was a turtle AND a rat. Must be Donatello and Master Splinter

------
MikeCapone
Could this be a disguised ICBM test?

~~~
felixc
As the article points out, it's not even disguised -- a space-capable rocket
_is_ an ICBM, if you swap out the payload.

~~~
patio11
But I thought the United States and Russia spent billions of dollars on their
space programs for the Tang and cutting-edge science!

------
joubert
What does it say on the side of the rocket (besides probably the name)?

~~~
riahi
ماهواره بر سیمرغ

To echo the sibling post, "Satellite-Bearing Phoenix" is an acceptable
translation.

Literally, it is "Satellite upon Phoenix", where Simorgh is a Persian mythical
bird roughly equivalent to a phoenix of western literature (See:
<http://en.wikipedia.org/wiki/Simurgh>).

~~~
azadi
No, this is not a correct translation. The correct one is "Phoenix Satellite
Launch Vehicle" or "Phoenix Satellite Carrier". It's just a mockup at this
point.

This was just a sounding rocket, nothing more. No ICBM test, nothing like
that. Third in a series of simple sounding rockets to test telemetry and
command. First launch of such a rocket since Iran put a small satellite into
LEO last year.

~~~
Perceval
There's very little practical difference between a space rocket program and an
ICBM program. Fore example, during the Cold War, the Japanese Space Agency's
most advanced rocket was basically a direct copy of the United States' MX
missile.


Why is Machine Learning the Most Popular Course at Stanford? - aficionado
http://www.forbes.com/sites/anthonykosner/2013/12/29/why-is-machine-learning-cs-229-the-most-popular-course-at-stanford/
======
porlw
Humanities undergrads all sign up for Intro to Psych, because they want to
understand, like, how people think 'n' stuff.

Then most discover it's 90% history and statistics, with lots of debate about
what's actually true, and don't take it any further.

Machine Learning is the CS equivalent - broad appeal, but to take it any
further it's mostly maths and stats, which turns a lot of people off.

~~~
normloman
No they don't. They sign up for Intro to Psych because it's a required course.

~~~
porlw
Not where I live - unless you're studying for a Psych degree of course. Other
BA students could take it as an elective. It was by far the most popular first
year course in the Humanities department.

------
Zarathust
I don't know if it is a generalized feeling, but I sometimes tend to idolize
my University years, where I was restlessly spending my time for pure pursuit
of knowledge and truth (yeah, yeah :p). Really, those years were more about
sweat and tears and curses about the bad teachers and the poorly worded manual
and the absence of any documentation for the API provided to us (which was
appropriate to face real life, I confess).

When I say I miss University, I miss the opportunity to choose classes at
random and learn stuff I didn't know. I don't really miss the 8:30 classes and
the long hours to produce lab assignments. I don't miss the effort, I miss the
reward.

On a side note, maybe it is only their metrics about a class success and what
"popular" is that are bad.

~~~
GuiA
Maybe you should go get a PhD :) HN can be a bit anti-academia at times, but
it's actually a pretty nice place to be.

~~~
yodsanklai
It's only after you complete it that the troubles start :)

~~~
tostitos1979
I was discussing this very issue with some friends of mine last night. The
non-PhDs in the room could not believe what we were saying (core issues seems
to be very limited opportunities in academia and research labs, a very strong
job market for fresh graduates, and a general disdain for PhDs by startups).

------
ruttiger
Anyone else here also signs up for these courses, then never logs in?

~~~
kashif
I just finished the ML course.

~~~
tudorconstantin
yeah, me too

------
tudorconstantin
The article is not saying why it is the most popular course. It only says that
Ng is a personality and that ML is a hot topic these days. What is this
different from other hot topics like trading, big data, or social networks
analysis?

~~~
saraid216
In other words, it's the most popular course because it was offered near the
beginning of the MOOC craze.

~~~
yen223
Bingo. If I remember correctly, Udacity also started with the excellent AI
course by Sebastian Thrun.

------
bayesianhorse
Because it turns out Ng is doing a good job.

(Insider joke, "it turns out" is one of Ng's favourite phrases...)

~~~
Haul4ss
Concretely, you're saying Ng runs a good course. :)

~~~
smoyer
I just finished the "Thank You" video yesterday and, while I appreciate your
humor (he does say both phrases a lot), I also want to point out what makes
him so effective. It's a given that you have to be able to communicate your
subject matter, but he's got an obvious enthusiasm for machine learning. And
it's contagious - I'm a long way from Linear Algebra and Partial Derivatives
(early '80s) but his easy-going style combined with how he presents the
material makes it easy to follow along.

Now I just need a project where machine-learning would be an appropriate way
of processing data!

~~~
Haul4ss
I also finished the last of the videos over the weekend. I thought the course
was excellent -- just the right amount of detail to get you started, and yes,
his enthusiasm for the material is contagious.

Ng's machine learning is the first class on Coursera I actually saw through to
completion, and I'm a little sad now that it's over. It reminded me of all of
the best classes I took in college, how excited I was about the material and
the inevitable letdown when the class ended.

~~~
smoyer
Strange ... I felt the same feeling of sadness and it was only amplified by
the last video where he spends half the time _thanking us_ for taking the
class.

How do I even express my gratitude?

This was my second Coursera class - I started with Martin Odersky's
Introduction to Functional Programming in Scala (which I also highly
recommend).

------
sriyansa
Apart from Prof. Ng's style and enthusiasm one of the things that makes
specifically his ML class work is that he focuses a lot more on how to think
about ML problems rather than the details of solving them.

I took the course without any CS background, but with some background in
optimization techniques. And what i really took away was to model problems,
how to optimize models, how to figure out if they are working at all, and most
importantly the need to have different cross validation and test sets.

The last one is something that can be used for any statistical algorithm but
often missed by new engineers.

------
grondilu
Wasn't it one of the first course of this kind? (I'm talking about the first
edition, since it was renewed recently) If so, that would explain a lot, as
people were attracted to novelty.

~~~
henrik_w
Yes, it was one of the original three. The others were AI and Databases. I
took the databases course, and wrote about the experience here:
[http://henrikwarne.com/2011/12/18/introduction-to-
databases-...](http://henrikwarne.com/2011/12/18/introduction-to-databases-on-
line-learning-done-well/)

------
JJ216
I would assume it's because ML is just in the public's mind right now,
particularly with the advancement in technology that is occurring
(sensationalized by Kurzweil & other futurists of course)... Also, debate
always seems to pop up regarding the Turing test and whether it is an accurate
assessment of intelligence - with technology like voice recognition & siri (&
siri-like) software approaching (broaching) Turing's declarations & theory of
AI, I can understand a general curiosity from the masses from a philosophical
POV. It does seem that the Turing test could soon be passed by a computer, but
what that means (if AI is realized, or if Searle really defeated the logic of
Turing...IMO, he did not) is something people will want to understand.... if
they get bogged down by stats & CS, it seems apt; but the sign up rates & drop
rates would merely indicate a demand for the philosophy regarding ML, AI, &
current state of CS...if the courses offered are limited & people want to
learn, they are going to get attention...

------
darkhorn
Statistician here. This Machine Learning is nothing but Statistics for me.

Also as a side note, if you are going to make something based on statistics
you should consider to make it checked out by a statistician because it is
such a big field that for example it takes 4 years to become a statistician.

------
pentacore
Pop culture has a part to play, HAL and The Terminator series of movies come
to mind immediately.

------
michaelochurch
Data science in 2013 has the feel of what software engineering _should_ be,
and possibly what it was before the MBAs got involved and attempted to
commoditize development. It involves high autonomy and few non-technical
people meddle in your work or hold strong opinions of how you "should" be
doing the work. You generally get to pick your tools and set priorities.

The other major appeal of machine learning is that it touches all parts of
computer science. You might have to go to a very low level (C, assembly, Cuda)
for performance; but there's also tons of high-level work around expressing
complexity elegantly-- hence the interest in using VHLLs like Python and
Clojure for machine learning. Most professional software engineers are just
munching tickets, but if you're in data science, you get to learn about
databases, compilers, AI, information retrieval, and statistics at a more-
than-superficial level.

When you have machine learning cred, you have a much better chance of being
able to be an actual computer scientist instead of a cog in some dysfunctional
CodeFactory.

~~~
mrfusion
Any tips for a software engineer looking to make a switch to data science?

~~~
michaelochurch
1\. Learn some ML. Either use Andrew Ng's course or Hastie's book or Bishop's.
If you complete Hastie or Bishop you will be ahead (in theoretical knowledge)
of 99% of professional data scientists.

2\. Do some data science/machine learning work at your current job. It's not
an either/or between SWE and DS. Software engineering is a huge part of real-
world data science.

3A. Ask for a huge raise you won't get. When declined, say you'll take a
regular cost-of-living raise if it comes with the title "machine learning
engineer" (which, IMO, is more impressive than "data scientist").

-OR-

3B. Change jobs. After (1) and (2) you're more than qualified for a data
scientist role.

~~~
mrfusion
Thanks. Anything special to do when looking for jobs? What keywords do you
look for?

~~~
michaelochurch
It's best to do all of this when you're employed and have been at a job for at
least 2 years.

Focus on quality rather than quantity. Be selective. You can send out hundreds
of CVs in a night, but you have a finite amount of emotional energy.

Network, but the most useful thing you'll get out of connections is
information, not good-ole-boy introductions. Go to as many Meetups related to
your interests as you can. (Most cities have data science meetups, Scala and
Clojure and Python meetups, et al).

Limit yourself to one coding test per week. They're not hard or time-consuming
but they're emotionally draining.

Get a good night's sleep before the interview. If you're unemployed, resist
temptations to drink or keep an unusual schedule. You need to be "on" at 9:00
am.

Keywords in job specs don't mean a whole lot. A great HR team doesn't mean a
great company, and vice versa. People on HN say, "I wouldn't want to work for
a company that wrote job specs like that". Well, in reality, there are a lot
of good companies out there with crummy HR. So don't get too obsessed over
keywords because most of what's in a job-specs ("looking for candidate with a
track record") is non-information.

~~~
mrfusion
Thanks again! By the way, I wish I could find breakfast or lunch meetups. The
last thing I want to do after work is head out to the city, deal with parking,
etc.

------
lawzorick
Because it's the future of programming...

~~~
3rd3
At some point along the development you intuit, the question will be whether
telling a machine what to do can be still considered as programming.

------
kimchicab
machine learning is the key to future


How to Start Learning Computer Programming - Gennavfo
http://www.jeremymorgan.com/blog/programming/how-to-start-programming-for-free/
======
pubby
This article sounds like something a non-programmer would write for a research
project.

There's lots of little mistakes throughout, such as imprecise definitions for
compiled/interpreted/VMs and calling DevC++ a compiler, but beginners wouldn't
know the difference anyway.

The real problem is that there's just flat-out bad advice! Many of the links
he posts are just the first search result you'll find on Google, yet are
terrible resources. In particular, cplusplus.com, w3schools, DevC++, and
cprogramming.com are things you'll hear experts warn about for being outdated,
having misinformation, or just poor explanation.

------
craftman
This is not about starting to learn computer programming, this is about
starting to learn to get a "middle" job of programmer as proposed by persons
who do not program themselves.

If you REALLY want to start learn computer programming look at Lisp or
Smalltalk.

------
marklit
The author of this probably grew up in an environment simular to mine in the
1990s. Among my peers and teachers, everything revolved around Microsoft.
C$650 for Visual Basic Pro, Windows NT was the special platform that business
used, 'real' databases cost a lot of money.

I really wish I could go back to those times and give the open source world
more thought and attention. Free compilers, free databases and looking back at
it, PERL would have been a lot more useful than Visual Basic.

I spent years developing OpenGL applications on WindowsNT. I wasn't very good
at what I did and the market for my skills wasn't very broad.

Had I built a basic web app using HTML, Postgres and PERL I could have avoided
a lot of time spent in jobs I did not enjoy very much.

In the summer of 2002 I was trying to focus on building my skills in C++ and
OpenGL to a commercial-ready level. As a fun side project I built a mock
airline ticket booking system in PHP. The side project got my a job in Germany
and the rest is history.

Some languages and tools are more marketable than others.

------
tweiss
It's amazing to see how little has changed over the last five years - the blog
post is from 2008. I mean you would obviously pick Python or Ruby now, and use
websites like Codecademy or Udacity. But the core message still applies: it's
hard to learn to program and you will have to spend a lot of time on it. There
are still no free rides. Makes be feel better about the long hours I've spent
to learn to code.

------
tragomaskhalos
Hmmm - advice for beginners that does not mention Python or Ruby but rather
headlines with C++ (admittedly caveated)? Sorry, cannot endorse.

~~~
wyclif
It was written in 2008, so it's dated. But in point of fact, it does mention
Python as an interpreted language.

Of far more concern than the datedness of it are the grammatical errors; this
is a 5 year old blog post, so you'd think he'd have either noticed by now or a
reader would have pointed them out (please, programmers— is it really so hard
to learn the "its-it's" rule?). Now _that's_ something that could have been
done better.

------
rahulroy
If you are going to use W3Schools, you're gonna have a bad time.
<http://w3fools.com/>

~~~
Kiro
The author mentions W3Schools in a footnote and you feel you have to refer to
W3Fools. Give him a break.

FWIW I think the W3Schools PHP tutorial is one of the best out there. Straight
to the point.

~~~
greyfade
If it's one of the best, that doesn't say much about what's out there.

Giving students the wrong information (as w3schools frequently does) is worse
than giving them no information at all. To say it's "one of the best" implies
that the bar is set pretty damn low.

~~~
Kiro
I just read through the list at W3Fools and the things they bring up are
either already changed at W3Scools or something really minor they're
nitpicking about. No information is not better than information with minor
flaws.

I still believe it's a good resource which goes straight to the point. When I
google something I want a straight-foward answer and not a complicated
specification like the one at MDN or W3.org.

~~~
greyfade
When I google something, I want information that won't leave me running in
circles while I figure out why it's not doing what the docs say it's supposed
to do. I've had that happen with w3schools more often than any other resource.
It's a waste of my time, and I get better, clearer, and more accurate
information from MDN and the W3C, so I've stopped googling such things and
just go to the horse's mouth.

------
kunai
I stopped taking this article seriously at "If you want to do serious
commercial development, you’ll have to spend a considerable amount of money on
a really good suite of tools to do so".

The author must be still stuck in the 90s. With mobile app development rapidly
reaching its peak, software is a gold mine, and it costs very little to be
able to earn some extra cash off of app development.

Also, I didn't like how the author recommended Visual Studio. Visual Studio is
a closed-source, slow, resource-heavy piece of software that ONLY works on
Windows. Windows is not a very good development platform, and I'm surprised
that the article didn't mention any software for BSD or GNU/Linux (Geany?), or
any mention about standalone compilers like gcc. He just jumps straight into
the IDE portion without properly explaining how to use a compiler.

This is a decent article for anyone wishing to dip their toes into the world
of programming, but for beginners, I'd recommend a good Sams Teach Yourself
book instead.

------
tluyben2
I think he is mixing 'valuable/marketable skill' and 'programming' with his
90s comparison; it wasn't hard to learn programming in the 90s. It wasn't even
hard in (most of) the 80s. There were BBSs which contained a wealth of
information, there were tons of (disk based) magazines and there were free
tools.

Most likely you wouldn't be learning something marketable perse, however you
would learn programming in the same time as you do now. Actually I think maybe
even more efficient as there weren't the HN post distractions :) Your computer
would most likely not be connected (all the time) and multitasking wasn't very
nicely implemented or even possible, so your computer meant either running
games/software made by others or full focus on tinkering with Basic, assembly
or some of the other languages out there at the time.

------
neumann_alfred
Surely there's something here for everyone: <http://programming-
motherfucker.com/become.html>

~~~
dkd
is that site owned by zed shaw?

------
jamin
To me this doesn't focus enough on why you should choose one language over the
other. They all have their place depending on the type of applications you are
going to be building.

------
venomsnake
Find something cool you want to do with computer. Find a way to do it. At the
end you have learned a great deal of IT skills and the universe is a better
place :)

------
michaelochurch
_If you want to do serious commercial development, you’ll have to spend a
considerable amount of money on a really good suite of tools to do so, that
much hasn’t changed._

Lolwut?

Am I about to go to jail for failing to pay my emacs fee?

~~~
udp
This is very Microsoft-orientated. Even the open source software he recommends
is Windows-only (Dev-C++, Notepad++).

~~~
greyfade
... And obsolete. Bloodshed Dev-C++ hasn't seen one whit of activity in nearly
8 years (4 years at the time of the article's writing). I can't comprehend why
people keep recommending it to anyone.


Commercial CAPTCHA breakers for sale - bct
http://www.lafdc.com/captcha/

======
henning
Many CAPTCHAs are positively pathetic.

Adding little bits of salt-and-pepper noise, light-colored lines, and other
cutesy antics do nothing.

The simple fact is that machines are better at recognizing individual letters
and characters than humans are.

------
mynameishere
It might (obviously) tend to weed out the color blind, but I think these would
be hard to crack:

<http://www.toledo-bend.com/colorblind/Ishihara.html>

------
far33d
Isn't the best way to break captchas to offer "free porn"? Offer free porn,
ask them to send you their email, respond to a captcha... send out spam about
this free porn and bam...

millions of example images solved.

------
bct
I'd love to know what's written below.

~~~
ROFISH
I can't read Chinese, but I've read some English discussion about how that's
done. You know how spam filters 'learn' what is spam and what isn't, this is
the same idea. It first splits each letter from the image. Then you create an
algorithm that compares the current letter it has to process versus what it
has learned. The hard part is that algorithm. You can technically do it with
just image matching, but it's far better to programmically teach it rules like
"B" has two holes, "7" has two lines, etc. And then you feed the program the
first 1000 with proper answers and then you check and see if it's guessing
correctly.

Notice how images without proper 'rectangle-size letters' like the Google ones
are hard to crack because it's hard for a simple line searching algorithm to
find a rectangle box to split the letter. Random lines through the letters,
like in Yahoo's also mess with it.

The key is to make letters human readable, but not completely obvious to a
captcha reader where one letter ends and one letter begins.

------
rms
Is that price in Yuan?


The new branding of Ubuntu - mapleoin
https://wiki.ubuntu.com/Brand
======
aw3c2
The GTK themes seem terrible to me. Not only did they move the top buttons to
the left (good luck explaining to mom why she won't find the X where she's
used to) but also it looks very inconsistent. Also the colours... It looks
like one of those old themes why your friends still make fun of your Linux.

The web theme looks like a generic hosting company' website. Or like a
hardware manufacturer.

I love the mission though, "Light" is a very good selling point for Linux. You
might not agree about that for Ubuntu but more Ubuntu = more Linux = yay.

~~~
cookiecaper
Nobody seems to be able to explain the window controls, so hopefully we can be
loud enough to get them to switch them back. Everyone should write/harass
important people at Canonical regarding this.

I really seriously doubt they have anything approaching sufficient data for
the change. It breaks every convention a user would be familiar with (though
the controls are on the left like in OS X, the functionality of the buttons is
reversed; in OS X, leftmost closes, here, rightmost closes), including
existing Ubuntu users.

Commence pressure on Canonical promptly.

~~~
erlanger
I disagree. Apple has a quality OS that forces users to use the left-hand
buttons, and Ubuntu's perfectly free to try the same thing. In my opinion,
buttons should be placed on the left of the menu bar. I've seen that users
tend to keep their windows to the left of the screen, and left-side controls
may require less mouse movement on average to reach, whereas the right side's
edge is dependent on the window size.

I also sort of like the close button on the right with the buttons on the left
edge (reverse of OSX as you noted). I think that makes it slightly more
difficult to accidentally close the window.

~~~
j23tom
they are perfectly free to use it ....as long as they will be not sued due to
'innovative apple idea' of three buttons on the left side

------
thesethings
I am lukewarm on this specific design, but am totally happy and excited by how
ambitious this all is (not just the theme, but the logos, collateral, etc.)

I _want_ Canonical and Ubuntu to kick butt. Mark seems like he's really making
an effort to be a "product" person, which open source could use more of.
Bravo! (And this has always been reflected in Ubuntu, which I really
appreciate.)

Some nits: The new font is a step backward. The softness of the old font was
both distinct, unique, AND comfortable. The new one is not as unique. And I
don't think will age so well. (Plus, fonts and logos are not something that
need an overhaul as often as themes and campaigns. I just think it was maybe
too soon to overhaul the font. It was a strong brand.)

I LOVE the new colors. Yeah, there's an Apple overlap, but I don't think
"APPLE!" as soon as I see it.

Window controls on the left: I don't like it. I have desktops on all three
major OS's, so it's not because I'm trained for one way or the other. There's
just something that feels better about them being on the right.

Overall: I'm giving it all a chance, and will jump in with both feet when it's
released, without undoing the major changes. The main point here is: They
really care and have a vision. Whenever somebody makes a tool/OS/webapp/meal
with a really specific vision, i always give it the benefit of the doubt, and
try it THEIR way, not bending to my preferences or instinct to add salt/take
off the tomato/go to my favorite theme/etc. When I don't try stuff with that
trust, i often miss out. I hope Linux users give it a fair shot, even if stuff
feels funny at first.

------
jsz0
They need to seriously reconsider this GTK theme. I feel like maybe they're
trying too hard to look different. Does anyone actually like it? Besides bad
color selection it's inconsistent. The menubar doesn't even match the rest of
the UI which seems like the most obvious bit of consistency you'd expect. Even
between the two variants it's lacking consistently. The dark version has menus
that match the menubar color, the light variant does not. At least the old
Taco Bell bathroom theme was consistent. I may not have liked the colors but
you could ignore that easily enough. This theme just screams at my eyes and
not in a good way.

------
thejake
This is a gigantic step... sideways.

Big clunky fonts and an excessive amount of blank space. It's like the
American car of UIs.

~~~
potatolicious
I like it - Ubuntu is supposed to be the "consumer" flavor of Linux, so why
should it concentrate on information density over usability?

My mother is the type that would start panicking if her computer looked like
Mission Control in Houston, so I think it's great that Ubuntu is freeing up
some space and paying real attention to layout, and this includes proper use
of whitespace.

~~~
prog
While we are on the topic of mothers :-) I recently moved my moms PC from
Windows to Ubuntu. I stay in a different city and it was too much of a pain to
support Windows. Its been a real relief.

She is 66 years of age and doesn't know know much about computers. She started
learning to use it a few years back to keep in touch with me over email. Her
use case is primarily email, google, bank accounts and sometimes facebook.

I think Ubuntu UI is nice and clean. It doesn't confuses someone like her.
Updates also work very well. It also work quite well for a command line user
like me :-)

~~~
rdtsc
My mom is over 2000 miles away and she's had Ubuntu for over 3 years now. It
has been really easy to administer and help her use it. Every time I visit I
upgrade the version of Ubuntu and make sure that networking works reliably,
after that anything can be done remotely.

She is quite comfortable with it. What was interesting is that this is the
first computer she has really used. Most people I know started on Mac or
Windows then saw Linux. She is the only person I know that started on Ubuntu.

For emergencies I keep extra boot-able OS partitions including the original
Windows XP that came with the machine. When I show it to her she thinks
Windows is not very easy to use and looks clunky. That always make me laugh.

~~~
zaphar
My kids have all grown up with linux and we homeschool. Their only windows
experience has been seeing me run a VM occasionally. My wife is a converted
linux user as well. She can't stand windows the few times she's had it on a
laptop. I always got pestered until I installed ubuntu on it.

I sometimes wonder about all the Geeks and hackers out there running Linux/BSD
whatever and their kids/wives. Is there a waiting boom of non-windows educated
kids about to break on the scene?

~~~
wyclif
Recently I took my Debian/Ubuntu Linux-only laptop to the Philippines to see
in-laws on a vacation with my wife; she had never used Linux before. In SE
Asia it's a WinXP world, almost everyone runs pirated copies so there's not
much interest in FOSS or knowledge of Linux, OS X, or any alternate OS.

The first thing she said upon logging in to the guest acct was, "Linux is
FUGLY!", but I think she's started liking the fact that it boots quickly and
can do everything she needs with OpenOffice, evince, Skype, &c. While she is
not particularly committed to FOSS, after this trip away from home without Win
she has come to see the light. To ease the transition I installed Chrome,
added all her contacts to Pidgin/Jabber (all her old friends from the
Philippines use Yahoo! products) and I don't think she misses WinXPProSP3 at
all.

------
bugs
I really do hope this pans out so long as ubuntu stays free and for the most
part[1] open I'll support what they are doing for linux and operating systems.

[1]: So long as the base for ubuntu is free and open I'm happy and if they
create software that costs money but it is not required to have a non-hindered
user experience I'll consider them open

edit: I really hope that the orange starts getting toned down

~~~
jules
Commercial software for Ubuntu could really help its adoption. Currently
commercial software is pretty much limited to things like Maple.

~~~
bugs
Agreed, but the thing is it really is going to have to be good software.

In example it would take a very good software package to move ubuntu users
from openoffice to another alternative.

But there are some places where ubuntu is somewhat lacking that might not need
amazing software: something like itunes with a store and device support
etcetera but I can't really think of more examples.

~~~
jules
E.g. Dreamweaver, Photoshop, games. The same thing that Windows people pay
for, really.

------
htsh
The thing that immediately sticks out to me is that the bottom gnome panel is
no longer there. Up until now, default ubuntu (and gnome) setups have had one
panel at the top and another at the bottom, and the first thing I'd do on a
system is to get rid of one of the two.

This made more sense with 4x3 screens but now with many laptops at 16x9, it
seems silly to waste that much screen real estate. The mac has a menu bar up
top and a dock, but they also move application menu commands to the top,
saving some space there.

~~~
pyre
That does raise one question, though: Where will minimized windows go? Those
screenshots don't show that. They've removed the bottom bar, but there isn't
any place (that's visible at least) to select minimized windows, unless they
are planning on just using the Compiz window selector entirely for that
purpose (i.e. minimized windows just 'disappear' except from the window
selector).

~~~
htsh
I've always put those in the same bar, reducing the ubuntu menu to just an
icon (instead of the separate applications, places, & system) in a setup
similar to Windows, with open windows in between the application launcher
button (start or whatever) and the notification area on the right side.

~~~
pyre
I realize that one _can_ do that, I'm just wondering what the default setup
will be. Based on those screenshots, there will be nothing to show you a
window list (other than the Compiz window switcher). They have to have some
sort of solution or reasoning, they wouldn't leave the default setup broken
until someone configured it.

~~~
htsh
Yeah, it definitely can't be broken by default like that. And I don't really
see a need for the "applications, places, & system" menu if they can be
reduced to one button to make room.

Makes me wonder if there may be an auto-hide dock or panel at the bottom? I'm
curious to see how this shakes out.

------
jrockway
I like this a lot. I am not one to care much about looks (I use xmonad at home
and Windows XP with the blue background at work), but I think this is a really
appealing theme that doesn't get in the way; very much like OS X's plastic
theme. (Aqua got in the way, which is why Apple phased it out.) They describe
it as light, and I think that's exactly right -- it's simple, not bulky, and
colorful enough to be visually pleasing. I think people trying Linux for the
first time with this theme will enjoy it. (GNOME itself has a nice MacOS 7
feeling that I also like. I think new users will also like it.)

I am just speculating, because I just do everything in Emacs. I'm only have
GNOME around for evince.

------
jamesbritt
Does this mean that suspend and hibernation will work reliably out of the box?
Because that means way more to me than a desktop theme I always end up
changing anyway.

~~~
FlorinAndrei
Even with 9.10, booting up takes very little time. It's very impressive. I
don't even think of using suspend now.

And v10 is supposed to boot even faster. Yay! :)

~~~
bugs
Unless you are using something like a laptop and close the lid.

------
gurraman
I'm not particularly fond of the GTK-themes. It's always hard to accept new
and all, but they lack that unique touch of the earlier interface. The web
site mockups feel like a mix of apple.com and a cheap hosting solution. Now, I
get that they're merely mockups, but it tells a little about the team behind
the redesign. The logo is not bad (better in the smaller variants). I like the
use of purple. It's pretty unique (if you do not contrast their wallpaper to
certain polar aurora wallpapers) and they can totally work that color.

I would have expected something more unique -- something much more refined --
of an Ubuntu redesign than this.

------
DannoHung
Dear God, it's an unholy union of Windows and OS X.

~~~
arohner
That's been a good description of Linux UI since OSX first appeared. Before
that, it was an unholy bastardization of Windows.

------
Roridge
I love it.. change with the times, dare to be modern and move along. All
companies could learn from this.

------
timmorgan
Feels a bit too "precise" for me. Ubuntu is supposed to stand for togetherness
-- this feels a little colder than I'm used to.

~~~
mapleoin
I'm getting the same impression. This feels like it's trying to be more
corporate.

~~~
jasonlotito
It's already accomplished the community aspect. Why not try to branch out into
new areas with a fresh new look?

It's the same Ubuntu. They just need to start wearing a suit once in a while.

~~~
timmorgan
If the grassroots community feels Ubuntu has sold out to the corporate world,
things will change (edit: and not for the better). I'm not sure one distro can
be everything to everyone -- that's why we have so many.

~~~
jasonlotito
But remember that even Ubuntu has many different official flavors already. I
really don't think they are selling out, they are just putting on a new face,
and frankly, it's just a cleaner face.

------
joris
Ok, the logo's definitely quite a deviation from the super-"friendly" previous
version. It feels a lot more "corporate" to me. I really liked the friendly
feel of the previous logo, but it does tell me something interesting...

The fact that it looks more "corporate"/"professional", may indicate that
Canonical is going to pursue corporate deploys more aggressively than before.
They're still not making a profit as a company. If we want Ubuntu to continue
its prosper for a long time, it's good to keep having Canonical as its backer.

Of course you can argue whether making a logo more "corporate" will help in
selling it as a "serious" product, but that's not the point here. If Canonical
feels this will help them, it will.

------
toothcomb
It takes a bit of time to get used to a change like this.

It has been haphazard up till now version to version. And the themes never
feel totally cohesive.

Why have different logos for xubuntu and edubuntu etc, why the different
names? Why not have Ubuntu education edition. Or Ubuntu light instead?

Perhaps they should have poured money into gnome instead. And concentrated on
the logo.

Instead it looks, as other people have commented, like a bastard child of OSX
and windows.

Just pay a good designer. And keep it simple.

------
zoomzoom83
I rather dislike pretty much all of it, but I'll wait and see if it grows on
me.

In particular the GTK Themes seem really ugly. I don't like Dark themes at
all, and the light one looks too much like Plastik from KDE.

Personally I'm a big fan of the old "Human Clearlooks" theme, which I'll
probably be sticking to for some time - but I'll definitely give the new one a
go and see if it grows on me.

------
xenonite
the older gtk-theme was better, more well rounded. Too much different colors
here. Dirty - not clean. But, hey, I hope it's not final. Also too much
spacings everywhere. The fonts are still okay, even though fedora has a more
unique appearance. And why change the current font face? It's good!

------
jodrellblank
A month or so ago I linked to a Ubuntu "fix 100 trivial bugs" project,
pointing to a bug which was open for several years.

I just checked it again, it hasn't progressed. But at least there's a new
theme out.

Themes. The worst idea in computing since license keys.

------
ajross
Site down and google doesn't have a cache link up. Can someone post a summary?

~~~
sadiq
While the images don't seem to want to load there's a good writeup at:

[http://www.jonobacon.org/2010/03/03/refreshing-the-ubuntu-
br...](http://www.jonobacon.org/2010/03/03/refreshing-the-ubuntu-brand/)

------
jmcejuela
I love the new look. At first sight, they just achieved what they wanted to
express: lightness, reliability, precision.

------
rsheridan6
I am somehow reminded of those cars from the nineties with the now outlawed
purple ground effects lights.

------
badsectoracula
Are they ever going to get away from the brown color?

------
jackowayed
Wonder how much Asus paid to be the computer pictured for "10.04 has arrived"
(which I assume will be the homepage for awhile after launch?)

------
swah
I don't like it. They should just try to mimic OSX...


ECMAScript 2018: final feature set - Garbage
http://2ality.com/2017/02/ecmascript-2018.html
======
ridiculous_fish
I'm not sure about this named capture group proposal. The idea behind the
proposal is that regexp engines parse using the old grammar, but if a
GroupName is found, re-parse using a different grammar:

 _If the result of parsing contains a GroupName, reparse with the goal symbol
Pattern[~U, +N] and use this result instead._

But "the result of parsing" by definition cannot contain a GroupName because
GroupName is not part of the initial grammar.

Furthermore it appears that the named capture group backreference syntax
`\k<groupname>` is in fact valid under the "old" (no-named-capture-group)
syntax. Thus the interpretation of `\k<groupname>` depends on the future parts
of the expression, similarly to how `\3` can be an octal escape or a
backreference depending on the rest of the expression.

JS regexp parsing is already underspecified [1] and requires two passes to
disambiguate backreferences from octal escapes. Now it appears we potentially
need a third pass to disambiguate named capture groups.

[1]: [https://blogs.msdn.microsoft.com/ie/2010/08/25/chakra-
intero...](https://blogs.msdn.microsoft.com/ie/2010/08/25/chakra-
interoperability-means-more-than-just-standards/)

------
namanyayg
A quick summary of what's new:

* Asnyc Iteration: Looping over async lists, e.g, reading lines from file or an async generator.

Allows code like:

      for await (const x of asyncIterable) { foo(x) }

* Spread/Rest (`...`): Makes FP easier.

      const a = { foo: 1 }
      const b = { bar: false, ...a }
      // b is { bar: false, foo: 1 }

Works on arrays (spread operator for literals) or objects (rest operator for
destructuring)

* RegEx features like named capture groups

* `Promise.prototype.finally()` - Callback function is always executed, regardless of what promise returns.

~~~
ryanmarsh
I honestly thought object/array spread/rest were already in ES2017. Maybe it's
because I'm in my own little Babel/React world. I literally just had to stop
and go create-react-app and see if that specific use of rest/spread works and
it does. Then I went to babel's docs and found it's part of TC-39.

Maybe this is meta, but I wonder what it means for us in this ecosystem. Some
of us have totally lost touch with whether the language features we use are
supported by the runtime, or are even "canon". Right now I'm probably using a
bunch of language features in different projects that are still proposals. I
have a few handwoven .babelrc's in different projects that use all manner of
things.

I'm almost 40 now and looking back on my programming career, what we do with
JS and language features is truly bizarre.

~~~
sjellis
"Right now I'm probably using a bunch of language features in different
projects that are still proposals. I have a few handwoven .babelrc's in
different projects that use all manner of things."

This is one of the main reasons why I am increasingly interested in
TypeScript: it gives you more features than JS, but in a way that is
consistent and manageable between projects.

It seems inevitable at this point that any large project is effectively going
to be using a particular flavour of JS, with language or library extensions.

~~~
WorldMaker
Typescript has been very good at sticking to Stage 3 proposals likely to be
adopted by browsers, and providing "off ramps" if the specs change between
Typescript implementation and browser adoption. (For instance, Typescript
module syntax still recognizes a predecessor to ES Module import/export
syntax, but it provides good warnings for the out-of-date syntax and between
Typescript strict modes and tslint warnings as errors you can very quickly
migrate a project over to the standard syntax.)

------
skrebbel
The async iterators look very powerful to me. That's essentially Streams/Rx
Observables right in the language, amirite? Pretty cool, and feels very
lightweight. Like, an async generator is how you can write a map/filter/etc
over existing streams (eh, async iterators), seems quite nice.

But I bet I'm missing something important. Rx is pretty huge and it looks like
this feature isn't really. Does anyone know more, from the trenches? What are
the downsides? Does Babel compile it well? Are all important use cases
covered?

~~~
WorldMaker
Async Iterators are orthogonal to Streams/Rx Observables. Async Iterators are
async "pull" operations (think disc I/O; pulling data record at a time from
disc) and Streams/Observables are async "push" (think events like mouse
clicks).

They work great together, using each's strengths to specific needs in an
application.

Additionally, a lot of the weight of Rx is its large set of "higher order
functions" beyond the basics of map/filter/reduce. Similar higher order
functions are possible for async iterators. One such library for that is Ix,
maintained by some overlap with the Rx team, and maintaining some consistency
in operator names and APIs.

I've been using Async Iterables fairly heavily lately in an application in
combination with Rx-like Observables (using the xstream library, rather than
Rx) and Ix operators. I've been letting Typescript do all the downlevel
compilation, and have been pretty happy with it in the use cases where I've
been using it.

~~~
skrebbel
Hmm I don't follow. Wouldn't a generator function producing async iterators be
"push"? Without any Rx involved?

I mean, ever since JS got generators, it has support for unlimited length
iterables. Isn't an unlimited iterable of promises precisely what you describe
as a push stream?

I didn't dive deep, but I do believe I was able to cook up a generator
function that produces an async iterable of mouse events. It was able to `for
await` it and console log the event data.

~~~
WorldMaker
Certainly there are overlaps in what you accomplish with both technologies,
and the push/pull analogy isn't necessarily the best analogy to explain the
distinction, but it's the best one I currently have.

Async Iterators/Generators are seen as "pull" because your "main thread" has
to actively consume it (you `for await` results), whereas with Rx
Stream/Observables your "main thread" passively subscribes to updates.

It probably still seems like a semantic distinction at that, especially as you
can relatively easily convert between them. However, a lot of the big
differences come down to how each technology deals with A) pressure (lots of
items/events), and B) scheduling "intermediate" work (iterables do more work
on the "main thread"; streams/observables are better at/have more tools for
chunking work on a scheduler/thread pool outside of the "main thread").

Which is also why JS isn't exactly the best language to discuss the
differences between async iterators and streams/iterables, because a lot of
those biggest differences/distinctions aren't very important in mostly-single-
threaded browser JS, which is its most common problem domain.

------
a13n
Have been using the spread operator via Babel for several months now. It's
definitely convenient - saving me from writing several extra lines of code.

I worry that spread operators make code less readable. You really have to
squint and think more when confronted with one.

They also make your code less understandable to a beginner, or people coming
from other languages.

One of my favorite ways to use them:

      const foo = {};
      if (bar) {
        foo.bar = bar;
      }

Turns into:

      const foo = {
        ...bar && {bar},
      };

~~~
masklinn
… Wouldn't

        const foo = bar ? {bar} : {};

be both more efficient and more readable?

~~~
a13n
Well typically there are more parameters being set than just the one.

------
rbobby
All I want is a datetime literal: #2018/01/31 17:00:21.2234233#.

I don't even care that it isn't backwards compatible. Eventually platforms
will catch up... so the sooner it's added the sooner everything will catch up.

~~~
gmac
Is that because you want date/times in JSON? Shouldn't it include a timezone,
and maybe implement ISO8601?

~~~
rbobby
2 things I want in JSON:

1\. Datetime

2\. Expand the encoding to escape '<' and '>'

Being able to specify a datetime as local vs utc would also be nice... so
"2018/01/31 17:35:21.2222Z" for UTC and "2018/01/31 17:35:21.2222" for local.

As to the actual format used... that it's just a bikeshed argument waiting to
happen. I picked y/m/d for no particular reason (well... other than my ancient
preference for a simple sort key). I also picked 24 hour time for no
particular reason (well... other than my ancient preference for a simple sort
key).

No one would really care too much one way or another what the format was (so
long as it was easy to generate using common server side technologies... node,
php, java, .net).

~~~
throwbsyxgsbend
You can use Unicode escapes for < and > if you need them to be escaped. (Which
is unfortunate, but defense in depth I guess.)

------
gtirloni
I understand JS was an experiment and that there was much to add to make it a
proper language, but isn't it good enough now? Can we expect the pace of
changes to slow down (specially in light of WebAssembly)? I'm not a JS
developer and/or language developer, honestly just curious.

~~~
chatmasta
If it’s not breaking backwards compatibility then what’s the problem with
improvements?

~~~
akvadrako
It obsoletes older browsers. For a while it used to be you could browse the
web with almost anything, even a 10-year old Netscape. Now it's the norm that
a 4 year old browser isn't supported, because of new APIs and JS syntax.

~~~
tcd
Why do people like you feel that's acceptable? Software can work from anywhere
between a few hours to a decade before an update is required, and it entirely
depends on what you're doing.

Websites evolve, and that's the choice of developers around the world. You
have no right to complain if you don't keep your software up to date to a
reasonable level.

If you want to use 4 years old software, you MUST accept things are broken and
that it's your fault. Try downloading Firefox 1-10 and see if they work today
;)

~~~
akvadrako
I'm not necessarily against forcing upgrades because it comes with advantages,
but I was explaining the tradeoff. It's one good thing about Apple and if say,
domestic power outlets could change every few years, we could get higher
voltages, DC, built in networking, more compact connectors, metering features,
etc...

But if everything operated like the web ecosystem, we might consume 100% of
our time and money just on upgrades.

And it pretty much guarantees there will only be a handful of vendors, because
it's very expensive to stay current.

------
tomxor

        RegExp Lookbehind Assertions

Finally... I've had to lookaround it's absence too many times.

~~~
Schaulustiger
I've always been baffled by the absence of lookbehinds. Made a lot of regex
searching unwieldy, so I'm glad they finally added it together with named
capture groups.

------
Myrmornis
I couldn’t immediately see any proposals for list/set/object comprehensions at
[https://github.com/tc39/proposals](https://github.com/tc39/proposals), are
there any?

~~~
turdnagel
I don't think those are happening, but how about basic set arithmetic? The
fact that you can't do difference / union / intersection using the standard
library is frustrating.

~~~
pitaj
There's a proposal for that.

~~~
epmatsw
Two of them now. One to add Set-specific methods, and another to port the
usual Array.prototype methods over to Set and Maps. Can't wait!

[https://github.com/tc39/set-methods](https://github.com/tc39/set-methods)
[https://github.com/tc39/collection-
methods](https://github.com/tc39/collection-methods)

------
EugeneOZ
Thank you so much for "finally"!

------
behindmyscreen
WASM will eventually completely replace the need to use JS for any web
development. That will be a good day.

------
mproud
Are there polyfills available for any of this?

~~~
paxunix
You generally can't polyfill an operator or things that require changes to
language parsing, but you can run it through a transpiler like Babel so it
converts everything to an earlier version like ES5 with more widespread and
stable feature support.

------
Alreadyobsolete
The Rest and Spread operators are interesting, I think they're cool syntactic
sugar and they've got reasonable use for some types of functional programming,
but they feel like a ticking time bomb. It doesn't exactly promote resilience
if objects are being passed around many different contexts. It seems like it
promotes clunky boilerplate checks over more explicit logic

------
qualitytime
Funny how the "final feature set for 2018" is nailed near enough Feb 2018.

Call me stupid, when I'll get whiteboard tested on these shiny new concepts,
but I really don't (and you shouldn't also) give a rats ass about all of this.


Haskell.org is down - klrr
http://www.haskell.org/

======
cduser
So?