skysight-inc/HackerNews huggingface dataset:
>So why is big-program development winning? There are a couple reasons for that. First, it gives managerial dinosaurs the illusion of control.

So why do larger programs 'win' in the open source world as well[1]? Pop psychology about management doesn't seem sufficient to explain the phenomenon (although I'm sure it is a good way to sell a '101 habits of highly effective managers' book or get paid to give talks about management). Large systems are large, breaking them up into smaller pieces doesn't change that, but it makes navigating the code base harder (although I assume you don't care about that since judging from your blog posts you don't think tooling is important). It makes your interfaces less malleable (can be good can be bad), and moves a lot of communication to places where the compiler can't warn you about mistakes (again, if you don't care about tooling I guess this doesn't matter… but I would argue that this is bad).

It seems to me like systems of many small separate processes is basically dynamic OOP. Everything is late bound, dynamically typed and async. It's easy to make changes and also easy to break things. You can argue that this is better for certain problems, but I don't think it's universally better, and the community seems pretty divided on the issue too: look at the popularity of Go, statically typed and building concurrency into the language rather than using the OS like in the older C world.

Aa an aside; surely the web developer community is eventually going to grow tired of talking about how terrible Java is and how $idea_of_the_moment is good because it's 'not java'? As an outsider the obsession seems extremely unhealthy, and leads you to bizarre places like arguing against automated refactoring or interactive debugging or static type systems just because those things are associated with Java. I guess to maintain credibility I also need to point out that I don't and have never used Java…

[1] Firefox/Chromium vs uzbl, gcc/llvm/clang vs pcc, gdb vs printf debugging, sqlite/mysql vs directories and plain text files, perl vs sed/awk/grep shell scripts, emacs/vim vs ed/notepad etc etc.
Sure, it's a tough problem. The resolution to my complaint is a proper ISO 8601 implementation for Ruby.

Which I'll probably have to write. ;)
"The current VC-funded startup scene, which I’ve affectionately started calling “VC-istan”, is– not to be soft with it– a total waste of time for most of the people involved"

"the VC’s stake gives them control. It gives them board seats, influence over senior management, and the opportunity to hand out a few executive positions to their children or to people whom they owe favors"

http://michaelochurch.wordpress.com/2012/07/08/dont-waste-yo...
What Does Hyperinflation Look Like? Just Take A Look At The Weimar In 1923
It's always great to see more Django admin customizations! Here's another one that I found that looks like it can jazz up the admin interface.

http://www.grappelliproject.com/

Perhaps in some future release Django will incorporate one of these as standard. It's not much work to clean up the CSS each time, but it'd be one less thing to do in building great Django apps.
Thanks for the links!
Do you know of communities of self-employed/micro-entrepreneurs? I'm not interested in a booming startup scenario, rather looking to build a sustainable business.
Or even optionally tweak the gendered words on the fly?

"That's not how quotes work." - Mary Magdalene.
Ask HN: Best high-level language for CLI application?
What's the most appropriate language to develop a large CLI application? By appropriate, i mean:

* Good framework for CLI usage (input, output, auth, etc)

* Performance

* Low, or none at all, dependency-hell
Most enterprise systems start off with requirements similar to those you think of with a database - a lot of data with high expectations of performance.

For example, the program I work on has to support a million row database that can be sorted and filtered both on the server and client with subsecond response time. The program is incredibly configurable based on data in the system, so many of the features depend on reading data and reacting to it.

The problem with "many small programs" is the cost of communication. I can pass a pointer to a list of 100,000 items to be sorted and filtered in a trivial amount of time. If I have to serialize that list to json to pass to a separate program that then has to deserialize that list and perform the function, then reserialize the sorted/filtered list, send it back, re-deserialize.... it'll take longer to do the communication than it does to do the sort.

However, that's not to say that the idea of separation of concerns still can't be applied to large program. And in fact, most enterprise devs do exactly that. That's what all these "services" are in the program. Except that instead of having to serialize data, I can just pass them a pointer.

Just because you can't see all the different programs, doesn't mean they're not there.
How many less characters could there be while still maintaining meaning? Could you show an example of what you'd prefer?
Yeah, let's do CORBA once again. No thanks.
> Apart from the fact that the opposite of government worker is not "civilian"

I could have said "citizen" but that coinage sounded a bit too Orwellian.

> random gov't employees are not supposed to play spokespeople.

Yes, true, and in some places like the military, this is very clearly spelled out by ordinance -- military personnel must avoid engaging in political advocacy while in uniform.
http://en.wikipedia.org/wiki/Web_Application_Description_Lan... ?
On Chrome on Android I got a mixed-content error; some of the assets on the page aren't over HTTPS, or there's an intermediate cert missing. That might be a good thing to fix in an SSL tutorial
It gives me more confidence in the project. If someone has a vested interest ($) in making sure it's a polished and maintained application, then a nominal fee is welcome. Free for non-commercial is more than fair.
The first two programming assignments can be found here: http://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.... The 2012 assignments were the same.
I like to put comments in my configuration files. How do you comment out blocks of a JSON configuration file?
> How many less characters could there be

"Less" characters? Do you mean physical smaller characters, like "e" instead of "E"? Or do you perhaps mean fewer characters?

http://en.wikipedia.org/wiki/Fewer_vs._less
You're welcome. There's a Mininet AMI too if you want to get started quickly!
I'm very excited to see this ecosystem of paid django apps starting up. Hope there will be more commercially supported open source django in the future (with the obvious effect being more development effort and faster bugfixing).
You seem picky. :) But check out libconfig. Maybe it'll work for you.
chargify.com is the best I have used for something like this, and it didn't take too long to integrate. However, in the long run I would probably opt to manage it all myself for the flexibility.
I usually don't like things like this, but I just used it for fun and was actually pretty cool and funny.
Can someone please explain me why it doesn't scale ? True question.
It's still XML but that does look closer. I thought the other commenter was joking that this existed.. :-)
Would it help if he prefixed it with "In this article, I argue for why I believe that you should"?
There are also JavaScript, Rails, Git, and Unix practice questions on the site. I tried to make the quizzes like The Little Schemer because that learning style works best for me.
You look like a kid and I don't trust you with my data. Why are all these types of 'startups' done by people with absolutely no experience that probably only learnt rails (or some other such low barrier to entry tech) this year?

Before the down votes roll in. This is a legit concern that ordinary customers could easily have.
Yea, let's write all of our higher level object juggling in C++! Such a nice language, isn't it? And there aren't much alternatives either, right?
Let's be honest: if you find yourself complaining about C++ syntax and error messages while coding your higher level logic, chances are you either like the pain or you have lived under a rock for the last 15 years. In the latter case, go open your browser and type "Python" (or "JNI" or "Javascript" for that matter).
MM ever worked in a traditional factory type setting? all the workers collectively do this and if you not you would get sent to Coventry.

And this is tame compared to what used to happen back in the 70's in engineering "go slows" and backhanders paid in brown paper envelopes - I was told "even the tea boy got £900" about a 1/3 of the average wage at the time.
It isn't web-based but http://www.fuelcollective.com/permute is a nice tool.
If your whole argument rests on the words of a constitution, I don't know what to tell you. I still stand by my argument and have provided several sources in doing so.
No really ... how do doers do? I got married recently and have a full time job on weekdays. It has been an immense challenge to find time to work on personal projects now that I am no longer single. I've known some weight lifters who wake up early or go to bed very late in order to get in their workouts (I've had some success with this but have gotten overwhelmed after a few days). Any HNers have tips on how to live the hacker life while maintaining marital bliss?
well compared to Seattle anywheres weather is better :-)
Json Schema is pretty good at describing data coming through JSON. But describing (REST) APIs requires more. For example a standard way to describe API endpoints with parameters and response types, errors, related models, default/allowable values etc. This was what the OP was referring to and this is what Swagger is trying to do. The Swagger Spec is here with some more details on whats required in addition to JSON Schema to document APIs: https://github.com/wordnik/swagger-core/wiki/API-Declaration Incidentally model/data specifications in swagger spec does map closely with json schema.
Hmmm....JSON documents (jsonSpec) describing the restful services is the new WSDL, feels like 2002 all over again.

I think too many people consume REST APIs in different manners, utilizing different data in unique relations. This is the beauty of it.
RNA --"DNA's Messenger, or the Origin of Life on Earth?"
I was thinking about this yesterday, but its seems like HN likes that kinda thing. Lots of frontpage article are direct orders from blogs with who knows what credibility.
Why Local Commerce Will Be Larger Than E-Commerce For The Next Decade
Did you mean complaints?
We use Grappelli. It's a nice facelift and adds extra admin functionality too. Unfortunately, the entire django admin is due for a bit of an overhaul (more talk than action at this point I believe). It implemented a pseudo-class based view before they were a thing, and just changing the admin app to use the standard CBVs would be a big win.

Kudos and credit to the authors of the original admin application – there's a hook for almost anything making it incredibly flexible. My major gripe has been template overriding (lot's of copy-pasting entire templates just to add a new block); but at least it's possible.
I was just thinking that, I hate article titles that are phrased exactly as a command and it's merely a blog post that wants to change an entire body of thought that's well founded.
While we're on this subject, does anyone know of a decent C or C++ date-time library? Something like Joda Time. I know Boost has a couple of options but they look a bit less capable.
whoops, just saw other comments on the whole, feels like WSDL all over again.
Oh Shit! Common Object Request Broker Architecture!! I'd thought all fellow humans from that era had been killed and buried :)
You wont like it when you get a UGC spam penalty though - had to sort one of those out for one of Reed Elsivers sites.
Thanks for your comments.

1. Yes, we are planning on writing a few blogs emphasising the need for product tours, which we will be including in our 'cold call' sales emails to newly launched apps.

2. Branding: we chose 'Easy Product Tours' for easy remembrance and google-ability. We think we can build a decent brand around that name.

3. Sounds good. We'll give some thought to how we can implement a refferal program.
Amandha Fox contro il Porcellum: una provocazione condivisibile ma fuorviante
Ruby doesn't have an equivalent of Perl's 'local'.
ISO 8601 is large standard and predates the internet (as we know it) and seems like an attempt of formalizing all the many different ways people expressed dates (on physical papers in addition to computer systems), and also some ways no-one would ever use.

I think you’ll find a lot of APIs (or formats) claiming to support an “ISO 8601 date” when in fact they mean a date of the form “YYYY-MM-DD” — it’s a common misunderstanding, but I think better that, than actually allowing the full range of dates allowed by the actual ISO 8601 standard :)
Yes. Assuming guru voice just makes you sound like a blowhard.
It isn't only for that, and as I said, it doesn't have to be used for that. But it's an effective way to do things, and it is one of the purposes of the construct.
"I have never wished to cater to the crowd; for what I know they do not approve, and what they approve I do not know."
-Epicurus
We need WSDL for REST to solve this problem. Then we could code generate clients.
Its how I understand no follow - Used in login and print page links and the like to stop the creation of massive numbers of duplicate pages.
Possible improvements occur to me:

1. If indentation is significant and required, dotted notation should be optional:

[foo]
[bar]
[car]

The parser should be able to understand that this results in a foo.bar.car structure without explicitly using dotted notation in the keys.

2. Support include files. With #1 implemented, includes would be extremely powerful and flexible. Since indentation is required, no special syntax is needed to relatively position the included files. And without requiring dotted notation in keys, include files can be reused in a configuration (such as common settings in the [servers] section of the example).
of course you can compare them (4 states: before, after, same, overlapping). you cannot put them into an order. that's something different.
Nice amazing pictures
We should love the nature and right now I would like to show you some of my favourite nature pictures
There's been a substantial retreat from modifying builtins in library code in the last 1-2 years anyway.
Oh sure, I know the full extent of the madness. At a previous job I was working with XML Schema durations to represent energy emissions data. It gives me bad memories.
>>In the US, we seem to have this sense of superiority on this issue, but I think our tolerance of risk is paper-thin. It's superficial.

Hmmm... Judging by the overall comments so far, it seems every culture seems to has an acute (and accurate) sense of its own thin-skinnedness that another cultures' perception of them. Most of the points you make is validated by another article making rounds in the first page here: http://news.ycombinator.com/item?id=5270460
From the article linked to that thread:

When I was raising my first round, it fell apart because an A-list investor who had given us a verbal commitment backed out. He did this because he had heard from his friend, who I had went out for beers with, said that we were struggling and unsure of what we were doing.

>> The problem is that human nature is to pick leaders based on apparent success, and to ostracise failures.

Given that you've framed it like so, that nails it then? Status quo as it is now, is not going to change anytime soon! Let's stop wasting our time and get on with the rest of our lives, doing whatever it is that we are currently doing, eh? :-| [wry smiley]

P.S: Not being sarcastic, or picking on you in my reply. Hope that comes out clear :-/
Some valid points, but I was hoping for more meat, maybe references to what I call "dark corners" of C++. Take, for instance, writing a simple logging class that can log to multiple places and can be used in place of std::cout. The solution I initially came up with is a variation on http://wordaligned.org/articles/cpp-streambufs, with some manipulator magic thrown in to adjust severity level. Ah, but that's not good enough, you have to pull some interesting gymnastics to ensure order of IOStream initialization: http://accu.org/index.php/journals/264. And after all that, I'm still not sure it works, as looking at the data structures in a debugger looks like garbage (guess why I'm in the debugger in the first place).

All that being said, I still love C++. I'm glad I know it as well as I do so that I can (usually) avoid problems, but even then I run into compiler (or build!) dependent problems that shouldn't be happening. C++ has problems, and we need to address them. I'm happy to say that even though I am stuck with old compilers that have inscrutable template error messages, time moves on and I am aware of this problem being fixed in newer versions of compilers.
I don't currently have a grudge with any airline :)
Startups and Planes
Fair comment, but I've been programming for 10 years (although I know that's not what your point is getting at). Your fears are fairly moot though, the app isn't networked (yet) and is fully self contained meaning that no one has access to your data except for you.

If I get to a stage where there are enough people demanding networking then I imagine my age won't be much of a concern any more.
Like a priority inbox for Twitter. I've wanted this since very early on. Some of the best tweeters get drowned out.

It says a lot that Twitter basically gave this power to advertisers (promoted tweets) for them to put themselves in front of us more visibly.
Consequences - Cognitive Edge Network Blog
Immediately put me in mind of this recent HN thread:

http://news.ycombinator.com/item?id=5232643
It can't become what it already is.
Great deck! What business entity type (sole proprietorship, llc, ...) did you end up going with and has it changed over time?
Maybe a Date should be a Range of Time? Even a specific date is a 24h interval.
Well, it wouldn't be so bad if it were universal enough, but we'd probably have to wrap it in some sort of inter-ORB protocol for the internet or something...
Writing using authoritative language is very common, and widely considered a best practice.

I highly recommend you simply accept it as what it is: the way some people communicate, especially online. It's not worth your time/attention/care to think about this.
How about stop calling REST something that is not. You'll be surprised how many things it will solve.
There are different ways to overlap, too, so I don't think it's correct to say that there are only 4 states.
Wow nice !!!
lame attitude
What your culture really says
Mixing keyword and non-keyword arguments isn't entirely ugly. It is in the "foo" case since "foo" is deliberately meaningless, but when there's one principal argument and the other arguments tweak or override the method's behavior, it's fine.
On the anti-Java bias, I think the issue is that there's more than one Java culture. There's the horrid commodity developer culture, but that's not the language's fault.

I'm actually a pretty big fan of static typing. You don't get static typing's main benefits in C++ or Java, though. You have to use a language like Haskell or Ocaml, or the right subset of Scala, to see the major benefits of that.

Open-source is a bit different because people choose whether they contribute to a project. The quality of code in the active open-source world is leagues above what you find in typical enterprise codeballs, because of survivor bias. No one has the authority to mandate that code be maintained by others, so the messes are cleaned up by people who actually care, not people slogging through it to keep a paycheck coming.

The big-program methodology of the corporate world is the evil. In FOSS, the major projects are an unusual set-- code-quality at a high level just not seen in the for-paycheck commodity-engineer world and large because of success-- rather than the reverse. There's a survivor bias that occurs because the best projects are the only ones people pay attention to.

The corporate world is screwy because projects become large or small based on political reasons that have nothing to do with code quality. In the FOSS world, code-quality problems related to growth will be self-limiting because no one has the authority to "force" the program to grow.
totally agree with you
Isn't this "the Unix way"? I have seen this style of small cohesive programs promoted a lot in Linux/Unix literature so the advise isn't really breaking any new ground. Look at git for instance. The advise is of course sound but it goes against the "enterprisy" way of doing things, in part because they tend to be using huge frameworks from the get go.
It is. Luckily enough that was fixed in rails recently: https://github.com/rails/rails/commit/31f807c7aaaf12c16ea157...
Try reading that with the voice of Morgan Freeman. Now THAT is something you would likely do :)
Yes, you're right

But it still looks like they pulled some rules out of nowhere and are enforcing them.
Well, to be fair, JSON is at least a lot less verbose than WSDL. So there's that.
It irritates me too.
Mark Stock - lightning talk at the Leaders in Software and Art Conference (2012)
The Believer - Leaving the Witness
The answer, as with many things is: it depends.

What does your CLI app do? What platforms are you intending it run on? Is it going to be doing a lot of CPU-intensive work? Is this CLI app going to be long-lived, run infrequently (e.g. fsck), or run perhaps many times a day by an actual real user (e.g. grep)? Is your app expended to be part of a Unix pipeline? All of these things are the real deciding factor between a compiled language and scripting language.

If it's not doing anything particularly computationally expensive, perhaps a scripting language like Ruby or Python. Hell, you could even do it with JavaScript with NodeJS. CLI apps are usually utilities and their start-up time often matters. With any of these scripting languages there will be a palpable start-up time. This might not be so important if your CLI app is to be run infrequently, or is otherwise something that's long-running.

If you're writing something that's going to munch and crunch data, or is otherwise doing a lot of calculations, or is going to be run frequently and needs a fast start up time, Go, C, C++ are good bets. There are probably others that may be appropriate, but I'm not familiar with Haskell, etc.

The vast majority of CLI utilities are written in C or C++ and this is for a reason. Not many are written in scripting languages, although some are, such as Puppet, Vagrant, Fabric, etc.
Congrats, Ruby Team. Always good to see a new release. Onward and forward.
I don't think there is a well-known way to self-describe available and required parameters nor any other validation requirements, or am I wrong?
My current theory is that a good program should compile in less than 1 second into an executable of less than 1 megabyte.
Adding to that, his stated advantage of not having to limit yourself to one platform also seems opposite of my experience (i.e. keeping all on the same platform is an advantage).

When you have a big system with disjoint parts written in different languages, re-use and refactoring is a pain, and redundancy is almost certain to creep in (and with redundancy often comes inconsistency).
https://github.com/dstufft/slumber