skysight-inc/HackerNews huggingface dataset:
On the practice subject - in college I studied in the double bass studio for a few years. He always said that his goal was to teach us how to practice. He told us that we'd probably forget everything that he actually said, but if he taught us how to practice properly we'd be able to learn anything if only we knew the proper way to practice. He'd also make us tell him exactly what we were going to do after each lesson in order to be ready for the next lesson. A lot of what he taught us, i've found, could be applied to other areas of life.
http://www.deandeluca.com/herbs-and-spices/herbs-spices/zaat...
And on top of this, I would love the ability to know which comments were added since the last time I viewed the thread. Sometimes posts like 'Review my app' get a lot of feedback and spawn multiple discussions, but I can't easily tell which were new comments from the last time I looked. I can only see that the 'comment count' increased.
To extend on shadowsun7's IRC point.. head on to irc.freenode.net and on to #offrails, #startups, #redis (if it interests you), and #ruby-lang. All good channels. If you want pure volume or to answer questions, #rubyonrails is OK too.
Just to throw in more opinion - I have rarely heard The Art of Programming referred to as a book that should be read. It's a book to have around when you need to solve a problem, but for your sanity, don't sit down and try to read any of them. You would be doing marginally better for yourself than reading the dictionary.

That said, I have enjoyed reading swaths of dictionaries :P
To crash your browser (FF, Safari...)
Actually the compiler is part of the framework runtime. This XP netbook I'm typing it on has it installed and is able to compile a C# executable out of the box.

Still, it is a fairly academic argument since notepad + command line is a pretty poor dev environment in any os.
Ask HN: Online of Offline calendar/todo
What tool does everyone prefer for their life organization? Calendar, to-do list, etc.

I've used Outlook which I like but feels heavy for my use, I've also used Google Calendar/Mail/Todo but it requires a constant internet connection to update which I don't always have.

I've been considering going fully-offline and trying a paper organizer.

I'm curious to hear everyone's opinion on this topic.
This works the other way round too. For many companies, if something breaks they want a support contract in place with agreed SLAs.

The threat that a crucial back office system might break and the only people they could call to fix it are Ray and Moss from the IT dept in the basement, is worth paying a premium to avoid.
This is one of the ideas put forward in Taleb's "Black Swan": by increasing your exposure to positive "Black Swan" events, you can improve your chances of being successful (with something).

One way to increase your exposure to positive Black Swans is to get out and mingle in a diverse environment; that fosters serendipitous encounters, which can lead to positive outcomes.

One of the things I really enjoyed about Taleb's book is his point about the role of luck in the general result of being successful.
I'm a psychiatrist. This statement is obviously not true. Please substantiate with literature reference.
Just go out and try to make friends with as many people as possible. Some of them you'll stick with, others not. Some of them will share your passion for programming and some won't. But at least you really know those people. Personally I am much more comfortable working with people that I actually like and met at least a few times.
A screencast is better than nothing, but for me, nothing beats being able to toy around with your user interface to get a first-hand impression of how fun it is to use, especially if the webapp is some wiki-todo-crossover. Perhaps you could offer a read-only view of an example collection?
Getupandmove & Mydunktank "behavior programming"
And there is the bad programmer part :), thanks for the clarification.
I read this years ago, but reading it again is incredibly interesting now that I use GitHub. GitHub has changed the way I think about dependencies.

I'm no longer afraid to take a dependency and I'm no longer afraid to just start making changes to those libraries. It's like the best of both worlds: everyone else's code becomes my code. I've got "Not Under Version Control Here Syndrome".

(This breaks down miserably if you are shipping boxed software and have hard dependencies on other things on disk which are out of your control, like Excel does)
I will say Scott Guthrie is more focussed towards the ASP.NET. But his blogs are really good.
When you're working on a really, really good team with great programmers, everybody else's code, frankly, is bug-infested garbage

There are two classes of code that this seems to apply to 95% of the time: Other People's Javascript, and Web Templating Systems.

Bad Javascript is understandable, since any Joe with a copy of notepad and "Teach Yourself Web Programming in 21 days" can (and will at some point) write a crappy DHTML menu system and throw it out on the web. Junior Dev Jimmy will find it and drop it into your project without asking anybody, and suddenly it's your job to deal with it (or rewrite it, which is generally the only thing to be done. Extra credit if you open source it and inflict it on the next generation.)

Fortunately, the jQuery guys have managed to defy this rule, and it's doing a good job of fixing the issue. Still, "No 3rd Party Javascript" is a good mantra if you're running a dev shop worth its salt.

Web Frameworks are the fun one. Usually they're the embodiment of the Second System Effect, where a bunch of devs who've done exactly one project in one framework sit down and figure out what their Dream System would look like, and end up reinventing either Classic ASP or Cold Fusion, but in a comically terrible way. Often they'll even get traction with it.

See FuseBox for the canonical example of taking the joke too far. Yikes!
Sarcasm aside, is that really what motivates people in china to regularly pull off attacks like this?
I don't get it, why do you want to introduce new factors irrelevant to what you are testing (epoll vs poll)?
This might be true in some rare cases, but in general I disagree with it.

The people who originally designed it, no matter how well documented, are much more likely to understand and be able to extend it. Tests help too, however losing your initial developers, if they were any good, will always have a high cost associated to it. You can get by sure, but it has a high cost. I think the difference in comprehension in pretty large.

I think there are a couple things which cause this difficulty:
1) I don't enjoy writing reams of documentation, and I bet most other developers don't either.
2) I don't enjoy reading reams of documentation before I can dig in, and again, I bet most other developers don't either.
Maybe so but the kind of type system that it takes to make a static language as expressive as a dynamic language has some inherent complexity you're not going to be able to eliminate. Static languages can be a bit of a harder sell too because the benefits of static typing aren't as apparent on smaller codebases.
This is patently false.

Duck typing: http://en.wikipedia.org/wiki/Duck_typing
Type inference: http://en.wikipedia.org/wiki/Type_inference

Type inference relies upon known, preset interfaces and inheritance from other types. Duck typing relies solely upon the methods being used.

In duck typing, this means that the user finds out at the time of use whether or not a method is supported by an object. Here, the "interface" to a type is not set in stone. It is inherently dynamic and as long as the message you pass is supported, (duck->quack), there isn't a problem.

The mental jump which many people fail to make is to understand that Object Orientation is about message passing, not types. The key questions are, "what message are you sending", and "does the receiver have a response" - it got dogmatized somewhere in small-memory static-land long ago that the best or perhaps only way to tell if an object will respond is through static definitions of complete interfaces, which came to be very strongly associated with our conception of a "type". Once the compiler has used it to check interface constraints are unbroken, this information becomes useless and unchangeable.

Ruby is an example of a language that does not use that means of answering the questions. Instead, an object has dynamic metadata about what messages it supports (specifically a hash of the method names), and uses that (malleable) data to generate an answer. It is fundamentally different than type inference in a statically typed language.
Web application architecture (subdomain vs. sub directory)
Hi Everyone,

I'm in the customer discovery phase for a Health IT web application concept I have. My programmer is new to web apps, but not to programming and is set up with LAM(PHP). Maybe we're a little old school, but it's proven. We're still debating weather to use a framework or to go with Rasmus's "no framework framework" approach.

Language/Framework decisions aside... my main question is about subdomain (customerx.appname.com vs subdirectory (appname.com/customerx/) models for instances of individual customers' accounts.

It seems most people are opting for the former, but I see flickr use the latter. The guys at Particletree (i.e., Wufoo) wrote a blog post about it (http://particletree.com/notebook/subdomains-development-sucks/) years ago to which they still attest.

They say the subdirectory model is much easier and faster to develop and deploy. We are developing locally on our macs and using hosted CVS.

I'm really lost on this issue as all my searches turn up stuff on SEO/SEM. Is one approach easier that the other? What about security and scalability considerations? I would very much appreciate your opinions as to the pros and cons of each approach.

As an aside, does anyone have some advice about rapid PHP deployment, i.e., pushing new features to production daily in micro iterations vs the typical milestone approach? Are there any good tools for this? What about hosts?

Thanks all,

Tim
It took Microsoft a long time to get a C++ compiler out that was worthy of the name. Templates were so unusable that they were the laughingstock of comp.lang.c++ for much of the 90s. J++ was merely a trap for the unwary, lacking several important interoperability features (JNI and RMI come to mind) and promptly abandoned when a judge prevented them from poisoning the Java ecosystem. Think twice before you rely on them to faithfully implement a standard.
+1 for "static typing is a solution looking for a problem".
Probably some motive against one of the customers. If you can extort some cash out of a gambling site with short dns-ttl it could be worth your effort.

Maybe the target's data center is more ddos-proof than the one from easydns, extortionists go for the weakest link.
Right on: Visual SourceSafe SUCKED. Microsoft used/uses a heavily customized internal version of Perforce called Source Depot. The entire company is being transitioned to the actual product Team Foundation Server, but the transition is very slow, and very painful.
How to Be the Perfect Host in the 21st Century
Did you think of a directory of HNers (with their about) we could follow?
Ask HN: Why did Twitter succeed?
Hi HN,

I've never really understood Twitter as a business, and so I figure that since it's been bugging me for a good two years now, I'd might as well give it a shot and ask the good folks here for their thoughts on this. Any insight is appreciated.

1) What problem does Twitter solve? Some of the best startups are created around specific solutions to specific problems. Twitter is a non-specific solution to a whole host of problems. It is used differently by different kinds of people. So ... what problem does it really solve? Or is there no specific problem here, and we just have a communal itch that we want to scratch that the Twitter format helps?

2) YC tells its applicants: 'make something people want'. But while Twitter does make something people want, it's not clear what that is. Could Twitter be an example of stumbling, by pure accident, into something people want? Does this imply that there is no way to intentionally create a company like Twitter?

3) Why is Twitter so successful? Twitter seems to be the only company with no clear value proposition (I'm not saying there's no value - I'm just saying that it's hard to explain what that value is to a non-Twitter user); also it seems to be one of the few startups that can get away with producing a generalized platform as its main product. Wave didn't. Why did Twitter succeed where Wave did not?

Thoughts, ideas, and observations are all welcomed.
Duck typing is a problem when it's done by message name and those names aren't distinguished by namespaces. We're already starting to hear horror stories of Ruby libraries that want the same name to mean different things, especially with monkey-patching.
You're right. It amazes me how people are so willing to drop 3rd party code into a project to accomplish the most trivial things.

You can put together a class to do, for example, ASP.NET URL Rewriting in a single sitting if you want to. And the thing you end up with will do exactly what you need and nothing else. It's like 50 lines of code. And still Junior Dev Jimmy will go find something on somebody's blog that sorta does it and pollute your project with it.

It adds up quickly, and if you're not careful you'll find yourself with 2 dozen random pieces of CodeProject wackiness interacting it unexpected ways and throwing you into maintenance mode.

In my experience it's just not worth it.

If you're bringing in a 3rd party library, make sure it's for something big and complicated that you just don't want to deal with. Credit Card processing, Amazon Web Services integration, that sort of thing. Otherwise, take half a day and roll your own. Your life will be a lot nicer.
Well, I was designing something similar to make it easier to track submissions by people who I consider a good source of interesting articles. Unfortunately, what time of day you make a submission has a significant impact on whether it gets to the home page and from there into my reading diet. I don't enjoy all the content on the home page, and would rather read some submissions that have only a few votes but were made by members who are interested in the same subject as me.

So, a feature request, please add a way to follow submissions by specific people on the web not on email - an alternate home page, much like a twitter stream.
For my day-job, I use Outlook for a lot of things. At home, we have a pad of sticky notes that we use for making grocery lists, shopping lists, and notes of various kinds. It is centrally located and anyone can grab the grocery list if they happen to be going out. I had a freeware To-Do list on my computer at one time, but I stopped using it. I also email myself reminders, from work to home and vice-versa.

I have been mulling this same question over myself the past few days and considered asking a similar question in terms of specifically how do start-ups organize themselves in regards to time, appointments, making sure things get done. I seem to be suddenly on the right track for some of my goals in that regard and wondering if I need more "organization"/structure. So I am looking forward to hearing other ideas on the topic.
I understand. I like being able to try things out too. I think you're right: we'll have to make some sort of interactive demo.

You said above that your biggest hesitation to signing up for a trial is that it's $5/month afterwards. Do you think you would have had less hesitation if we were doing something like this?

free: full-featured up to 128 atoms, with sign-up

$5/month: full-featured up to some reasonable limit on atoms (on the order of hundreds of thousands, a practical limit to guard against abuse)
there is really no value in putting searchyc.com results here
It's not a purely technical issue. Some languages are more popular than others, popularity means more libraries, frameworks and examples. Languages also attract different audiences, those who code C++, Java and ActionScript 3.0 just love piling on boilerplate code and long names like FactoryBuilderFacadeInterface, ApplicationFacadeDependencyHandler.

Other languages, like Ruby or JavaScript, attract people who shorten document.querySelector(id) to jQuery(id), come up with things like Processing (JVM but short syntax school), CoffeeScript, Rails, NodeJS, etc..

AS 3.0 is an interesting example. It's the language of the Flash plugin, which used to be popular among non-programmers as it allowed them to hack things together concisely, without having to learn about types or classes, since old AS 2.0 looked like JS. This was an audience the makers of Flash wanted to keep, but when AS 3.0 came out it chased them away. Online examples became polluted with design patterns, commands, factories, optimizations, complex best practices, long names. Libraries were targeted at advanced coders, there was nothing like jQuery for AS 3.0. When non-programmers see obj.addEventListener(MouseEvent.CLICK, clickHandler) they start shaking. JS frameworks do obj.on("click", onClick) or obj.click(onClick), few irrelevant details.

The language attracted serious developers who were used to big projects. Adobe released Flex, a gigantic framework reminiscent of the Java world, 300-600KB zipped for web deployment. Years later efforts like http://www.hypeframework.org/ tried to rekindle some of the old flame but the non-programmers are still using AS 2.0 or switched to JS.

Did AS 3.0 have to be as verbose? Did it need giant frameworks and Java developers? Did it need types? No. The performance improvements from AS 3.0 types were negligible, they can be left out in a non-strict mode and the difference is 2 FPS, maybe. For typical Flash projects, debugging with types isn't necessary. Supposedly the situation improved performance wise for types, but that's the wrong priority.

JS/HTML5 picked the smarter approach. There will be typed arrays for WebGL, they're ugly, which discourages their use unless actually necessary. Type strict mode applied to an entire app means example and open source code will have it, it pushes everyone to use it.

When subtle psychological differences are applied to large groups, they create obvious effects. The current division between typed verbose and dynamic concise emerged from social forces more than technical issues. There are efforts like Google's Go, typed Ruby, dynamic C# 4.0, typed arrays in JS, but they're all recent and it will take time for developers to discover new preferences.
For many companies, if something breaks they want a support contract in place with agreed SLAs.

And here, in a nutshell, we have the difference between a startup and a large corporation.
A big advantage of Python versus C# is not having to think about types unless you have to, and if the code is less verbose that's a side benefit. (And honestly, I'd be surprised to find a whole lot of C# code that couldn't be written to be more concise in Python, if performance wasn't an issue)

def foo(lst):
if type(lst) is str:
#return do_string_stuff_to(lst)
else:
#handle do_list_stuff_to(lst)

And I'm done. There's a good chance I'll throw the function away or re-write it before I ever care about the sort of edge cases that would get caught by a static compiler. If the algorithm works on a dictionary or set just as well as the list I had in mind, so much the better. In the meantime it's doing its work and helping me get other things done.
I like those futurologist statements especially when this has a tendency to become a funny quote in the future.

Maybe physical book and electronic book will merge in something new that is not defined. Maybe it will be a luxury to own some books (it's already the case in many countries) or to have a "decent" bookshelf. I don't know. The only thing I know, until now, is the easiness to share books with your neighbors or resell or swap them. With electronic books, we are still far away except on planets like "Library Genesis".
You must be new to the online world. Twitter is not new. It just brought what existed before to the Internet itself easily: http://en.wikipedia.org/wiki/Cb_simulator

The CompuServe marketers hated that service. They saw no reason for CompuServe to have it or to promote it. Meanwhile, back then, the online world was based on per-hour connect time charges and there were people who had bills of over a thousand dollars a month just from using that part of CompuServe.
In C/C++, evt could never be null because it would have to be a stack allocated object or a reference. (We're not dereferencing a pointer.)
Great response. I think you're touching on a lot of the more fundamental problems in any approach to helping the homeless.

You mentioned contact and community a few times there - do you think that dealing with full homeless communities, or at least a subset of 5 to 10 people, would be more successful than trying to deal with individuals? Do you think that choosing a group of four homeless folks and moving them into either a single apartment or neighboring apartments would wind up having a greater chance of success? Or do you think that would perpetuate social norms that are nonconducive to more survivable lifestyles?

Take this as a component of any particular aid approach, by the way - there are no silver bullets and a lack of a roof is often a symptom of many other problems that can't be solved by craigslist's housing section.
This used a ton at MS in the test labs where boxes are flattened evey day and new builds are installed. I longed for windows to come with .net preinstalled in the days that I worked in a lab there.

That being said, I concur that they are bad options, ugh.
For exploratory programming, I like the ability to trial-run code that is clearly incomplete or even wrong--- maybe I'm trying out a change in one part to see if it works there first and haven't updated the rest of the code, or I haven't even written a bunch of the cases yet. At least with my approach to exploratory programming, it's common for me to have large parts of the code at any given time that are broken as I try out things. If the things I try out work, I go back and fix the rest.

In statically typed languages, at least the ones I've used, doing that requires a lot of overhead before the language will even let you run the damn thing. Yes I know lots of stuff is broken, but let me try out this one code path that I'm pretty sure works! Or if it doesn't work, fail at runtime so I know where it breaks! Instead, it won't compile at all, unless I go through an exercise of moving broken code out of the way (lots of block-commenting), supplying stub functions to take its place and the place of unimplemented stuff, keeping both an old and a new version of a function around so I don't break code that's looking for the interface with the old version (even though I'm not testing that code right now anyway), etc.

In Lisp, I don't have any of that commenting/stubbing/shutting-up-the-compiler hassle. If I want to try out one particular code path amidst an in-transition code base, Lisp will happily execute that code path. To me at least, it feels a lot easier to try out new ideas that way, because it doesn't feel like the code base is this ball and chain I'm dragging with me every time I try to make a change; I can choose to temporarily leave it behind for a bit.
He did make a comment, however the way he was holding his phone dropped the call.
I can imagine this works great until you create so many patches that you spend all your time upgrading your dependencies. (Or just stop upgrading.)
No. (having lived in China for multiple years) Pretty much all the political issues the West thinks of WRT China are not even given a cursory thought by most Chinese. China just isn't very political. Taiwan is basically a non-issue. Tibet is completely a non-issue.

More to the topic: It's much more likely that the motivations are financial.