We should shut down other people who are being needlessly facetious.
But to suggest that rejection should be our default behavior is absurd. Discussion should be encouraged because, more often than not, neither side is 100% correct. The way we further ourselves is by talking to those people with dissimilar views.
more often than not, neither side is 100% correct.
You are very right. The problem is when one side stands up and says: "We are obviously right. We will never change our opinions or ideas. You must agree with us or die."
At that point, the reasonable side doesn't have any options left. You can't argue with crazy.
Take the current US Congress situation. One side is saying, "We want to hurt you." The other side isn't saying "Okay, how much do you want to hurt me? Let's find a compromise where you can just cut off my hand." No. The only way to stop American elected terrorists is to tell them "No."
If people have valid points, you can draw out truth. If they have points based on pride, ego, or falsely implanted childhood memories, you can't do anything productive except stop them. If that doesn't work, ignore them.
Topics of note which regularly draw out crazy people from one side: nobody needs college, X city is better for startups, religion Y is right, bitcoin is a "currency," (or anything else getting 400+ comments around here).
Not a lot initially. I did have a look at the LLVM tutorial, which is absolutely great, but I eventually closed that tab because I found it more exciting to think about these problems by myself (instead of devoting resources to always figuring out "why did they do it this way?"). It probably took a lot longer, but it was also a better learning experience. There is nothing fundamentally magic about this, one simply has to go ahead an do it.
It's a mixed bag, because I can feel there are a lot of inefficiencies in my code that exist either because I personally find it more readable or simply because I couldn't quite grasp the alternative at the time.
> Also, what was your experience with language design before going into this project?
None, that's a big reason why I wanted to do this. I did make a tool for pen&paper roleplaying before that could execute standard dice codes (http://rolz.org/) but that's nothing like this project. Over the years I made several domain-specific "configuration" languages for some projects, but again, this was different.
It did help a lot to break down the process into distinct steps that have almost no overlap. A lexer to convert a string of tokens, a parser to build a tree, an interpreter to execute that tree in place (not the most efficient thing to do but it was a lot of fun), and a minimal runtime library on top of it. For the runtime functions I did cheat a little, however, because there are a lot of Apache Commons function wrappers in there.
There were some decisions of probably questionable value. For example, when I decided that the language would have no commas and would use whitespace as a generic token separator. It's been surprising sometimes to deal with the consequences of those early decisions.
One of the things that surprised me was that despite the total absence of optimization, np doesn't execute abysmally slow. When I was banging out the code I was convinced it would degrade to C64-like performance levels ;)
I'm actually planning to add more functionality, as I've hinted at in the tutorial, up to the point where someone could conceivably do a web project with it. That someone will probably be me ;)
I've seen this response to others working on new languages. How do people expect languages to improve without hobbyists honing their skills? A lot of _good_ languages start out in one person's head so please keep at it!
I tried to sign up (because it's a fantastic idea) but I got:
"We're sorry, but something went wrong."
when I tried to authorize the application in GitHub. If this is your project I'd love to try it out if there's another way for me to sign up (or another date I can try).
I've recently used this library to make an ear trainer app (http://www.earbuilder.com). It's pretty easy to use and the creator responds really quickly - the only issue I have at the moment is playing sounds simultaneously within Chrome.
This is really cool! I had some trouble with the harmonic setting at first (in Chrome), but after refreshing the page it seems to work fine. It's crazy how much harder it got once that setting went on.
That's awesome feedback and something I wouldn't have come up with - so thank a lot! I'm going to release a newer version with more "Settings" options so that people can customize a bit more.
I don't quite understand what you mean by preview the sounds? Do you mean like previewing the intervals? I can add small buttons next to each to give you a glimpse - thanks for the suggestion!
I was mostly going off the assumption that people would select one or two intervals at a time, learn them through error, and then select a few more but this is an easy change for more clarification.
- That's not a feature yet but I'll definitely add it to the todo list since people train in both ways.
- Whenever you answer, the sound plays again: if you get it wrong it repeats, if you get it correct then it plays a new interval. But I can see how that isn't clear so I'll change the wording / possibly animations.
(I suck at HN. I thought I could post text AND a link... anyway, here's what I wrote.)
Hi HN,
I've been taking guitar lessons and one thing that is recommended to most musicians is ear training - where two different notes are played and you must identify the number of steps between the notes. My app, Earbuilder, should help with that process.
It's my first web app, and my first real foray into JavaScript. You can take a look at the source and you'll see that it's pretty poorly structured, but I've picked up a book and hopefully things will improve with my second web application.
Please let me know if you have any comments, suggestions, or hate because I'm looking to improve this over the coming weeks!
http://www.thesoftwaredevelopmentlifecycle.com/?p=401