I Don't Want to Hire You If You Can't Reverse a Binary Tree - <AUTHOR> http://thecodebarbarian.com/i-dont-want-to-hire-you-if-you-cant-reverse-a-binary-tree <comment><USER2> This submission is surprisingly _not_ satire, and misses the points of the arguments around whiteboard coding. (the added interview stress and the limited real-world applications of the code in day-to-day work)

It is _not_ an accurate measure of candidate technical skill, hence the rise of take-home tests. (the submission reminds me of the blog post "I Won't Hire You If You Can't Pass These Programming Questions Because Otherwise You Suck" that was written awhile ago but I can no longer find. That post backfired hilariously because author provided the wrong solution for one of the questions.)

</comment><comment><USER3> A long time ago, I interviewed with a major bank. As part of an all day grilling (arrive in city at 1 am, interviews start at 7:30 am, last until 6:30 pm with a lunch break), after lunch, I was given a programming task. By that time, I had already been interviewed by three people. The task was something that may have sounded trivial at first blush. I was given a computer and an hour.

After the hour was up, my code was reviewed by six people while I interviewed with the DBA who took joy in pointing out my admitted deficiencies with SQL. I then had another hour discussing the code with the six reviewers.

The program worked on the sample data I was given. I was later told that the other candidate's programs also worked on the sample data. Except, mine was the only one which actually ran to completion with their real data sets. I was also the only interviewee without a formal CS "education".

I got an offer which I ended up not taking due to location considerations.

If you are going to ask someone to write code, give them a computer and some quiet time. You can grill them about the thinking process _after_ they came up with something. Having someone watch over one's shoulder every time one puts a pen to the stupid whiteboard will eliminate a lot more candidates for the wrong reasons than one ought to consider desirable.

</comment><comment><USER4> Couldn't disagree more with the author. How many developers need to implement their own binary-tree? This is why code-bases become convoluted with six different implementations of standard data structures.

<comment><USER5> That's missing the point of the article.

The author says that the candidate's _thought process_ behind arriving at the solution provides insight into the candidate's skill.

There's no reason to implement your own binary tree, but knowing how to devise algorithms to accomplish a given task is a necessary competency.

<comment><USER2> Reversing a binary search tree is a binary (pun intended) answer: you either know how to do it because you learned it in college/read Cracking the Coding Interview, or you don't.

<comment><USER6> Is it not obvious that you reverse the left and right subtrees and then swap them?

I learned how to think recursively in college. I never learned how to reverse a binary tree.

</comment></comment></comment></comment><comment><USER7> I lost him at: "I think homebrew is an awful piece of software that should never be used by anyone."

<comment><USER8> I wish he'd give some points as to why Homebrew is an awful piece of software. To date, I've had 0 issues...

<comment><USER9> IIRC homebrew doesn't handle inter-package dependencies very well - it's no apt - but apart from that it seems to mostly work OK.

</comment></comment></comment><comment><USER10> > "Just about everything you do in your programming career will be related to > trees."

I've never knowingly used a tree structure since college, everything is abstracted away from me. Now whether this is a good thing or a bad thing remains to be seen, but it has not been a problem yet.

<comment><USER11> Have you ever stored a dictionary inside a dictionary? (e.g. something like the JSON:

        {foo : {bar : "baz"}}

That's a tree.

<comment><USER12> ...unless it's a hashmap inside a hashmap. Or named fields in an object holding pointers that use no keys after compilation.

The point being that hierarchical structures in programming languages abstract away from the underlying representation, and you can use them without knowing the details. (Though you should probably know anyway, so you understand your Big-O tradeoffs.)

<comment><USER11> A hashmap inside of a hashmap is just as much of a tree as an array inside of an array (which for a 2 element array describes a binary tree).

</comment></comment></comment></comment><comment><USER13> > "Bad programmers worry about the code. Good programmers worry about data > structures and their relationships."

The sizable problem with this statement is that it is using a solution to pigeonhole a person. It takes a bit of audacious hubris, something Torvalds (an extraordinary engineer no doubt) is known for, to paint an entire person and their capacity and skill into a singular and simple quote.

Here's a novel idea: sometimes a person is a good programmer and sometimes they're a bad programmer. There's definitely a skill level that people fall into, but these aren't neat lines delineated with tired generalisms about "worrying about code" versus worrying about "data structures". Put your question into an interview and get different people to ask it and sure pick the people who were able to get a better solution. Hopefully you're asking more than one question. That's totally OK, but please don't attribute someone's performance at one question or assume that you've mastered everything it takes to know to paint someone as a "bad programmer" from one interview loop[0] or performance with their performance for that one question.

Sometimes it's obvious someone has no idea what they're doing and you can tell that from a question, but even in that case they could become better. There might be a weakness in a fundamental area they need to learn and sure you don't want to hire them until they do, but that doesn't make them a "bad programmer". All it is is a specific problem that the candidate should recognize and improve on to up their skill. They shouldn't walk away from your massive ego rethinking their career as you puff your chess out and write a haughty blog post about what you think about people and their skills.

[0] [http://steve-yegge.blogspot.com/2006/03/truth-about- intervie...](http://steve-yegge.blogspot.com/2006/03/truth-about- interviewing.html)

<comment><USER14> You summed up everything I was thinking reading these comments good sir.

</comment></comment><comment><USER15> > Trees are the single most important data structure in computer science.

And yet I've never professionally had to reverse one or know if they are symmetrical.

<comment><USER6> I've had to recurse on a tree many, many times, though. Think of filesystems, DOM nodes, parse trees, control-flow graphs, nested annotations, tiered lookups, query builders, JSON structures, etc.

That's what this question is actually testing: can you decompose a problem statement, expressed in plain English, into subproblems and then solve the subproblems?

</comment></comment><comment><USER16> _Invert_. _Invert_ a binary tree. Max never gave any details on what that meant exactly, but the question is not necessarily the same as reversing a tree.

Also, way to back up your claim that Homebrew is bad software by pointing to another guy _not explaining anything about Homebrew but just dogpiling on Howell again_.

</comment><comment><USER17> Terrible way to hire in my opinion.

Personally, I'd rather hire employees who are resourceful, can admit when they don't know something, can follow up with others and conduct proper research to tackle cases where they don't know the solution to a problem, and most of all, are a pleasure to work with and bring good and diligent attitudes about work into the office.

Hiring based on questions like this will get you someone ahead of the curve who perhaps you can trust to execute well immediately but will probably turn out to be a massive pain in the rear in the long run.

I'd rather hire people with good attitudes and willingness to learn and spend the extra time training them and helping them out rather than hire someone because they happened to get in enough rote technical exercises before coming into the interview.

</comment><comment><USER18> By coincidence, I just posted some notes on what I've learned over the last 15 years of hiring software engineers. I prefer giving people real-world, fairly large, programming tasks to do, and then having them talk through the code they write, rather than posing puzzle-style questions.

[https://medium.com/@kwindla/hiring-software- engineers-98498c...](https://medium.com/@kwindla/hiring-software- engineers-98498cf6f2a#.dvbuqw664)

(This is also on HN/new right now.)

</comment><comment><USER19> I found the spirit of article a bit narrow-minded for all the reasons mentioned here already.

It did however make me think of an almost opposite activity for the next time I interview someone:

Pick a difficult trick question (like Binary Tree reversal but harder/arcane) that neither of us can solve, and spend some time working on the problem together with the candidate.

After all, solving problems together (directly, or indirectly) is what we'll be doing day to day.

This might not be a good idea, but I'll definitely try it out once and find out.

</comment><comment><USER20> It's not a "brain teaser" or a "trick question". It's an ordinary software engineering problem.

<comment><USER21> Doing it on a whiteboard is an academic computer science problem.

Doing it on a computer is more along the lines of a software engineering problem, though still it is largely academic and counter to one of the tenets of good software engineering (that all code is a liability, and thus new/non battle tested code should be avoided whenever possible).

<comment><USER20> I wouldn't solve all car engine problems by completely replacing the engine, but if I was hiring a mechanic I'd want to verify he could replace the engine if needed.

<comment><USER21> If you were hiring a mechanic, why would you test them on their ability to design engines?

</comment></comment></comment></comment><comment><USER22> > By the time I get to the whiteboard stuff, I'm looking for someone to want > to engage with me, not an attempt to stump them.

Dredging this comment, because while this article is not about whiteboard coding, it would inevitably be mentioned.

I think many people, including many interviewers, completely miss the point of whiteboard coding. I think this article needs to be shared: [http://darrenkopp.com/posts/2013/04/19/Post-mortem-of-my- fai...](http://darrenkopp.com/posts/2013/04/19/Post-mortem-of-my-failed- interview.html)

The key point is that the interviewer is, or should be, a friend. He should not be out to stump a person or out to get him; he should genuinely want a person to succeed at the interview. If not, it's better just to reject the person outright. White board coding should be seen as a way for person to engage in collaborative problem solving, which is something that we do on a daily basis. Can you explain your thought process? Can you admit your stuck? Can you have an intelligent discussion about your solution, listen to feedback, etc. The problem should be challenging and relevant, but it should not be a test of coding skill.

</comment><comment><USER23> You don't reverse a binary tree, you iterate in the opposite direction (right- to-left). Reversing is generally a pointless operation, and which would be much more efficient if not done at all.

</comment><comment><USER22> As I mentioned in my response, knowing that trees are used for various artifacts is important for the people who are implementing said artifacts. A well done implementation hides that detail, focusing on ensuring the implementation is correct. To use his analogy of Wehlings, there are standard procedures for blood transfusions, and the doctor doesn't need to know about the heart, he just needs to know who to ask since he doesn't work in a vacuum.

The other thing is that knowing a tree is symmetric and know how to reverse one don't count as new and unknown challenges that author mentions. Both are well documented and easily accessible to anyone who needs to know that information.

I recently had an interview where I was presented with a problem the company had to solve. That was new and exciting, not some minor detail from CS100 I learned years ago.

</comment><comment><USER24> I don't know JavaScript (maybe it somehow handles this automagically) but isn't his reverse function missing the base case of a NULL tree?

      function reverse(t) {
        var tmp = t.left;
        t.left  = reverse(t.right);
        t.right = reverse(tmp);
        return t;
      }

<comment><USER25> yep - this would throw an exception. ...and it's missing other things too. ;-)

</comment></comment><comment><USER26> I think the problem with interview questions is the following;

Asking candidates about algorithmic problems is great, if that's what you're hiring for. However, what has happened over the past decade is that a lot of companies who aren't even close to solving those kind of problems (e.g. digital ad agencies, web dev & mobile app shops) have started to ask these kind of puzzle questions in their interviews because "that's what Google does" and if Google does it, well, then it must be good.

Interviewing is hard and hiring the right candidate is even harder. A lot of interviewers don't even come close to having the experience of hiring a fellow colleague. A lot of these interviewers are basically hiring themselves meaning; if the interviewer has a PhD then the candidate they're looking should also have a PhD. If the interviewer loves Haskell then the candidate should also have this quality, if the interviewer can reverse a binary tree then, well.. regardless whether or not this has any application to the position they are hiring for,

When I interview I try to look for smart people who can explain and articulate problems well. I'm looking for people who are thoughtful and have a strong sense of integrity and an absence of ego. If they can talk about building software and programming I can easily spot if they bullshit or not. Smart people can easily learn how to reserve a binary tree.

</comment><comment><USER27> This misses the point. You showed how easy it is to do this stuff in a real text editor without a time constraint with the luxury of testing and research before you published the post about how easy it is. That's not at all the same as solving an artificial problem on a whiteboard while nervous and in a rush and no ability to test or research

</comment><comment><USER8> That's okay; I definitely don't want to work for you either.

</comment><comment><USER28> It's all about context.

If your software team works on code with lots of binary trees, interview questions about them makes a ton of sense.

If your software team is making a website that just displays stuff from databases and web services, interview questions about binary trees makes no sense at all.

<comment><USER29> > If your software team works on code with lots of binary trees, interview > questions about them makes a ton of sense.

Not really, because anyone reasonably competent could be up to speed on tree operations in an afternoon on the job. Interviewing them to see if they already know likely takes more energy than having them learn about them.

That holds true for lots of things. "You say you haven't used GitLab. Too bad: that's what we use so we'll have to hire someone else." "Huh? I'm pretty sure I can figure it out in a couple of hours." "Nope. We need someone ready to hit the ground running."

</comment></comment><comment><USER30> He undermines his own point by pointing to dictionaries as an example of something that uses trees. Which suggests that he doesn't know that dictionaries in most languages are implemented as hashes, and hashes are NOT based on trees!

The truth is that interviews should test the skills your job actually requires. For a variety of skills outside of that core, it is valuable to have someone on your team who understands it for other people to go to. But if you're not doing algorithms all the time, you don't need or want everyone to have mastered that.

And I say this as someone who knows algorithms well enough to pass his interview.

</comment><comment><USER31> > "Skill in software engineering, like skill in any subject, is not cultivated > by limiting yourself to a narrow set of knowledge and challenges."

Except you've done exactly this by selecting tree structures, something you find intuitive, and using it as a measurement for everything else. If you hire like this you will be successful in surrounding yourself with others who think just like you. Maybe that's a strength for the product you're building but it's a strength achieved by limiting yourself to a narrow set of knowledge.

</comment><comment><USER32> I think some folks get hung up on the idea that the answer to one question can be used as a go/no-go for a hire decision.

Its never that simple, there's a lot more to consider, and the vast majority of candidates will bomb a technical question or two eventually.

For those of you that are job hunting right now... don't get bent out of shape, there are plenty of employers that won't hinge their acceptance on one technical brain-teaser.

<comment><USER33> Boom. I do ask at least one code it on a white board question usually, and what I don't do is sit back twiddling my fingers and think to myself, he/she gets this or else. I actually don't mind at all when a candidate doesn't know it and asks me for help - provided they've made some good faith effort. That's why we have so many other questions and conversations. By the time I get to the whiteboard stuff, I'm looking for someone to want to engage with me, not an attempt to stump them.

</comment></comment><comment><USER34> I don't want to work at a place where reversing binary trees is so important to your everyday work that it deserves a place in the interview process.

</comment><comment><USER35> Wait. This is the same guy that uses the MEAN stack and likes to think he can distinguish good software from bad. Obvious troll.

<comment><USER36> He doesn't just use the MEAN stack. He coined the term.

<comment><USER35> In which case as most have already noted the irony is just too sweet.

</comment></comment></comment><comment><USER25> ironic that his reverse function is incorrect.

<comment><USER37> Yes, he missed the base case for recursion.

Also, the first definition of symmetric tree is wrong. One more appropriate would say that the left branch is the mirror image of the right branch.

</comment></comment><comment><USER38> In all fairness he does work for a DB company.

</comment><comment><USER39> Bad article IMO and no idea how it's front page. Yes a database may rely on b trees under the hood, but thankfully someone else has implemented that complexity so my web developer can concentrate on higher level interactions with it.

His herpes analogy is ridiculous. And I've used brew since getting a Mac and no I'm not suffering now.

<comment><USER34> Exactly, I would take this interview question to mean that this place is so cheap that they won't even invest in a proper database engine for the product to run on. You have to implement the database engine yourself. And that you probably won't get paid commensurately for it.

</comment></comment><comment><USER40> These questions shouldn't be asked expecting an exact solution in the whiteboard, this adds layers of stress and time. They should be asked expecting an explanation of how they work conceptually. You want to see if the person understands the methods used to traverse, sort, manipulate them. Are they important?, of course.

</comment><comment><USER41> Many working programmers will disagree with this article. That's a good start, but we should also work toward ending this practice:

1\. If your company does it, you should try to end it. Research alternatives and propose them. Take-home problems that mimic real problems at your company might be an option, as would hiring someone for a few contracting hours to do solve real problems before hiring them full-time.

2\. If you apply to a company that uses these questions, politely excuse yourself from the process (assuming you are at the point in your life where you can refuse offers). That company probably doesn't really have the employee-focused culture you'd want to be a part of. If enough candidates refuse to do these tests, we might see them decline in prevalence.

3\. If your company used interview methods like this and then stopped, try to create a case study. What did your company switch to? Do you have data to back up the perceived benefits of the switch?

</comment><comment><USER42> Small edit would improve your statement a lot: I Don't Want to Hire You If You Can't Learn How to Reverse a Binary Tree

</comment><comment><USER43> Sigh. If you hire using know it or not questions about binary trees, then you finally get to hire people who can study up and answer that specific question in a manner Pavlov would approve of.

That does not mean the candidate will be able to design clean APIs, know how best work with different types of data, or even how to troubleshoot existing code.

Still, pat yourself on the back, I mean, your entire team can answer a specific trick interview question, and that's all that matters, right? Right?

Sigh.

<comment><USER44> How is that a "trick" question? I never been asked that in an interview question and had the correct solution in my head in just a few seconds for the very reason he gives -- experienced programmers can map their intuition to code. This is certainly a skill that takes time to develop, and if you're concerned with hiring the best, don't you think this is a decent heuristic to throw in _with a bunch of others_?

Programmers are so sensitive, and honestly all your "sighing" is obnoxious. You don't have it all figured out.

<comment><USER41> > _Programmers are so sensitive, and honestly all your "sighing" is > obnoxious._

Perhaps instead of being annoyed, you could try to understand why people are sighing. Many of them will have lost out on a job they were qualified to do because of bullshit interviewing practices like this one. It has a real effect on them. It's not a trivial issue.

> _You don 't have it all figured out._

No one here has claimed to have it all figured out, nor are the majority of comments an implication of that. We're all just saying we have _one thing_ figured out: whiteboard interviews are terrible, alienating, unrealistic, antiquated tools for hiring.

Your profile says you're a CTO, and you should know that research increasingly shows that people don't quit jobs, they quit bosses. If you want to be the kind of boss that programmers want to work for, you should be more open to understanding why the vast majority of us feel strongly about a topic like this instead of calling us obnoxious.

If you yourself are not a programmer, I'm not sure why you're weighing in on this at all.

<comment><USER44> I'm actually not annoyed nor do I misunderstand why people are sighing. Your emotional appeal does not hold much weight when faced with real business practices of hiring "the best" that every organization is going to strive for.

I'm somehow a poor boss to work for because I told the OP his sighing is obnoxious? It is. It feigns authority and condescends the entire post for being so dumb he has to sigh at it. While you might have your feelings hurt, have you considered the feelings of the guy who took the time to write up an entire post explaining his position in a rather civil & straightforward manner? Have you considered the person at the other end of the interview table?

> No one here has claimed to have it all figured out

> whiteboard interviews are terrible, alienating, unrealistic, antiquated > tools for hiring.

Hm...

And ya man, I'm not a programmer but I figured out his coding puzzle in a few seconds.

<comment><USER41> > _I 'm actually not annoyed_

Calling people obnoxious makes it sound like you were annoyed.

> _Your emotional appeal does not hold much weight when faced with real > business practices_

People are highly emotional. Emotions explain the way people behave far better than logic does. Hiring is partially a process of selling a product (employment) to a customer with lots of options (the "best"). If you don't consider the emotional impact of your hiring practices, you'll turn off some of the "best" for no reason.

Considering and accommodating people's emotions also has a huge impact on retention, which is also incredibly important.

> _considered the feelings of the guy who took the time to write up an entire > post explaining his position in a rather civil & straightforward manner_

No. He didn't have to write the post. He wanted people to hear him and respond, and that's what he got.

I consider the feelings of people applying for jobs because they have no other choice.

> _Have you considered the person at the other end of the interview table?_

I've been that person for 10 years. That's the first person whose feelings I've considered because they are my own.

Interviewing is boring, tedious, and almost impossible to turn into a repeatable process. I understand the impulse to find repeatable, objective ways to measure a candidate's abilities.

Unfortunately, people don't necessarily like being test subjects in high- pressure situations.

> _Hm..._

As I stated above, saying _one thing_ about a very specific interview practice is not claiming to know everything. It's claiming to know a single, specific thing.

<comment><USER45> > Unfortunately, people don't necessarily like being test subjects in high- > pressure situations.

And yet somehow they love to play highly stressful, challenging video games and love to be ranked against their peers. Something to think about, is not it?

<comment><USER41> If the reward of a video game were a job, and the penalty was being unemployed for, let's say, 2 more weeks, people would not play video games the same way they do now.

 _Artificial_ pressure and competition is enjoyable, just as roller coasters are enjoyable but riding a swaying bus on a mountain road without a guard rail is not.</comment></comment></comment></comment></comment></comment></comment>


Here Come The 12 Inch Netbooks, And Intel Isn't Happy About It - <AUTHOR> http://www.techcrunch.com/2009/01/06/here-come-the-12-inch-netbooks-and-intel-isnt-happy-about-it/ <comment><USER2> > Via, with their excellent Nano competitor, seems more than willing to fill > the void.

AMD's 'Neo' too:

[http://www.theinquirer.net/inquirer/news/252/1050252/somethi...](http://www.theinquirer.net/inquirer/news/252/1050252/something- neo-from-amd)</comment>


Ask HN: Thoughts for a new language? - <AUTHOR>

Hey all! A few months ago I decided that I needed to learn the nitty-gritty of how programming languages work much more intimately. With that in mind last week I started the journey toward creating my own programming language called Koi.
The idea so far is that Koi will be a simple, object-oriented language with a syntax much like Ruby's, but built from the ground up to avoid blocking IO and using Fibers for concurrency. On a whim I decided to start from the bottom and am currently working on a VM prototype for the language. The VM is currently written in Ruby for ease of development/experimentation, but will be ported to C once the toolchain/architecture is somewhat stable.
I am interested in hearing any suggestions/tips that you have for the language's design and implementation. At this point it's impossible to tell if the language will be useful, or just a toy. But I would like to give it the best chance possible at succeeding and learn as much as possible in the process.
For those interested, the experimental VM implementation is here: http://github.com/aarongough/koi-vm (Note that it's very incomplete, slow and changing quickly...) <comment><USER2> Try writing a type inference engine. I did one over the last few days as the first big step in a game scripting language I'm working on - and at least in my case the implementation turned out to be only a bit convoluted; the main hurdles are in the details of coercions and casts. Once you have the engine running you can get lots of "bang" out of it in terms of helpful error messages and syntactical conveniences.

I represent the different types and coercions as graph nodes(casts are direct connections between types), and then cache all the possible paths for inference by walking the tree from each node with a depth-first search.

Once the graph is set up and the paths are assigned, then I can run tests to see if a coercion path is possible, whether additional coercion or casting steps are needed, and if there is an ambiguity in the input or output types at any point. Today I retrofitted my engine to include multiple arguments in coercions, so that many->one functions can be included in the graph.

A side effect of resolving ambiguities is that I have to include hinting for both which argument of the coercion is used for input, and for the output type, if multiple output types are possible.

I should describe the two goals of my language while I'm at it:

1\. To allow the game engine to treat its entities and components as types, so that the scripts never have to deal with the difference between a "Monster" archetype and a "Collision" component attached to the monster - where the collision data is, and how it's accessed, are just part of the type system. Thus the syntax will let you say something like move(me(),vec2D(3,3)); without explicitly resolving me() into "the collision component of the entity of the calling script."

2\. The language includes constructs for timing and tweening; events are atomic transactions with applicative/imperative abilities, but they hold a time value, and yield execution after processing "everything that happened" during a single update timeslice; the script can jump to different moments in time to loop a cycle of actions; and tweening operations like fades or bounce effects can be queued to run on every update with new parameters, so that there is no more timer bookkeeping going on.

I still have to nail down all the details of the runtime model, and then the syntax. But so far it's looking pretty good.

</comment><comment><USER3> Try to implement the flash AVM2 virtual machine:

<http://mahmud.arablug.org/avm2-opcodes-complete.txt>

I started work on it in Lisp and made some minor progress when Adobe decided to cockblock and released Tamarin under the GPL.

Bit more stuff:

<http://mahmud.arablug.org/avm2-undocumented-opcodes.txt>

Feel free to pick my brains on the flash platform, if you want your toy to support multimedia. I got a gut-full of it with absolutely no possible use :-/

[Edit:

Should you go the flash route, I should be able to pull some IRC logs of interesting discussions as well.]

<comment><USER3> Let me add that language design != language implementation.

Try to prototype your language design in a very high-level language, preferably one with macros. So you can iron out the kinks rapidly without being bogged down by machine limitations. Also, try to use a homoiconic syntax for easy parsing, so you're not stressing over lexical analysis and other string manipulation crap.

Once you have the high-level semantics ironed out, you can choose a suitable intermediate representation, one that can handle several phases of optimization. Register or graph based IR, like SSA, will allow you to capture code and data flow, and it presents an underlying "machine" architecture with abundant resources (cheap infinite registers for starters.)

Stack-based IRs are compact and excellent for virtual interpretation, they also capture lexical scope and procedure call very well, but you will have to expend a bit more effort should you want to compile them for a native processor.

The easiest language to implement would probably be a block-structured Algol dialect (say, Oberon or Pascal) but without runtime heap allocation. That way you're not messing with garbage collection. You can allocate your application memory at startup or compile time and it will sit and stay in there. See Chapter 10 of this:

[http://homepages.cwi.nl/~steven/pascal/book/pascalimplementa...](http://homepages.cwi.nl/~steven/pascal/book/pascalimplementation.html)

If you want first-class environments and closures you will need GC and a heap. You will also need a heap if you want first class objects or dynamic exception handling.

The language design stuff is boring, and you can be inspired by various designs out there. It's the runtime implementation that's funny, but very exciting.

Good luck.

<comment><AUTHOR> I like the idea of prototyping the language syntax in a high-level language, it reflects nicely what I'm currently doing with the VM. I'll definitely look into that.

Clearly I still have a lot more reading/learning to do! Should be fun :-p</comment></comment></comment>


What is the difference between URI, URL and URN? - <AUTHOR> http://stackoverflow.com/questions/4913343/what-is-the-difference-between-uri-url-and-urn

<comment><USER2> It is funny that the w3c is trying to put this genie back in the bottle.</comment>


How Many Americans Have a Passport? The Percentages, State by State - <AUTHOR> http://blog.cgpgrey.com/how-many-americans-have-a-passport-the-percentages-state-by-state/

<comment><USER2> "Travel is fatal to prejudice, bigotry, and narrow-mindedness, and many of our people need it sorely on these accounts." -Mark Twain

<comment><USER3> Living in the US, it's easy to travel quite a bit without needing a passport.

<comment><USER2> I live in the US, but there's a difference between traveling within the borders of your country and traveling abroad and experiencing new cultures.

<comment><USER4> If you think that the US is a single culture, you need to get out more.

Yes, the coastal cities appear to have the same culture, but there's a lot more to the US.

And, even in the coastal cities, there are multiple cultures.

<comment><USER2> If visiting another city or state is culturally awakening to you, maybe you're the one that needs to get out more.

The difference between countries is always greater than that between cities. LA to NYC is not the same as NYC to London. Even then you're still speaking the same language. How would you deal with a language barrier? Different religions? Different laws? You'll never get the perspective of an immigrant in the US, but you would being a foreigner in another country.

<comment><USER4> > If visiting another city or state is culturally awakening to you, maybe > you're the one that needs to get out more.

I'll be happy to compare passports. Let's start with how many months you have lived outside the US. (I've have three months in Europe, plus trips. I also have trips to the Philippines, Fiji, Equador, and others.)

And, since you're claiming that the US is culturally uniform, where in the US have you lived? If the SF bay area, what parts of Oakland, SJ and PA have you experienced? (No, getting ribs at Everett and Jones doesn't count.)

I've lived in both EPA and black Oakland, in addition to "fly over country". I've even done farm labor (and my father did it as a migrant).

> Even then you're still speaking the same language.

Interestingly enough, I referred to places in the US where English is not the dominant language.

<comment><USER2> Not sure how time spent across borders really matters, but I'm foreign born and have spent years outside the US. I'm currently in Chicago and have driven to Florida, New York, Colorado, Nevada and have gone north and south of the border. I frequently visit relatives that live in rural parts of Iowa and Indiana.

My point still stands, you won't find as large a cultural gap as you would traveling to another country.

> Interestingly enough, I referred to places in the US where English is not > the dominant language.

Of course you'll find small populations of foreign speaking people in the US, just as you would in any country but you're missing the point. You can't compare going to Chinatown with actually going to China, that's ridiculous.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> Seems like this correlates well with the red/blue spectrum of voting preferences. I'd be nice to see those two data sets visualized together.

<comment><USER6> Just remember that correlation is not causation!

<comment><USER7> This was making the rounds a few days ago: [http://www.boingboing.net/2011/03/08/passport- ownership-p.ht...](http://www.boingboing.net/2011/03/08/passport- ownership-p.html) (Passport ownership prevents diabetes)</comment></comment></comment>


"Official" IPhone tethering from AT&T at $55/month - <AUTHOR> http://appmodo.com/1432/apple-iphone-mms-delayed-coming-sept-tethering-55-extra/

<comment><USER2> So according to <http://www.facebook.com/ATT?v=app_7146470109>, tethering will not be $55 additional per month. I've not seen an official announcement from AT&T (I don't consider appmodo to be "official" and they don't link to anything).

Anybody have an official link?

<comment><USER3> The tone doesn't "sound" very official, but isn't this the official AT&T Facebook page?

</comment></comment><comment><USER4> Fuck AT&T.

<comment><USER5> I normally wouldn't upvote a comment like this, but I think it concisely illustrates what everyone who reads this submission must feel.

Why can't AT&T et all get it? I would gladly pay on a per GB basis if it was offered on a comparable rate as the 'unlimited' plans. Those plans usually cap you at 5GB to prevent 'abuse' to the network, so you get 5GB for $40/month- ish, or or $8/GB. Is there anyone who wouldn't be willing to pay for a _real_ unlimited plan where this was the rate?

(I'm not sure if any companies are offering such rates. Please let me know if they do.)

<comment><USER6> "Why can't AT&T et all get it?"

They do. They've hooked up with Apple.

I don't know a single person who has anything nice to say about AT&T, what with illegal spying, crappy service, poor pricing, and what not. Yet when it comes to the iPhone, everyone's swooning and all sins are forgiven.

<comment><USER5> 'et all' refers to the other players in cellular service, so the question restated is "Why can't AT&T and other providers get it?"

I do agree with what you say about AT&T's sins being 'forgiven' by offering the iPhone, but that is a function of a market monopoly. I have an iPhone and I use it on AT&T. Coverage is decent in my area including 3G, and I don't mind the price. That said, if Apple offered the phone through multiple carriers then the consumers would be in a better spot because they could choose which carrier to sign with.

<comment><USER6> ' ... so the question restated is "Why can't AT&T and other providers get it?"'

Some do. I'm quite happy with T-mobile. No interference (so far) about the G1 tethering app (Proxoid). Really good customer service.

"I do agree with what you say about AT&T's sins being 'forgiven' by offering the iPhone, but that is a function of a market monopoly. "

The weird thing is, I don't think I've heard any iPhone users express any misgivings about using AT&T. The interest in the phone is overwhelming. Yet users have a choice: pick a different phone.

AT&T has a "phone I really REALLY have the hots for" monopoly, not a smartphone monopoly. People shouldn't support a questionable service provider and then gripe about how they behave just because the available market choices are not quite as they would prefer.

</comment></comment></comment></comment></comment><comment><USER7> This is an example of why Ma Bell was broken up in the first place. The monopoly they have on the hardware is clearly being abused by them and the consumer pays the price. I pay this price for phone, data AND Tethering on my Treo with another carrier. The only Reason AT&T can do this is they have the whole market for iphones.

</comment><comment><USER8> Up until now, I did not have a reason to jailbreak my iPhone. Now I have an excuse to l33t up. Thanks, AT&T!

<comment><USER9> Jailbreak isn't necessary for unofficial tethering. There's iPhone mobile configuration profiles floating around to enable that in 3.x. Of course, you do run the risk of AT&T charging you for tethering without a plan.

Sigh, I despise AT&T :(

</comment></comment><comment><USER10> What does "unofficial" iPhone tethering, a la the one-click carrier file change at TechCrunch, cost?

Whatever they want it to.

I'd be careful.

<comment><USER11> that and it killed visual voicemail for me

</comment></comment><comment><USER12> If this is true, my hope is that Apple takes this lack of good faith from AT&T as a good reason to not renew exclusivity after the contract ends sometime next year (2010).

Of course, it's also very likely that Apple and AT&T are playing US iPhone users as pawns in their negotiations. I personally witnessed Scott Forstall clearly playing the audience to boo AT&T at WWDC.

<comment><USER8> I can't imagine any other reaction at WWDC, considering that several very shiny new features were available basically everywhere but the US thanks to Ma Bell.

</comment></comment><comment><USER13> Welcome to Canada ;)

</comment><comment><USER14> This makes me so glad I have an iPhone 2G on T-Mobile. I have unlimited calls to five people, unlimited weekends, 300 minutes, 400 messages, unlimited data, and unlimited tethering thanks to PDANet. What do I pay? $41/month TOTAL including taxes and fees. Thanks T-Mobile and iPhoneDevTeam!

</comment><comment><USER15> Is this even unlimited? I have AT&T with a non-iPhone, and they want $40/month for 5G of tethering. Paying the extra $40 removes the "unlimited" limit on non-tethering, too.

Needless to say, I tether without paying them extra and will be dropping AT&T very soon.

</comment><comment><USER16> Hmmm. It costs me $175 bucks to break my contract with AT&T. That's basically 3 months of data tethering fees.

I guess I may be returning to T-Mobile sooner than I'd originally thought. (Assuming this is true and not total speculation).

<comment><USER15> T-Mobile's tethering is no cheaper. I want unlimited tethering, but I don't see any US carrier that will provide me with that service. (Sprint will in one city that has "4G", but I don't live there, so ...)

<comment><USER6> I have an unlimited data plan with T-mobile for my G1, and a free teething app. Maybe I've not tried downloading enough, but I'm unaware of any limit. How would T-mobile even know I was tethering?</comment></comment></comment>


A New Yorker Walks into a San Francisco Start Up… - <AUTHOR> https://medium.com/@jenniferdaniel/a-new-yorker-walks-into-a-san-francisco-start-up-6926651b8254 <comment><USER2> Tufte's article about the space shuttle:

[http://www.edwardtufte.com/bboard/q-and-a-fetch- msg?msg_id=0...](http://www.edwardtufte.com/bboard/q-and-a-fetch- msg?msg_id=0001yB)

is the canonical example of how design could have changed the world.

<comment><USER3> Respectfully, you totally missed her point.

<comment><USER2> I don't think I did. As far as I can tell, amongst the complaints about rent and sexism, this is the point:

"This debate is an attempt to assuage the guilt we already have and know we have because we're here doing THIS instead of something truly meaningful."

So I posted that there is at least 1 example where design could have done something truly meaningful, if people had actually accepted the proposition that "design can change the world."

<comment><USER3> Seriously, you are stuck in a literal read of what is a purely rhetorical statement. She isn't really saying that all design is pointless. She's arguing against the underlying motivation for the debate, and the cognitive dissonance that underlies that, and the moral failings of her industry as a whole. And because you are not in her field and not her audience, you don't realize what she actually means by the all-caps "THIS". She's not talking about design in principle.

 _" Are we having a debate or a therapy session?"_

 _" Designers will do anything to convince themselves we are not in a service industry. Why are we so desperate to make ourselves feel better? Because we feel GUILTY and we have to reconcile what we do professionally with the world we live in. We WANT to save the world so we repeat our daily affirmations on our way to work…"_

 _" This debate is an attempt to assuage the guilt we already have and know we have because we're here doing THIS instead of something truly meaningful._"

So what is "THIS"? Most designers in today's consumerist culture work on things that are morally empty, have little to do with making the world a better place. So they make themselves feel better by convincing themselves that they are in fact saving the world through design. I have a college friend who studies art and is very counter culture. But because of the limited job market, she works in the marketing department at Avon. I know that inside she hates it.

The internet technology analogy would be how most people who work on ad supported websites, especially those who work on the ad tech itself, in their gut feel wrong about pushing ads on people, but then put a positive spin on it by telling themselves, their coworkers and friends that it enables people who can't afford their content or service to use it for free. Cognitive dissonance. I know this personally as long ago I led teams that worked on the systems that inserted ads in the Disney, ESPN and ABC websites and into their internet and iPad video streams. Not a single person was proud of their job, though it was plain as day everyone tried their best to pretend to be. "daily affirmations"

She calls out the dishonesty of taking advantage of privilege while critiquing the injustice and unfairness of the world:

 _" …on our way to yoga…"_

 _" We drink fancy coffee and eat free gummy bears and free catered dinners meanwhile the median cost of rent in SF is $4,300 dollars. Is idealism truly that desperate here that we equally applaud free wifi in Africa and a $1,500 smart oven that "smart" preheats your soylent to save you a little extra time for cross-fit and netflix?"_

Then she goes in for the kill:

" _Change the world? Design can't even change the design industry. Let's talk about something meaningful and actionable like why we have six dudes and one lady on stage. We don't need a debate about design's place in the world — we need a reckoning._ "

So yes, you _totally_ missed what she was saying. If you STILL don't believe me, note that she upvoted this reply to her post: [https://medium.com/designer-fund/choose-meaningful-work- fb37...](https://medium.com/designer-fund/choose-meaningful-work- fb376d275d57).

</comment></comment></comment></comment><comment><USER4> Design will not save the world, but a lighter touch with caps lock (and enter key) might make it prettier.</comment>


You can build cool stuff with WebRTC in five minutes - <AUTHOR> http://simplewebrtc.com/

<comment><USER2> We're testing remote 3D rendering over WebRTC. We render the 3D world in the cloud. Video and controls go over a WebRTC-connection. I wrote a simple nodejs websocket server to handle the signaling.

It has been a quite wonderful experience despite the tech being somewhat experimental. Google Chrome offers excellent tools (chrome://webrtc-internals/ & chrome://webrtc-logs/).

First I wrote the client and a mock server to work in the browser while a colleague started implementing webrtc to work in the renderer with the PeerConnectionpp-lib. Debuggin was awesome, when you had a working mock renderer in the browser.

All the bugs I encountered we're my own and I found all the answers I needed in the dev API doc: [http://dev.w3.org/2011/webrtc/editor/webrtc.html](http://dev.w3.org/2011/webrtc/editor/webrtc.html)

<comment><USER3> This is quite interesting. Does this mean all clients are seeing the same video rendering? What made you do it this way rather than render on the client and update positioning over WebRTC?

Regardless id love to read more about your progress if you have anything written down.

<comment><USER2> > Does this mean all clients are seeing the same video rendering?

Yes - all clients connecting to the same renderer instance are seeing the same video.

> What made you do it this way rather than render on the client and update > positioning over WebRTC?

This is a part of a larger [research project]([https://forge.fi- ware.eu/projects/miwi/](https://forge.fi-ware.eu/projects/miwi/)) to create and test the viability of different kinds of UI enablers.

One use case for cloud rendering is low-end mobile devices that can't handle the rendering of complex 3d-scenes. Or you could create a live presentation using a 3D world, eg. about an architectural design.

Other people in the project are building tools on top of WebGL to do the rendering in the browser - mainly porting the [realExtend toolset]([http://realxtend.org/](http://realxtend.org/)) to Javascript.

Everything I do will be released as open source later on. I'll give you a shout when we got something to show.

</comment></comment></comment><comment><USER4> I've got a cross origin error on talky.io

        XMLHttpRequest cannot load https://api.talky.io/socket.io/1/?t=1383140651742. Origin https://talky.io is not allowed by Access-Control-Allow-Origin. talky.io/:1

<comment><USER5> We've fixed it now, sorry about that!

<comment><USER6> There are hardly any infos on how to install the signalmaster, and I'm a complete noob regarding node.js - is there a guide or something?

</comment></comment></comment><comment><USER5> As is typical, the day someone posts simplewebrtc to hackernews is the day our demo app (talky.io) goes down!

We're on it and should have it back up really soon.

Sorry!

<comment><USER5> And we're back, demos should work again at [http://talky.io](http://talky.io)

Thanks everyone.

<comment><USER7> What happened?

<comment><USER8> I am digging thru the logs now to find out - early signs indicate memory or resource leak in the api and it then silently crashed (well, silently from my side - i'm the Ops person for &yet)

</comment></comment></comment></comment><comment><USER9> I'm afraid I could not get the demo work when I click create room nothing happens. But it's nice to see more libraries popping up around this technology.

</comment><comment><USER10> [https://appear.in/](https://appear.in/)

Is a service built using WebRTC and AngularJS. Just share an URL and people can videochat in the browser.

</comment><comment><USER11> Unfortunately, without IE supporting webrtc, we can't go mainstream with this. Is there any plugin that can be used to make IE compatible?

</comment><comment><USER7> couldn't get the room to work, but was able to find a web demo application for webrtc that is supposed to work for both firefox and chrome:

Room: [https://apprtc.appspot.com/?r=08426541](https://apprtc.appspot.com/?r=08426541)</comment>


PS3 Hacker Raised All the Legal Funds Needed to Beat Sony in a Weekend - <AUTHOR> http://www.escapistmagazine.com/news/view/107899-PS3-Hacker-Raised-All-the-Legal-Funds-Needed-to-Beat-Sony-in-a-Weekend <comment><USER2> I'm surprised it took that long. Sony seem to have a magical Streisand effect button somewhere that gets triggered for insane reasons. Remember the BMI rootkit scandal, and the subsequent reaction? The AIBO case referenced is another example of Sony's auto-Streisand function in the legal team.

The best part of all of this is that Sony's legal team have very clearly not properly considered the implications of him _winning_ the case. They thought they could just bully him out of it by making it cost too much to defend. If the case is settled in his favour then there are massive ramifications for jailbreaks across the board.

<comment><USER3> _Note: This analysis is not a statement of agreement with their actions, just providing some insight._

I am not surprised either but I don't think Sony can be compared with Streisand. From Sony's perspective this makes perfect sense and isn't some emotional over reaction, Someone has gotten around their security and if they don't pursue this it will be seen as an open invitation to hackers on all of Sony's platforms. As a platform company and a content company they're doubly incentivised to pursue these sorts of actions in the courts.

Even the OtherOS debacle makes sense from their perspective. They make a loss on each console they sell[1] and rely on strong games sales to make up the difference. At launch they had a horrible attach rate (games sold per console sold) and much was made of its use as a cheap computing cloud platform. So removing the ability for new consoles[2] to act as a platform apart from its primary gaming role helps Sony's bottom line.

[1] They certainly did at launch not sure if that is the case any longer, historically consoles are sold at a profit once they reach middle age and production costs come down. The Wii was an exception and was sold at a profit from day one, but that is a souped up Gamecube so the factories didn't need much updating.

[2] I haven't updated my console so it can still run Linux for example.

<comment><USER4> One of the addition things that needs to be mentioned akin to the bottom line is that the OtherOS feature was used to convince the EU that the system was a "Computer" not a "Gaming Console" which gave them significant cost reductions on import tariffs and taxes.

The removal of this feature aftermarket amounts to a shill game.

</comment></comment></comment><comment><USER5> I am so glad to be present for the early stages of this kind of emergent support network. Recent examples from Reddit (who often choose to support people with no "internet standing"), job offers here at HN, and the intense support people like myself have received over at MetaFilter are almost totally unprecedented. And I'm not even going to bring up Anonymous.

Now that I'm in a decent employment situation, I plan to share that $ecurity with people like GeoHot whenever possible. Cheers to everyone involved, this is great news in a sea of awful.

<comment><USER6> Completely OT: but I would suggest that one of the options for people who have problems in their lives is to search through MetaFilter for "prior art" and the surrounding support/advice.

It took me a little while to accept that my problems were far from unique, and once I got over that and reached out (as a lurker - I only read through archives, didn't post anything), I'd go so far as to say that MeFi saved my life from a downward spiral.

I love the Internet.

</comment></comment><comment><USER7> Here's a direct link to geohot's blog posting: [http://geohotgotsued.blogspot.com/2011/02/first-round-of- don...](http://geohotgotsued.blogspot.com/2011/02/first-round-of-donations-is- closed.html)

</comment><comment><USER8> I'm complaining about escapistmagazine, not the poster. I am interseted in the update. But...

Headline:

PS3 Hacker Raised All the Legal Funds Needed to Beat Sony in a Weekend

Less than one paragraph away.

... as he received enough money for the first phase of defense in about 18 hours.

</comment><comment><USER9> Meanwhile, back in Redmond, Microsoft (!) has opened the Kinect to 3rd party developers.

I doubt this was done to deliberately underscore the galactic idiocy of their chief rival. Still, the contrast between the two approaches is pretty astonishing.

<comment><USER10> Microsoft's new 'hacker-friendly' approach is refreshing, but I'll be interested to see how long it lasts or how deep it goes. It's a great way to curry favor with developers, which is critically important if WP7 is to be a success, but when push comes to shove I have a sneaking suspicion we'll see the old Microsoft take over.

<comment><USER11> For a recent example:

[http://www.joystiq.com/2010/11/03/xbox-live-indie-games- move...](http://www.joystiq.com/2010/11/03/xbox-live-indie-games-moved-to- specialty-shops-on-new-dashboar/)

(They did end up fixing it a little later, though.)

</comment></comment></comment><comment><USER12> Excellent, I was wondering how his fund raising was doing. Geohot has given a lot of himself to the community and it's heartwarming to see the community respond with support in his time of need.

</comment><comment><USER13> If Sony did not take a loss on every console sold, I wonder how much of an issue this would be. Ff they sold a PS3 that was 50% more expensive but with the feature "install whatever you want and don't worry about getting banned from PSN" could they could solve that problem?

Of course, the content folks at Sony (who thought the rootkit was OK) would probably never allow for it. Not that I'll ever buy another Sony product unless they can prove a changed heart and a commitment to bring back the quality that put them where they are.

<comment><USER14> Does it really matter what they sold it for? If they sell it at a loss what about all the other things that are sold as a loss, daily? Like clearance items, loss leaders, etc.

Here is the facts. I bought a PS3 4 years ago for gaming. It has done that purpose very well, but the games currently coming out are lackluster (except the Drake series). I'm moving on from platform gaming because I'm paying more and getting less, each year.

Sony has gotten all the money out of the PS3 I'm going to give them. If I can keep my $600 shiny, black brick from collecting dust than I should be within my rights to do so.

</comment></comment><comment><USER15> This is great news. I really hope he gets a very good defense.</comment>


Pros and cons of iOS and Android mobile app development - <AUTHOR> http://www.slideshare.net/WhallaLabs/mobile-application-development-ios-vs-android <comment><USER2> I develop for Android and iOS, and I usually create the iOS app first. Publish it to the market and kinda try to feel how the market responds, if its positive I make the Android down the road. If its negative, I try to add functionality and launch version 2. If its also negative, then I just kill the app.

Main issue with Android for me as a sole developer is, fragmentation and lack of paying users. The fragmentation part is really horrible, I have hired people to test my app extensively and regardless of how flawless I think my app is upon launch it crashes and burns. Designing an app for all the different screen sizes are extremely difficult. Testing on emulator is never adaquate.

As mentioned in the slide, iOS users pay for the app if they like it. When it comes to Android-users there is a get-everything-free culture. You can argue that if people won't buy then its the developers fault for not creating a good enough product, but I do believe its shared fault here.

<comment><USER3> How are your sales per demographic?

One of the reasons nontechnical users root their iOS devices is to install pirate copies.

Maybe some fellow compatriots will correct me as being wrong, but this happens a lot in Portugal, taking the people I know as sample.

<comment><USER2> Its exactly like the purchasing powers of the different countries. So in northern, west and central europe alot of people buy. Same for the commonwealth countries. In Asia, Hong Kong and Japan has more buy rate than the other countries. But apart from this there is really shocking amount of people who use the free credits and refuse to buy.

But I try to stay positive, I have considered blocking certain countries' app store.

</comment></comment></comment><comment><USER4> I'd say the iOS simulator is better than the Android emulator, although it's much better than it was. But Xcode is in no way a better IDE than Android Studio. It's not even close. Xcode is a marginally usable text editor with almost no "IDE" features. Android Studio + Java is probably as good as a commercial IDE gets when it comes to code editing, generation, and refactoring.

<comment><USER5> But the iOS simulator is very limited (no push notifications, no camera) and developping on device with android is better in my opinion (easy port forwarding so you can access you local server as localhost)

On the other side, with react-native you get an uniform debugging experience and easy re-usability of your components.

<comment><USER6> Regardless of what you choose, always check your app on real devices before shipping.

Simulators have come a long way but they still don't replicate the real world.

</comment></comment></comment><comment><USER7> Every pro for Android save ad revenue is a con in reality.

Diverse devices, market share = Fragmentation, DPI issues, OEM breaking apps their images with customizations, popular hardware years behind the curve of computing power still coming out

Diverse demographics: I've seen people ban entire regions of Eastern Europe from their apps because of the 1 star generic "Is Virus" type of low effort review. I don't know what it is with Android and certain parts of the world that disproportionately misused reviews. Apple has a similar problem but to a much lesser extent, and the hybrid per version rating system helps.

Android also makes you deal with taxes in all those regions, essentially making you the seller instead of the store, where Apple handles all of that.

</comment><comment><USER8> Blog version, adding Windows Phone: [http://whallalabs.com/mobile-application- development-ios-vs-...](http://whallalabs.com/mobile-application-development- ios-vs-android-vs-windows-phone) (linked-to from halfway through the presentation)

</comment><comment><USER9> In the third slide, "Apps have an audience 2.5x as big as mobile websites". I'd love to see data behind how the author came to that conclusion.

Isn't anyone who is able to download an app from an app store in the same audience as someone who would view a mobile web site? Beyond that, I feel like it's much harder to get a user to download an app than to view something on the mobile web. Downloading an app is a commitment for a user to allow a third party on to their device with many more privileges than a web site would get.

It's hard for me to take that statement at face value.

<comment><AUTHOR> Hi, here is the source of the data: [https://www.comscore.com/Insights/Presentations-and- Whitepap...](https://www.comscore.com/Insights/Presentations-and- Whitepapers/2015/The-2015-US-Mobile-App-Report)

<comment><USER9> Thanks looking forward to digging in to this. Great presentation by the way, was just having a little trouble around that one stat.

<comment><AUTHOR> Thanks, glad you liked it!

</comment></comment></comment></comment><comment><USER10> >6 apps with 40% more lines of code has shown that it costs 30% more to develop on Android.

Wow, my brain hurts after reading something that stupid

</comment><comment><USER11> The argument that one platform is cheaper to develop in than the other based on the lines of codes just put me off.</comment>


Billion-dollar scandal turns "King of Manuscripts" into the "Madoff of France" - <AUTHOR> https://www.nytimes.com/2020/02/21/business/aristophil-lheritier-rare-books.html <comment><USER2> what a story. he even wins the lottery (literally) along the way. I'd imagine a lot of people now are desperately trying to put distance between themselves and this guy.

the top comment from the article was spot on:

 _> To compare this to Madoff is catchy but wrong. Instead, try Goldman Sachs. Vrain, who provided inflated appraisals of manuscripts, which he is now buying as they are auctioned off at bargain prices, repeats the killings some on Wall Street made on the way up using friendly bond ratings conjured up by pliant rating agencies to sell them and then snapping them up after reality trumped those fanciful ratings into financial rubble._

the whole market of art and auctions is very dodgy.</comment>


Ask HN: Blockchain Development Resources - <AUTHOR> Hi,
I want to get deeper understanding and more involvement in blockchain development area. Please note that I'm not talking about on-blockchain development (smart contracts, etc...), but about development of the underlying blockchain technology.
If I would want to build a new blockchain (just hypothetically - I know I should use existing ones) what would be the best
- discussion boards on that topic?
- bloggers to follow?
- three blockchain projects to look at from the architecture and code quality point of views?
- resources for starting out? (I'm an experienced developer, so  not "for Dummies" series. I need enough theory to build solid foundation, but I don't plan to do PhD :-))
Thanks a bunch! <comment><USER2> Hello,

I am not a developer, but if I may share my humble knowledge here, I think the most common starting point is to reuse Ethereum standard. 50% of the new blockchain-based services being launched are using this standard... I advise you to read the white paper if you have not done it yet :)

<comment><USER3> What do you mean by "Ethereum standard"? If you're talking about ERC20 token standard, that's exactly what OP said (s)he is not aiming for.

</comment></comment><comment><USER4> This story is about learning blockchain by building one, [https://news.ycombinator.com/item?id=15372940](https://news.ycombinator.com/item?id=15372940)

<comment><AUTHOR> Thanks, that looks interesting.

</comment></comment><comment><USER5> Start with learning cryptography _systematically_. No, just reading about symmetric encryption and hash functions doesn't cut it.</comment>


Show HN: Automatically turn a major song into minor and hear how it sounds - <AUTHOR> http://www.hooktheory.com/blog/automatically-turn-a-major-song-into-minor-and-hear-how-it-sounds/ <comment><USER2> Here are a couple pop songs from the last 10 years originally written in major that I think sound pretty neat in the minor mode. (Once on the song page, need to click the "Key" button to put into a new mode)

"Someone Like You" by Adele [put in to minor mode] [https://www.hooktheory.com/theorytab/view/adele/someone- like...](https://www.hooktheory.com/theorytab/view/adele/someone-like-you)

"Baby" by Justin Bieber [put into minor mode] [https://www.hooktheory.com/theorytab/view/justin- bieber/baby](https://www.hooktheory.com/theorytab/view/justin-bieber/baby)

"Yellow" by Coldplay [put into minor mode] [https://www.hooktheory.com/theorytab/view/coldplay/yellow#ve...](https://www.hooktheory.com/theorytab/view/coldplay/yellow#verse)

Can anyone find any other cool ones?</comment>


Inquiry education – from 1969 – is what we need today - <AUTHOR> https://en.wikipedia.org/wiki/Inquiry_education <comment><AUTHOR> Nail Postman, one of the two authors of _Teaching as a subversive activity_ also wrote the prophetic _Amusing ourselves to death_.

I read the introduction to the former when I was in college in the eighties, and it has stuck with me. They argue that the role of education (especially in a democracy) is to imbue students with "foolproof crap detectors".</comment>


Putting Services Companies in Their Place - <AUTHOR> https://medium.com/swlh/putting-services-companies-in-their-place-21335129fa74 <comment><USER2> I like the focus of this piece, but I think it conflates "technology startup" with "product company" too much. There are so many great SaaS companies that don't need VC money, that also don't need so much customization. Why not start one of those instead?

Much more scalable, as defined in the piece, and also less capital intensive, less fragile, and low stakes (since so much of fixed income is in people's salaries — a lot of stress from feeding _real people_ )

<comment><USER3> Cash flow. Service company books money first. Saas takes months of build out, then small inflows of cash until finally the product starts covering even basic overhead(ramin profitable). Assuming it doesn't die before it gets of the ground because no one wants what you built.

<comment><USER3> Built out several things that didn't work. Proud of what I built sad at all the wasted effort.</comment></comment></comment>


Our security auditor is an idiot. How do I give him the info he wants? (2011) - <AUTHOR> https://serverfault.com/questions/293217/our-security-auditor-is-an-idiot-how-do-i-give-him-the-information-he-wants <comment><USER2> I'm not sure what the best part of this is.

That I think I know the guy who posted this thread, or that I've seen this probably half a dozen times without even realising.

I'm gonna buy them a drink next time I run into them.</comment>


Apache vulnerable to easy DOS attack - workaround available - <AUTHOR> http://email@example.com%3E <comment><AUTHOR> Of all the workarounds, this is probably the best option because it will still allow ranges to function.

      Option 1: (Apache 2.0 and 2.2)

              # Drop the Range header when more than 5 ranges.
              # CVE-2011-3192
              SetEnvIf Range (,.*?){5,} bad-range=1
              RequestHeader unset Range env=bad-range

              # optional logging.
              CustomLog logs/range-CVE-2011-3192.log common env=bad-range

      Option 2: (Also for Apache 1.3)

              # Reject request when more than 5 ranges in the Range: header.
              # CVE-2011-3192
              #
              RewriteEngine on
              RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
              RewriteRule .* - [F]

<comment><USER2> Making sure ranges work is especially important if you're serving up streaming video.

<comment><AUTHOR> Also for download resuming if I remember correctly.

<comment><USER3> Yes, but very few people are using browsers / download clients that will actually resume downloads, and in many cases sites don't support it for files anyway. However with video it's absolutely expected behaviour.

<comment><USER4> Both firefox and chrome will resume downloads if they're paused.

</comment></comment></comment></comment></comment><comment><USER5> I created a little mini site that lets you check if your server is vulnerable, along with some information about the exploit: <http://apache-range- exploit.com/>

<comment><USER6> Just a quick note from the advisory site

"When using a third party attack tool to verify vulnerability - know that most of the versions in the wild currently check for the presence of mod_deflate; and will (mis)report that your server is not vulnerable if this module is not present. This vulnerability is not dependent on presence or absence of that module."

Not sure if that's how you are checking for vulnerability, however it was reporting that my site was "not vulnerable" when it was very much so.

<comment><USER5> I recently fixed an issue where the server wouldn't follow redirects which was causing some false negatives. If your site still shows as a no would you mind letting me know what the domain is so I can fix any other issue?

The way I check for the vulnerability is based on the original perl script in the OP link. I submit 20 byte range requests and check for a Partial string in the response, if I see that I assume that the server is vulnerable. It's more of an educated guess, but I've been using it myself to fix misc servers I have running.

</comment></comment></comment><comment><USER7> I would have never thought one could request multiple ranges in the first place. How does that work (multiple connections?) and of what use it is?

<comment><USER8> You make a request for several ranges of a file using the range header, something like:

Range: bytes=100-200, 600-800, 1500-

If the server supports ranges, it will respond with a 206 Partial Content status, and send a multipart/byteranges response body, which looks like this <http://www.freesoft.org/CIE/RFC/2068/225.htm>. Basically a delimited string containing all the ranges.

This is useful for some streaming audio/video formats and especially for large pdfs. IIRC, pdfs typically have header information at the _end_ of the file, so it's useful for a pdf reader to get the end of the file first.

</comment></comment><comment><USER9> For sites that don't serve large files, option #4, disabling the range header, is the simplest option.

Note that this means that downloads are not resumable, which can easily annoy site users even if there is no multimedia involved. You only need to specify one range in the header in this case, but to do that you need option #1.

<comment><AUTHOR> I guess you could just allow ONE range which seems like a good compromise and defeat the attack?

         RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,1}$|^$)
         RewriteRule .* - [F]

(for those that don't speak regex: the 0,1 allows either one or none range headers to be accepted, more or less will fail to be served anything)

That will allow downloads to still resume and it works in any version of apache.

<comment><USER10> If you want to limit to one then ? is simpler. Doesn't that version limit to 1+0-1 -> 1-2 though? But why bother with a complex anchored regex when you can just search for "," in the range header.

</comment></comment></comment><comment><USER11> It would be nice to mention in the title that Apache Web Server is affected. Apache has many products out there.

<comment><USER12> Although pedantically correct, it is quite common for people to use thee term "Apache" to refer to the web server. The folder for settings is "/etc/apache2" on debian based distros for example.

</comment></comment><comment><USER13> Link to original thread: <http://seclists.org/fulldisclosure/2011/Aug/175></comment>


Amazing fractal-inspired animation done with HTML5 and Canvas - <AUTHOR> http://onecm.com/projects/canopy/#play

<comment><USER2> This is really awesome.

This really showcases what I think HTML5 will be great for: procedural/algorithmic content.

I think Flash will still be king until someone creates an authoring tool that can allow artists to easily animate something like this.

Someone go ahead and make that tool, I will buy it.

<comment><AUTHOR> Processing.JS also looks like a great contender.

<http://processingjs.org/>

I'm still looking for a tool that allows people to create animations using canvas, as easily as Flash does for non-coders.

</comment></comment><comment><AUTHOR> Human-readable source code here: [http://code.google.com/p/chrome- canopy/source/browse/#svn/tr...](http://code.google.com/p/chrome- canopy/source/browse/#svn/trunk/www/js)

</comment><comment><USER3> And it only uses 61% of both my 3.0GHz cores.

<comment><USER4> But it doesn't beachball and it doesn't crash.

Flash is the only piece of software I use that crashes constantly. As in nearly every day. Compared to once, twice or even as much as – gasp! – a dozen times per year when using all that other stuff I use.

It's disruptive. It's annoying. More so than spinning fans. That's a minor annoyance compared to the crashes.

<comment><USER5> In theory though, it should be much easier to fix a couple of crashes than to increase the performance of JS + canvas, say, an order of magnitude.

<comment><USER6> Why do you think that Flash running the same Ecmascript code would be an order of magnitude faster?

Flash may (currently) have more capabilities than browsers, but when matched point for point (e.g. video vs video, SVG vs vectors, Canvas vs procedural bitmap generation) I've not seen any evidence of spectacular performance differences, despite browser code running in a secure sandbox. And when there is it's rarely something fundamental, like you'd see comparing HTML5 or Flash video against a simple video playback system, just bugs and/or unoptimized code.

</comment></comment></comment></comment><comment><USER7> There is a lot more awesome stuff like that here:

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

In fact, the thing you linked to is linked to from here.

</comment><comment><USER8> reminds me of glenn marshall's recent stuff: <http://vimeo.com/10959289></comment>


Why Nvidia's GeForce Now has become so controversial with game developers - <AUTHOR> https://www.theverge.com/2020/3/2/21161469/nvidia-geforce-now-cloud-gaming-service-developers-controversy-licensing <comment><USER2> I understand why they pulled their products from this service.

However, the problem I see with this is if they use the same pricing scheme as Google Stadia, most people will have to pay full retail for games that are fairly old that they already own. At least offer those games at a discounted price by verifying ownership.

<comment> crooked-v > if they use the same pricing scheme as Google Stadia,

GeForce now uses no pricing scheme at all for the games, because GeForce Now doesn't sell games. The GeForce Now service is essentially just a rental of a specialized virtual machine connected to a hardware GPU, with network- optimized display/input handling and Steam, UPlay, etc preinstalled. You have to log into each service with your own account and your own purchases.</comment></comment>


Magnum is a pure python HTTP server that is fast and efficient with resources. - <AUTHOR> http://code.google.com/p/magnum-py/ <comment><USER2> Interesting project, a web server in under 6Kb. I plan on giving it a look at some point but it doesn't support windows.

<comment><USER3> It cannot support windows much the same as Tornado cannot support windows. Both use epoll which Windows doesn't support. Windows uses I/O completion as a competing method.</comment></comment>


WhatsApp is down WORLDWIDE - <AUTHOR> https://www.theverge.com/2017/5/3/15537210/whatsapp-down-outage-service-issues <comment><AUTHOR> Facebook's extremely popular instant messaging service for mobile phones is down right now. WhatsApp official status twitter account ([https://twitter.com/wa_status](https://twitter.com/wa_status)) shows no activity since 2014. Twitter users are actively tweeting about it right now ([https://twitter.com/search?q=whatsapp](https://twitter.com/search?q=whatsapp)).

</comment><comment><USER2> I was wondering why I couldn't log into the web portal. Guess I know why now</comment>


Big data and the Roman census approach (2014) - <AUTHOR> https://tdan.com/big-data-and-the-roman-census-approach/17244 <comment><USER2> > two people – Mary and Joseph – who had to travel to a small city – Bethlehem > – for the taking of a Roman census.

And today it is known that the story about anybody having to travel somewhere else to be counted for census was constructed to "explain" how somebody called "from Nazareth" could "fulfil the prophecy" that expected of the "messiah" to be born in Bethlehem. Even in these times it had no sense: people were counted there where they lived (i.e. "contributed to the economy").

<comment><USER3> If you're proposing "hey, I think this would be a good idea", it doesn't really matter if the example you use is fictional.

Weirdly, the reference to the story of the birth of Jesus undermines the article's point. It's an example of the people going to the census taker to be counted, when the entire idea of the rest of the piece is that the census taker goes to the people instead.

<comment><USER4> The census taker got closer than Rome, but the method of census taking was still people walking through a gate to be counted.

<comment><USER4> That is not correct, it turns out: [https://history.stackexchange.com/a/23980](https://history.stackexchange.com/a/23980)

</comment></comment></comment></comment><comment><USER4> Love the historical tie-in. So many people are familiar with this story and I know that I will never forget about this after realising that I am "very familiar with the Roman census method and don't know it":

 _You see there once was a story about two people – Mary and Joseph – who had to travel to a small city – Bethlehem – for the taking of a Roman census. On the way there Mary had a little baby boy – named Jesus – in a manger. And the shepherds flocked to see this baby boy. And Magi came and delivered gifts. Thus born was the religion many people are familiar with – Christianity. The Roman census approach is intimately entwined with the birth of Christianity._

<comment><USER5> The Roman Census never required people to travel to their homeland. That would be quite counterproductive as the practical purpose of census-taking was the calculation of taxes, which requires an enumeration of property.

The bible's account of Roman census' is seemingly not accurate.

[https://en.wikipedia.org/wiki/Census_of_Quirinius](https://en.wikipedia.org/wiki/Census_of_Quirinius)

<comment><USER6> Usual explanation is that doing census by place of birth was actually Jewish idea - because the "12 tribes of Israel" concept is so deeply ingrained in their culture, so whey Romans requested census Jewish leaders simply tried to kill two birds with one stone, and Romans didn't really care so they agreed.

</comment></comment></comment><comment><USER7> This is crazy; 2000 years later and the Romans are still shaping our society. I think this goes in the face of modern intellectual elitism that says we're the smartest generation to have ever lived. NO, we're just have the most tech to work with because of the all the genius that came before us. We're just iterating. I really tilts when people would rather say aliens built the pyramids than to accept the Egyptians were as intelligent, if not more so than our generation.

Sorry for that rant, but this is pretty cool.

<comment><USER8> > _this goes in the face of modern intellectual elitism that says we 're the > smartest generation to have ever lived_

We're the most capable. "Smartest" is ambiguous. But we have more people working more productively on more problems than the Romans did. And we're finding new solutions faster and more broadly.

Roman administration was ahead of its time. It serves as great precedent. But a single agency of modern bureaucracy outclasses the Roman Republic or Empire on almost every metric.

<comment><USER9> The impact of the raw number of people we have now should not be overlooked, either. Today, there are more people in the United States than there were in the entire world during Roman times.

We have efficiencies of scale that they could never realize just due to our population size. Or course, we also have new problems due to that scale. We'd have a lot less to worry about in terms of wild habitat loss and CO2 emissions in a world with in a world with 20x fewer people.

<comment><USER2> It is believed that the number of people at previous times was also limited by the energy available. See how the population graph looks like -- the real exponential growth starts at earliest around 300 years ago:

[https://en.wikipedia.org/wiki/File:Population_curve.svg](https://en.wikipedia.org/wiki/File:Population_curve.svg)</comment></comment></comment></comment>


Distribute your applications with Docker Images - <AUTHOR> http://www.radcortez.com/distribute-your-applications-with-docker-images/

<comment><AUTHOR> Use Docker to simplify the distribution of applications by creating a Docker Image with the required environment to run the application properly.</comment>


Faster Natural Language Processing in Python - <AUTHOR> https://medium.com/huggingface/100-times-faster-natural-language-processing-in-python-ee32033bdced <comment><USER2> I love seeing Cython usage. Python is cool, but as a scientific language, its slowness gets in the way sometimes. Particularly when you have control flow with funny shapes, so it is hard to just apply multipurpose vectorized functions. In my experience, NLP often has funny shapes like that.

Cython is a wonderful escape hatch to grab performance, and I'd love to see it used more casually in the data science world.

<comment><USER3> How Cython is compared to other langugaes such Go/Rust ? Any benchmarks out there .

<comment><USER4> Cython is compiled C that uses CPythons objects. If you can distill your algorithm to a full C(ython) implementation, you get CPython objects + C code, which is then compiled with the (appropriate version of the) system compiler.

So for example, from this little Cython code:

        def cy(int x):
            return x + 1

You get the following C code:

        /* Python wrapper */
        static PyObject *__pyx_pw_6hworld_1cy(PyObject *__pyx_self, PyObject *__pyx_arg_x); /*proto*/
        static PyMethodDef __pyx_mdef_6hworld_1cy = {"cy", (PyCFunction)__pyx_pw_6hworld_1cy, METH_O, 0};
        static PyObject *__pyx_pw_6hworld_1cy(PyObject *__pyx_self, PyObject *__pyx_arg_x) {
          int __pyx_v_x;
          PyObject *__pyx_r = 0;
          __Pyx_RefNannyDeclarations
          __Pyx_RefNannySetupContext("cy (wrapper)", 0);
          assert(__pyx_arg_x); {
            __pyx_v_x = __Pyx_PyInt_As_int(__pyx_arg_x); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L3_error)
          }
          goto __pyx_L4_argument_unpacking_done;
          __pyx_L3_error:;
          __Pyx_AddTraceback("hworld.cy", __pyx_clineno, __pyx_lineno, __pyx_filename);
          __Pyx_RefNannyFinishContext();
          return NULL;
          __pyx_L4_argument_unpacking_done:;
          __pyx_r = __pyx_pf_6hworld_cy(__pyx_self, ((int)__pyx_v_x));

          /* function exit code */
          __Pyx_RefNannyFinishContext();
          return __pyx_r;
        }

        static PyObject *__pyx_pf_6hworld_cy(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_x) {
          PyObject *__pyx_r = NULL;
          __Pyx_RefNannyDeclarations
          __Pyx_RefNannySetupContext("cy", 0);
        /* … */
          /* function exit code */
          __pyx_L1_error:;
          __Pyx_XDECREF(__pyx_t_1);
          __Pyx_AddTraceback("hworld.cy", __pyx_clineno, __pyx_lineno, __pyx_filename);
          __pyx_r = NULL;
          __pyx_L0:;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          return __pyx_r;
        }
        /* … */
          __pyx_tuple_ = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_x); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 1, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_tuple_);
          __Pyx_GIVEREF(__pyx_tuple_);
        /* … */
          __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6hworld_1cy, NULL, __pyx_n_s_hworld); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (PyDict_SetItem(__pyx_d, __pyx_n_s_cy, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_r);
          __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_x + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_r = __pyx_t_1;
          __pyx_t_1 = 0;
          goto __pyx_L0;

That compiles and becomes part of a C-extension that you can load with "import module" from within Python.</comment></comment></comment>


Battle for Net Neutrality - <AUTHOR> https://www.battleforthenet.com/?title-x-committees=1

<comment><AUTHOR> I see that this link has been posted numerous times in the past months, but we're within 24 hours, so if anytime is a good time to have your voice heard now is probably a good one.

The page asks you to make phone calls, unlike many which ask you to email the representatives. It's pretty straightforward. You get a representative, you say your bit "I'm in favor of net neutrality, let the FCC do its job", they say thank you and the call is done.

Apparently they're targeting all congressmen / senators who are affiliated with the efforts to disrupt the FCC, so you won't necessarily be talking to your local representatives.

Personally I always try to avoid this kind of thing. It's repetitive and monotonous. As a developer you can't help but feel "there's got to be a better way". But for now it's all I can do, which I guess is better than nothing.</comment>


What are your thoughts after watching "pale blue dot" - <AUTHOR> http://www.youtube.com/watch?v=wupToqz1e2g

<comment><USER2> It's very emotive and quite depressing to see what a petty juvenile species we are but I take great comfort in how far we've come.

As a species we are young, our civilisations last a millennium at best but through art and science we are making strides forward, we might just make it.

It's my hope and belief that within this millennium we will throw off the yoke of superstition and every human will live full and complete lives.

When the Einsteins and Picassos that live suppressed by dictators, that die in child birth, that die before learning to read, that perish from hunger, war, famine, disease and ignorance are released we will make great strides in to the future. Our minds will be opened and what we know now will seem but a pin prick of light.

At many times I am ashamed to be a member of this species but at times we rise higher than we can possibly imagine.

Either that, or we get hit by an asteroid and we're wiped of the face of the planet.

I'd recommend everyone read the book Pale Blue Dot by Sagan "A Vision of the Human Future in Space".

</comment><comment><USER3> It's amazing that members of our species can turn a photograph of earth from a great distance into an emotional appeal to support the belief system of the speaker (Carl believed that the laws of science were an impersonal God).

Personally I do not understand why people think that God would be more palatable if the universe were small and the boundaries of reality more obvious. For me, that only rules out the existence of a God created in my own image. It rules out the God of the small minded person, but not a God of inestimable power whose mind is as far above our mind as the heavens are above the earth!</comment>


Ask HN: I'm new to programing, any pointers? - <AUTHOR>

I'm learning python with "Python the Hardway" and just now reading the "Django Book."
Some background I'm a business student, but I want to be able to build out cool webapps.
Any pointers for me? Resources, books, places to find quality source code, or anything else you think someone like me might benefit from? <comment><USER2> I like your unintentional pun in the title.

<https://en.wikipedia.org/wiki/Pointer_(computer_programming)>

</comment><comment><USER3> <http://www.codecademy.com> is an interesting site for learning how to code. It is definitely worth a look. Also, <http://github.com> is a great place to store your code while you learn and after you learn.

</comment><comment><USER4> _"... Some background I'm a business student, but I want to be able to build out cool webapps. ..."_

Can I suggest coming at this from another angle. Instead of looking at this as learning a language. Pick a problem you currently have and _"try"_ solve it while learning a language at the same time. Then look back and review the code after you finish and start a new problem.

read: [http://www.hnsearch.com/search#request/all&q=learning+pr...](http://www.hnsearch.com/search#request/all&q=learning+programming)

</comment><comment><USER5> You've certainly come to the right community! Read Hacker News daily as a supplement to your programming self-study and you'll inevitably come across some great resources.

<http://stackoverflow.com> is your friend, and <http://github.com> is useful whether you have code to store there yourself or not.

</comment><comment><USER6> Have you taken a look at <http://www.codecademy.com/>

</comment><comment><AUTHOR> Thanks everyone! I've been reading HN for a long time now and love it! I've messed around with codecademy a bit but was unmoved. I'm pursuing the "solve a problem" route now and as soon as I have something half decent written I'll throw it up on github!

</comment><comment><USER7> Take an existing example Django demo app, and make it better. Change its look, add functionality, refactor it, change the back end, whatever "better" means to you at the moment.

Edit: added "demo."

</comment><comment><USER8> Check out <http://www.noexcuselist.com>. Lots of basic programming resources.

</comment><comment><USER9> well, the rabbit hole goes really very deep so there are many directions to head for, but i think the most important things to develop are infinite curiosity and an addiction to solving problems. qapla'!</comment>


'Dependency' in programming means the opposite of its traditional meaning - <AUTHOR> https://dpb.bitbucket.io/dependency_in_programming_means_the_opposite_of_its_traditional_meaning.html <comment><USER2> Premise: "Normally in English dependency means something like dependent." Conclusion: "'Dependency' in programming means the opposite of its traditional meaning"

I think the premise is wrong, leading to a wrong conclusion. Dependency and dependent are already opposites (or duals) in English, and each maps to its same meaning in computing.</comment>


Show HN: A Chrome extension to Carbonify gist when you browse them - <AUTHOR> https://github.com/shopnilsazal/carbonify <comment><USER2> Looks like a nice extension, can the Mac window buttons at the top left of the screenshots be removed?</comment>


Never write another vendor prefix again: All about -prefix-free - <AUTHOR> http://galengidman.com/2012/08/16/prefix-free

<comment><USER2> Nice idea, however isn't it better to use language compilers like LESS or SASS instead of using a library to handle browser prefixes for you?</comment>


Show HN: Run your unit tests with Maven directly on AWS Lambda - <AUTHOR> I have started this open source project to explore how much AWS Lambda serverless technology can help us test software. I'm looking for other serverless early adopters who would like to test and contribute.<p>https://github.com/automatictester/lambda-test-runner <comment><USER2> If you can add a section to Readme, on how to run tests in a repository with this, it would help. I got a high level picture of 'How it works'.

<comment><AUTHOR> I have now added detailed usage example to readme. Hope it helps.</comment></comment>


Show HN: Json parser in 20 lines of bash - <AUTHOR> https://github.com/izabera/j

<comment><USER2> Its an interesting idea but what does this achieve that jq [1] doesn't already do, and likely faster?

[1] [http://stedolan.github.io/jq/](http://stedolan.github.io/jq/)

<comment><AUTHOR> the 20 lines thing... :P

it was a challenge to write, bash has nothing that looks like a recursive data structure. it's not really meant to be useful ^^

<comment><USER3> Looking at the source[1] it stands at 94 lines. There's also no example of field extraction in the readme even though it's mentioned that there is an example below in the features section.

[1] [https://github.com/izabera/j/blob/master/j](https://github.com/izabera/j/blob/master/j)

<comment><AUTHOR> the _parser_ is 20 lines. then there's a function named _print_ , then there's a for loop that extracts the fields. the last two lines of the readme are the example you're looking for:

$ ./j 'obj->"foo"' 'arr->1' 'obj->"baz"' <<< '{"foo":["bar",{"baz":"bat"}]}'

"bat"

<comment><USER3> Thanks for clarifying both here as a reply and in the README[1] itself.

[1] [https://github.com/izabera/j/commit/24e0c49e38c63c4f96f01725...](https://github.com/izabera/j/commit/24e0c49e38c63c4f96f017252a60a811fc91e9ea)</comment></comment></comment></comment></comment>


Yahoo recruiter wants my resume (2006) - <AUTHOR> http://scobleizer.com/2006/06/18/yahoo-recruiter-wants-my-resume/

<comment><USER2> That post was from June 2006...I wonder how snarky he is now?</comment>


Ask HN: Why do my questions disappear off the board so quickly - <AUTHOR> My last question made it less than an hour and then I could not find it anywhere.  Why is that? <comment><USER2> Because each new item posted pushes all the prior items down one slot.</comment>


The one and only killer-trait for engineers (of all levels) - <AUTHOR> http://no-kill-switch.ghost.io/the-one-and-only-killer-trait-for-engineers/ <comment><USER2> > Of course I won't be able to tell for sure whether someone just makes a good > impression (potential false positive), but I'm quite confident that when I > say that someone lacks ATE, (s)he really does (so, I don't make many false > negatives).

How are you so certain about the false negatives? I assume that once you reject someone, you never see him again. So how can you be sure that your judgment was correct?</comment>