skysight-inc/HackerNews huggingface dataset:
What I have seen happened on badly engineered large projects is people blaming it on dynamic typing because there is no documentation and no structural integrity in the project.

This can be a problem in static languages with good type inference, too. When reading code in older static languages like C++, you'll find a bunch of variables and types declared, but powerful and concise languages such as Scala have much less use for intermediate variables, and type inference means that intermediate variables are almost never declared with a type. Field types and method return types often aren't declared either. I don't know if this is a good thing because it forces you to read a lot of code, or if it's a bad thing because it forces you to read many unrelated bits of code when you're trying to get something simple done.
For some people the JVM is a deal breaker. I can't say it's a deal breaker for me, but I do understand some of that sentiment.

You can't write command line tools in any JVM language because of that long startup and warmup period, and you're always going to suffer from excessive memory consumption.

Also, lack of easy access to C/C++ code is problematic for some types of software.
Creating wordpress dump(.wxr) using unix and mysql
This was a very good article. I have never thought about or considered looking at potential costs this way. Thanks.
I've been digging into Clojure and reading Paul Graham's On Lisp. So I've been wondering about Python vs. Lisp lately, esp. on the topic of dynamism. I wish I knew more about Lisp to delve into this further, but your first para caught my eye.

Is it not the case that in Lisp people tend to use values — lists of (probably immutable) data — rather than objects? Objects are in and of themselves their own flavor of custom, specialized language for interacting with a data structure. In Lisp, the language for interacting with lists of lists or what have you is, well, Lisp.

IME duck typing is not a real answer in this situation; that helps when you are programming to an interface in the standard library, or in an API you are using. Otherwise I end up hunting down information about a data type through N layers of method and function calls. Not a good time. :( This actually drove me towards Go as a language with comparable productivity but with a type checker, et al.

I'm not sure where Lisp macros fit into this, if they do. I expect they have a tendency to boil down frequently repeated patterns into something very compact and less error-prone.

As for IDE support, Rob Pike suggested (not in so many words) that if you need an IDE for your programming language, it suggests that something's probably wrong with that language. He's not disputing that people genuinely need them, because yes, jesus h, I really do need Eclipse when you're programming against a reasonably large API. I think I find this line of reasoning more convincing than I would have, say, a year or two ago.

Anyway, for my part, ST2 was enough of a Python IDE for me. And thanks for the tip about Pyflakes, by the way. There's guard[1], which I figured you could rig up with python -c or whatever the flag is to compile. Pyflakes looks easier.

[1]: https://github.com/guard/guard
It was a difficult thing that was made more difficult
by one of our investors who was just an absolute
bastard, nobody should ever take money from them.

Anybody know whom he's referring to? Pretty harsh.
Tartine Bread
http://www.amazon.com/gp/aw/d/0811870413

The Bread Baker's Apprentice
http://www.amazon.com/gp/aw/d/1580082688/ref=mp_s_a_1?pi=SL7...
When a submission is new and has no comments, the link to the discussion
page reads "discuss".

When a submission is active and has comments, the link to the discussion
page reads "# comments" where the "#" is the number of comments.

After some period of time (yes, I know it's more complicated than just
time), the comments on a submission are disabled. Of course, this is
good, and it stops the stupid bot that always posts "This is why we
can't have nice things."

The trouble is when comments are disabled, the various submission
listing pages reads "comments" without the leading number. Since we're
trained to expect seeing a leading number from active threads, the
expectation when seeing just "comments" is that there are no comments at
all. It would be better if closed submissions are marked "# closed" or
better "# comments (closed)".

Although it seems you have a special exception for this "Feature Request"
thread to allow submissions even though it's ancient, it still reads
just "comments" without the leading number, and hence, we've got no clue
how much reading we might have to do.
When I'm browsing products on Amazon, I've found the reviews there to be very helpful and they've saved me from buying a lot of terrible products.

And on the flipside, I've never bought something because of good reviews that all turned out to be lies when I had the product in my hands a couple of days later.
> The code to call super is awkward. Instead of saying super(MyClass, self).foo(), I would rather just say super.foo().

That's been changed in Python 3. Although it brings other issues.

> Creating a class method using a method decorator. Using a decorator to do something like this seems like a hack to me.

Why? Even more so, why is a decorator more of a hack than adding a new keyword (java) or special-casing method declaration (ruby) itself? Note that you can also create class methods without decorators if you wish to, by using a metaclass (I believe the method won't be accessible from the instance though)

> This seems weird and inconsistent with the how method declarations work.

It's actually very coherent: every binding created in the class scope is collected and set on the class object, as if passed as the third argument to `type`. That's it. Some objects (functions) are processed a bit more, but they still end up in the same place.

> methods only become class methods when a decorator is used

That's because the decorator is basically a flag to tell the attribute-resolution process to handle this method differently from the normal method-resolution process.
Thanks for the link!!! That too, is awesome.
10 Principles of Effective Web Design
I endorse Go as a substitute for Python. Seriously! It may read like a spiritual successor to C, but in practice, with type inference, GC, and struct/map/slice literals, it's very (as the golang people put it) light on the page.
Amazon Announces New Kindle Family with Audible and X-Ray Technology
Amazon confirms: All new Kindle Fires stuck with ads
> (number of transistors per chip doubles every X amount of time)

That's closer, but still not there. Moore was more specific: He talked about the chip that currently has the lowest price per transistor.

What really amazes me, is that Moore's law works backwards, too, for much longer periods than Moore had fitted the data to. You need to relax the definition of transistor somewhat, though. But punch-card looms still fit the pattern.

On a tangent: I wonder how long exponential progress in falling prices will last in the fields of genome sequencing and synthesis. (I've also read that rechargeable batteries currently improve by around 8% a year. I don't remember by which metric exactly, though.)
Check out the site Cookers for Engineers.
When I'm travelling about, I might not have easy access to a printer. This penalizes low-income and high-mobility travelers.
Similarly weirdly, the string join method really confuses me:

''.join([1, 2, 3])
Also worth pointing out this is one cheaply preventable dangerous medical treatment.

If people start going to doctors before they get sick, we

a) save a huge amount of money

b) create an incentive to advance preventive, low-cost medicine

c) get a better understanding of how medical conditions evolve within the community

All three are worthy goals (and b may even spur a very profitable industry)
Tie Your Shoes and Pull Up Your Pants
There is huge programmer bigotry against writing code in a readable font. I do not understand why.
True, but it has to be said that for NLP, scientific computing and datamining, Python is used as a job control or glue language. The actual algorithms can't be written in Python and that is Python's biggest drawback for me.
I think Elon Musk has surpassed Steve Jobs as the best entrepreneur of the century (IMHO)
> More frustrating to me is that there isn't an imap/ifilter builtin

FWIW, alongside the demotion of reduce to the stdlib Python 3 changed that, the builtin `map` and `filter` now return lazy "views" (as do e.g. `dict.items`, `dict.keys` and `dict.values`):

# python 2
>>> map(sys.stdout.write, ['foo', 'bar', 'baz'])
foobarbaz[None, None, None]

# python 3
>>> map(sys.stdout.write, ['foo', 'bar', 'baz'])
<map object at 0x10071cfd0>
The Clojure language is great, but the dependency on the Java ecosystem and the JVM are deal breakers for me.
Maybe you meant something more specific, but you seem to be implicating yourself. Here's what you said above:

"If a UX designer produces mocks and designs, they're a designer. If they produce software prototypes, that's called an engineer."
The failure of fly-outs
Adding an OCaml-inspired ability to have multiple modules per file, might be good enough to get the namespacing right.
I agree it's not wonderful for command-line tools. We're writing a fairly large app with it (everything behind https://circleci.com). Instead of single-run command line tools, you write functions that you call from the REPL. Took me a while to get used to it, but it's pretty great once you switch over.
JavaScript also has much better scoping--Python's using = for both defining and setting variables makes life much more difficult.
That is looking at it from the perspective of the individual. But the company can choose to not care about its individuals and just try to get the most out of them until they burn out. While not optimal this is pretty common in some startups in my experience.
No, because space alignment only happens within blocks of common indent level. It works, try it.
Not that I want to distract of your righteous rant, but threads also work without issues when doing mostly IO: C libraries and implementations are free to release the GIL (and often do). So if you want to e.g. fetch a bunch of things concurrently, those will be done concurrently. And your

> have to run concurrently, even though they never do.

is way off base.

Likewise, if you're doing CPU-heavy crunching (likely implemented in C or Cython), you can release the GIL and let the interpreter run some other bytecode at the same time.
> JavaScript also has much better scoping

Though I generally agree, that's as long as you mandate linting. JS's implicit globals are even worse than Python's implicit scoping.
New York City says cabs can’t use Uber app for collecting fares
Why? To be honest, I used to think that, but then I actually tried it and haven't had any problems there.
I think "scripting language" is not the fairest identification. But not for the reasons most people don't like it: quite the opposite! For me, the issue is not that you can use Python or JavaScript for general-purpose development--although, of course, you can--but that you can actually use Haskell for scripting. And it's actually very good at it, too!

I've been replacing my shell scripts with Haskell scrips lately and the transition is going well. Soon the only two languages I will ever need are Haskell and elisp!
> Pyflakes looks easier.

Look up flake8, it runs both pyflakes and pep8, and can optionally warn about cyclomatic complexity as well.
Which is so funny because when music is produced digitally (99% of the recordings in the past decade) a CD can be a bit-perfect copy of the original mastering.

A vinyl record is a stamp of a stamp of a stamp of a scraping of the original master. Better than a CD? Evidence of complete mental breakdown, more like.
Well at least he's upfront about it. Better than an org that says you should work 40 hr weeks then presses deadlines so hard you have no choice than to go over.
Semantic spacing (indent with tabs and align with spaces) is the standard in Go, enforcrd by gofmt. The compiler doesn't distinguish whitespace, though.
Ask HN: interesting tech people you follow on Twitter?
Whom all do you follow (or have them listed) for those interetsing tech realted nuggets of wisdom - developers(any programming language), founders, funders etc. Some thing like HN-lite on twitter.

Here are a few from my list:
@paulg
@sivers
@jack
@codinghorror
@spolsky
@mfeathers
They do interrupt a certain amount of my bandwidth, which they must use to download the ads.
only somewhat. But techcrunch cant think outside of superlative and hyperbole.
The reason you're getting requests for a "tablet version" may be because (when I tested it out) you're redirecting tablets to the m. version of the site. As you said, a tablet can handle much of what a desktop can, so tablet users tend to be a little annoyed when they are forced onto a version of the site that is clearly made for smaller devices.

I think if you alter your redirection rules to allow tablets to go to the main version of the site, that may satisfy most of your users until you can get a responsive design going.
> I'm reasonably sure there was an implicit "and be productive" in there.

Right, let's move the goalposts and reduce the target, was there also the implicit assumption that the language should have a C-style syntax, be statically typed, run on a JITted runtime and be maintained by a big company?
Twitter’s API changes are messing up my startup — and Twitter
My biggest problem with Python is not that it's a bad language but that it isn't a great language. Why is this an issue? Simple: it's one of the most highly rated--and, frankly, overrated languages today. And, try as I may, I can never seem to get away from it: at least in my circles, it's even more endemic than Java!

I really wish people liked OCaml or Haskell that much instead.
I really don't know why people are so surprised/amazed by this kind of stuff. As soon as JavaScript had access to pure image data in the browser there was nothing else holding it back from these kinds of algorithms. It was always the sandbox that was holding it back, not the language.

Cool none the less...
When all commenting is closed on a submission, all of the 'reply' links
are replaced with '----'.

It would be better to use '(closed)'.

When your anti-flamewar code kicks in to slow down posting by preventing
replies, the 'reply' link is also replaced with '----'.

It would be better to use '(paused)' or '(wait)' or best of all,
something more informative to describe what is going on. Simply not
being able to reply to a post and the 'reply' link showing as '----'
fails to instruct the user of the reason, so you're wasting a valuable
opportunity to teach them something.

You could even replace the 'reply' link with a link to something else
(instructions, guidelines, faq, ...) as well has have more descriptive
text for the temporary anchor.
Should the Boss Learn to Code?
So I Made A Mashup, And Then…
I find the reviews themselves helpful, the scores less so.

It seems that scores follow an interesting distribution, people mostly review things they love or hate. People rarely seem to want to take the time to point out something is just ok.

You see this bimodal distribution for Yelp restaurant reviews. Reading through the reviews I find the reasoning of a lot of reviewers quite spurious. I think it would be an useful application of machine learning to determine the validity of claims and generate a real score, an automatic Zagat-machine.

It's worse for complicated products, if I was a manufacturer I'd want to be able to rebut them. For example, I was looking to buy a coffee grinder and the reviews were all over the place. It's obvious that a lot didn't read the instructions or had higher expectations than a product at that price point would provide. People complain that a $30 item is made mainly of plastic.

One of the advantages of Amazon is the sheer quantity of reviews for most items, the outliers--whether positive or negative--get lost in the noise. It does penalize products with only a couple of reviews, it starts to make you nervous and reconsider the purchase.

This really is the tyranny of choice, you waste a lot of time looking for the "perfect" product, when traditionally you'd just walk into your local store, make a decision based on imperfect knowledge, and probably be happy with what you ended up buying.

A good example is my recent purchase of a nail brush from Amazon. It's a sub-$10 item that in the past I'd have just walked into my local drugstore and picked up the cheapest out of whatever they had in stock. The category[1] has 843 products that I wasted a good hour deciding on the "best" to purchase.

[1] http://www.amazon.com/s/?url=node=11063531&rh=n:3760911,...
These are some things I just assume are Internet habits
I have owned every Kindle including the Fire, but I will not purchase a device with mandatory ads.
Out of character for a scientist? You mean, besides Werner Heisenberg, Freeman Dyson, Francis Collins, Richard Smalley, and Donald Knuth? This meme needs to die.
With duck typing, that shouldn't matter. Lots of methods in the Python standard library take "file-like objects" that have read() methods and no common superclass, and that works fine without read being a top-level function.
I think it would be much more inviting if you could at least search for people without having made an account. As it stands I have no idea what kind of people I could talk to, so I have no idea if it would be worth giving up my email address.

Edit: Interesting idea, though. With social networks like Facebook you really need to have met in order to befriend — it doesn't encourage random meetings. When I was younger I would find likeminded people by chance on odd websites; I think that's become harder as I've grown older.
Needle beam could eliminate signal loss in on-chip optics
Hong Kong Backs Down on ‘Moral Education’ Plan
In theory, your IDE/editor should cooperate with the compiler and display the inferred types for you, if you choose so.
I am consistently amazed by the durability of this "cloud" hype. I mean, it's been at the peak of the hype cycle now for what, six years? I have been expecting a backlash for most of that time, and even now, when I make comments that are not glowing about "cloud" I get funny looks.

Part of this is that 'the cloud' is now how we refer to perfectly ordinary services that have been around as long as the web, like FTP space. I mean, I walked in on a group of guys discussing their 'time machine' backup scheme for their mac. Now, being a service provider with a whole lot of disk, my first thought, of course, was "can I sell some kind of standards-based something that will let people time-machine to my hard drives in a datacenter?" I got about half way through asking if such a thing existed, and they said, "Oh, you mean backup to the cloud?" at which an involuntary scoffing noise escaped my throat.

(the upshot is that apparently you can backup the time machine data to 'the cloud' but the people I talked to did not know what mechanism was used to upload/store the data.)
This is an amazing idea. I think it has infinite potential. Are you working in it full time ?
It’s not that I don’t suffer, it’s that I know the unimportance of suffering
Product survey for a lean startup event- take a min to fill out and help out
Yes, I understand your point. I didn't want to share the user profiles with non-users. I also haven't looked into how easy it would be to harvest profile pictures and profile data. Any thoughts on this?
I agree. Also, a common misconception is that your passwords are uploaded to a server with 1password. They are not! They are local on your machine, and you can optionally sync across your devices via your own dropbox account.
This isn't just a problem with you, this is really a problem in the ecosystem of build tools, primarily those that target C/C++ code (though the problem exists with other languages and their build tools as well on a lesser scale). And I say this as someone who spent over a decade coding in nothing but C and C++ (thankfully that is in the past).

Go has essentially solved these problems, but only for Go code and in the process threw out (for now, at least) the notion of binary linkable libraries that your code can access, which may or may not be a bad thing depending upon how you feel about dynamically linkable libraries.

I don't think the problem is practically fixable on existing languages whose basic toolset wasn't built to deal with these sort of things. And there is a cultural element in addition to the technical one -- even if you managed to create such a build toolset for languages like C/C++, some (large) subset of C/C++ programmers are going to want to hold on to their hard-won mastery of all things configure/autconf/make and stick with them, even if those tools are all completely horrible (which, IMO, they are).
I'm glad you like the idea. I am working near full time on it. Who needs weekends anyways?
Perhaps you could only share a limited amount of information to non-users, like the topics they'd like to talk about, and an "about you" or something. Just enough to catch one's interest.
To TechCrunch hackathoners
Util-linux cheat sheet
This is not Russia!
This is a great article, full of interesting details you wouldn't get from an interview with the CEO of Ford or Toyota. The 'bastard investor'; the knight-in-shining-armour who rescued the company; the big-name suppliers who 'can't get their shit together'; Musk's personal attention to detail and quality of every single car. If he writes an autobiography I'll be the first to buy it.
That's a good point. It sucks to work overtime constantly when you had other plans, commitments, etc, especially when the bosses are ungrateful.

On the other hand, when working on something that you know upfront is going to be an enormous challenge, and you really love what you're doing, the hours don't seem to matter. The problem for me becomes more of a physical thing. I can work a 70+ hour week or two, but then it takes a week to get back to the same level of output.
MechCommander 2 source also available: http://www.microsoft.com/en-gb/download/details.aspx?id=1145...
I imagine this varies with the kind of work. I suspect creative work degrades more quickly beyond 40 hours/week than repetetive work does.
That actually makes sense. Because the joining is something that a string knows how to do. Why should arbitrary lists know about string manipulation?

By the way, your example has an error, since you can't join a list of numbers. You can only join lists of strings. I.e.

' '.join("Hello", "World")
What do you mean by "usable function literals"? Because Python has them, even if you have to do a bit of work to get them.

def demo (n):
def multiplier (m):
return n * m
return multiplier

x5 = demo(5);
print x5(4)

You can do anything in the inner closure that you might want. The only surprise is scoping - if you want to modify state you need to use a mutable data type because otherwise you'll be instantiating a private variable. But that hoop is easy to handle.

def demo ():
counter = [0]
def increment ():
counter[0] += 1
def peek ():
return counter[0]
return (increment, peek)

(increment1, peek1) = demo()
(increment2, peek2) = demo()
increment1()
increment1()
increment2()
print peek1()
print peek2()

So there. Function literals. They work.

But, you say, you really want anonymous classes? Well look up metaprogramming then. Python really has quite good support for it. There is no trouble creating anonymous classes on the fly with their own attributes, functions, and so on. They can even inherit from each other. http://www.voidspace.org.uk/python/articles/metaclasses.shtm... might be a good starting place on this for you.

(Note, I do not recommend metaprogramming unless the solution you make will be reused a lot.)