hacker news with inline top comments    .. more ..    19 Apr 2011 Ask
home   ask   best   8 years ago   
Mountain View Hacker House - One room available
15 points by iamwil 2 hours ago   discuss
Show HN: Blurity, my project for making blurry photos sharp
8 points by teuobk 2 hours ago   4 comments top 3
points by Geee 11 minutes ago replies      
Which algorithms do you use? Blind deconvolution is kind of a hard job to do properly, but there has been lots of advancements recently. I had the same idea to sell it as an app and I did some investigation on the subject a while ago.

I think it's OK to charge per photo. Most people have that one very important photo they want to fix and that's when they search for a solution and are willing to pay. On top of that you could sell a subscription or plugin for photographers.

points by bhickey 1 hour ago replies      
I don't see the price point working. While I'm sorely tempted to shell out $300 for Adobe Lightroom, I am unwilling to use a service that charges me by the image. A subscription model might be more palatable to users.

Some cursory searching turned up FocusMagic, which operates as a Photoshop plugin or stand-alone and is billed at $45.

Edit: Sorry, I forgot to say that some of your examples are really impressive. Especially the goalie shot.

Edit Again:

Before: http://www.blurity.com/view/unprocessed/3EE424BE32D5DF95.jpg

After: http://www.blurity.com/view/preview/3EE424BE32D5DF95.jpg

points by teuobk 2 hours ago replies      
Ask HN: I quit my job today. Any words of wisdom for me?
3 points by hanifvirani 3 hours ago   5 comments top 5
points by mcrider 1 hour ago replies      
As an American that moved to Canada for school, I highly recommend it. Canada has very good schools (and more importantly to me, very cheap in comparison to the US) and as of the past couple years, its pretty easy to get work permits if you are a student or have graduated from a Canadian university (and as a grad student, if you're in the sciences, there is definitely grant money to be had).

Also, its fairly straightforward to immigrate here if you have a degree or get shacked up with a Canadian (I went the latter route, its a bit easier than immigrating on your own laurels).

But there's no Hulu.

points by jsavimbi 3 hours ago replies      
Luck wished.

For the next couple of months, if you're not independently wealthy, you're going to need a job to support yourself so start looking right away and make that your main priority. I cannot stress that enough.

Concurrently, but at a lesser degree of urgency, organize your thoughts, skills and personal projects to focus on what you think you'll be doing six months to a year from now so that when the time comes to advance onto your next big thing, you'll be readily prepared.

Network extensively. If possible, find a co-working space or jelly group with whom you can work with, maybe just on a part time basis, in order to get out of the house and keep up on your work/research discipline. You'll need that, and it's better than sitting at home all day. Plus, you might meet some people in the same boat and find a collaborator, mentor or partner.

points by pepsi_can 2 hours ago replies      
Good luck!

This is probably obvious but I overlooked it.

When I quit my job to start working on my online programming tutor full time, I went a overboard in choosing what ever programing tools seemed really cool.

I regret that decision. By all means, expand your own personal knowledge portfolio, but if you are working on a project with a serious deadline, choose the tools you are already productive with.

points by iamben 2 hours ago replies      
Most important thing I can say is just to get on and do. When you don't have to go into work for someone else every day, it's really easy to get distracted with day to day stuff - don't let it happen.

Aside from that, enjoy yourself. If you start waking up every morning and you're not enjoying what you do, you're doing the wrong thing.

Good luck!

points by vanni 1 hour ago replies      
Read "Start Small, Stay Small" (http://www.startupbook.net/)
And good luck!
How can I learn to program?
80 points by rocamboleh 1 day ago   72 comments top 39
points by espeed 1 day ago replies      
Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python.

Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to-program-in-Python/an...

Build something that you want to use so it will be meaningful to you. Do you have a blog? That's usually a good first exercise. It's easy to do using Flask -- follow the tutorial (http://flask.pocoo.org/docs/).

Here are some tips to get you started:

Use Emacs as the text editor to write your code -- it usually comes pre-installed on Ubuntu, and it has a Python mode. Here are some Emacs tutorials (there are some good videos on YouTube too):


Use PostgreSQL as your database. To install it on Ubuntu, use this command:

$ sudo apt-get install postgresql

Use SQLAlchemy (http://www.sqlalchemy.org/) to connect your Python website to PostgreSQL.

Here's a good SQL tutorial: http://philip.greenspun.com/sql/

When you build a blog, you don't have to worry about building a public authentication and comment system if you use something like Disqus (http://disqus.com/) -- you just include the Disqus JavaScript tag at the bottom of the blog's entry page.

Here are some good JavaScript tutorials: http://www.quora.com/What-are-good-books-preferably-found-on...

Use StackOverflow to ask programming questions: http://stackoverflow.com/

points by Todd 1 day ago replies      
First off, keep things simple. Don't dive into Linux, Emacs/VIM, etc. right away if you don't already know them. Your goal is to learn programming.

Next, you probably have an idea about where you want to be with your business. Is it mobile? Is it web? I'll assume the latter, because even if it's the former, you're going to need both eventually.

Even though it's not programming, you need to know HTML/CSS. Start there, even though it's not programming. You can get your feet wet editing and you can add programming shortly.

Start with a simple but capable editor. If you're on Windows, start with Komodo Edit or Notepad++. On Mac, something like TextMate. You can always 'upgrade' to Emacs/VIM later.

Once you're comfortable with basic HTML, you'll probably want to make it do things. You can start with JavaScript. This makes programming exercises simple and quick. Just refresh the page.

Once you decide you need a bigger challenge, then a larger world of choices becomes available: what server side language (Python and C# are two options), what server (Linux is pretty standard), what web server (Apache or Nginx are good), what database (Postgres, MySQL, MongoDB, etc...) are some of the many choices to be made.

I would first survey the above and decide what you think you might need, then pick the language based on that. Let's say you pick Python. Start playing with it from the command line or with your editor like you did with HTML. Once you understand the basics, then pick a web framework (like Django) and start making it produce the HTML that you now understand.

It's a stepwise process. The goal is to pick off small, achievable pieces, and then use them to build something more substantial. The core of it all, though, is programming. Programming is how you make the gears turn the way you want them to. Eventually, everything will start making sense and you'll just add to your repertoire as the needs arise.

points by ThomPete 1 day ago replies      
As someone who started out last summer I can tell you what I did.

I am quite a lot older than you and I have a child, a company and a girlfriend to manage, so you can probably pick it up much faster than me. Basically I have been forced to take an hour here and an hour there, sometimes more.

I have worked on it a while now but http://www.blueskycouncil.com is my idea of a idea generation website. still lot's of little mistakes but again it was actually having a goal in mind that helped me know how far in the process I was.

So here is what I have done.

1. Sign up for Lynda.com

2. Watch php/mysql for beginners twice, just to get an understanding of the scope that I am about to venture into.

3. Start programming with an idea in mind.

4. Use IRC, StackOverflow and friends

That should take you plenty of the way.

I can also recommend reading books like Code Complete to get a sense of some of the programming issues and paradigms to think of.

points by SkyMarshal 1 day ago replies      
A friend of mine is in the same boat. I forwarded him all the usual suspects, from "Why's Poignant Guide to Ruby", to "Learn Python the Hard Way", to "The Schemer's Guide". But none quite worked for him. He finally found and settled on Harvard's intro CS course, CS50:


points by makecheck 1 day ago replies      
If you're starting from the very beginning, learn a good text editor. (Editing is such a huge part of programming and has so many other payoffs that it is a very good first step.)

Use a forgiving and simple language like Python, and ideally an operating system where the tools you need are already installed.

Learn the documentation systems for your language of choice. For instance, in Python, you can go to http://www.python.org, run the command-line "pydoc" tool, and use the "help" function in an interactive session.

Use things like StackOverflow and Google (i.e. learn how to find answers and ask questions). These days, help isn't too far away.

Choose some programming goal, even that goal is something arbitrary like reading 20 lines of a text file and printing all the words that start with A. Make yourself write programs that achieve arbitrary goals so that you're satisfied with how well you're learning the language. Do this for a few weeks before you attempt anything remotely related to the "real" reason you learned programming.

points by 16s 1 day ago replies      
Solve a specific real-world problem you have by writing a program to do it. Start with Python or Ruby. Start on one platform (Windows, Mac, Linux). Start small and get bigger by solving bigger problems as you progress.

Then, write a program that works on all major platforms with little or no modifications. Learn C++ or C. Learn how to use a debugger, how to distribute code to end-users, etc. While doing this, learn data structures, big O notation and why they are important when you need to scale. Learn how to handle threaded data safely and Unicode input too.

Just start coding ASAP to solve "real-world" problems (not book exercises), the rest will come as you progress.

Edit: Spelling

points by pnathan 20 hours ago replies      
> One of our business coaches, a successful entrepreneur himself, suggested that the programming can be done with little problems

He's sort of a maroon. You can figure it out and be 'functionally illiterate' fairly quickly with some ingenuity and hard work. You'll produce some hardcore drek that will need to be cleaned up by a professional at some point though (maybe you after a few years of programming :)).

Python is the current fad language for introductory programming. I am not a huge fan, but there's lots of gentle reference material, which is probably more important.

points by Stormbringer 17 hours ago replies      
On the one hand, I would say don't bother. Just chop up the task into small bits and outsource them. There are programming equivalents of the logo design contests, you can get the programming done very cheaply, and there are business oriented non-programming guys having a lot of success doing this in the mobile app space at the moment.

On the other hand, I imagine you building the next big thing as a social webservice. You won't understand security, you won't know why it is important, you won't know why it is hard... this worries me. Even big supposedly tech savvy companies (Google being a prime example) get this wrong (when it comes to my data PRIVATE IS THE DEFAULT dammit, not public!!!)

On the gripping hand, you can treat programming like any other kind of artistic talent. You say you need to understand every aspect of the company... well, will you have art? Will you have splash screens and icons? Does that mean you will go to art school as well as learning to be a programmer? Maybe you need some sound, will you spend 10 years trying to become a concert pianist?

points by dlo 1 day ago replies      
The below three essays are absolutely invaluable.

Peter Norvig: http://norvig.com/21-days.html

Eric Raymond: http://www.catb.org/~esr/faqs/hacker-howto.html

Paul Graham: http://www.paulgraham.com/pfaq.html

points by NEPatriot 4 hours ago replies      
I'm going through this myself right now and am using a multi pronged approach.

1. Trying to recruit friends who have also said they would be interested

2. Watching videos from lynda, killerphp, etc.

3. I have an idea of something I want to build and so am learning with a goal in mind

4. Hiring a tutor via e-lance to answer quick questions on an hourly basis

points by chromejs10 1 day ago replies      
Following what other people said.. Python is a great (and powerful) language to get started with. It is what we teach our CS110 class at my University. Honestly, get a Mac or, like espeed said, install linux. Learning bash is invaluable. Also, learn HTML5/CSS. Every business needs a website, and with as powerful as HTM5 is, you could get up a decent one with just those two things (though javascript would be handy).

There are a ton of good resources online. Hacker News is awesome, Stack Overflow, etc. Python has a nice and free online book to get you started.

Best of luck!

Oh, I agree with the need for a good editor. Emacs is great (of course others will argue for VIM of course ;). Unless things have changed in the last release, you'll have to install it yourself which is one of the reasons people choose the lighter weight editor of VIM.

If you have a mac, I would suggest TextMate. I recently came across SublimeText 2 which is currently in alpha stages but is really cool too! It is cross platform so it will also work on Linux.

points by markkat 22 hours ago replies      
Here's how I am doing it: Grab an open-source program (in a space that interests you), figure out how to get it running, then mess with it. Keep changing it and messing with it.

After time, you will begin to understand more, and gain confidence. Just keep at it. Don't stop pursuing your business interests, etc, but just code code code. Best of luck!

points by xiaoma 21 hours ago replies      
The best resource I've seen is the Pragmatic Bookshelf Learn to Program, by Chris Pine. A good friend of mine who had no programming background whatsoever went through that book this August, enjoyed it and made great progress. It was enough that he found himself writing small scripts to help organize research at his pysch research job. The fact that he could occasionally save 15 minutes of work by spending 5 minutes to write a small chunk of code, kept it useful and kept him at it. The book uses Ruby, but what it really teaches is programming. My friend has since picked up quite a bit of Python and even a bit of JS with very little difficulty now that he understands functions, classes, iterators, blocks, etc...

In fact, what I saw impressed me so much that I've bought a copy to work through, even though I'm already writing basic flash games in AS3.


points by tuhin 13 hours ago replies      
Does a Python version of core programming concepts like Algorithms, Abstractions, OS, etc exist? Basically all the major course of Computer Science which need a programming language to grasp the concepts.

Every University site I have seen has them in C++ or Java. I was so excited to do MIT 6.0 Intro course for Python and throughly dissapointed that other courses are in C or Java. Do I HAVE to learn 3 languages (even if it just skim through) to just get the basic concepts?

I know of books like Learn Python the hard way, Think like a Computer Scientist and like but I guess they do not cover the above topics. Please correct me if I am being ignorant here.

points by will_lam 1 day ago replies      
If you're interested in taking the Ruby on Rails route, you can check out Chris Pine's book "Learn to Program" in Ruby.

Also there's HacketyHack, Rails for Zombies, CodeSchool.com.

Also there was an old HN thread that is very similar to your situation. http://news.ycombinator.com/item?id=2280070

points by dr_ 1 day ago replies      
There are numerous online resources most of them have been mentioned here. I agree Python seems like a great way to start, its what I've been working through as well. I'd also suggest to see if there are local classes available in addition to the online stuff. Sometimes paying for a course at a college can get expensive but if you are in a area which is start up friendly and has incubators etc., you can get some cheaper courses there, to supplement your other learning. For example, in my area (NYC) there is General Assembly.

Remember though - entrepreneurship is not a career. You have to have a solid idea that you can develop into a product - developing and then taking that product mainstream and running that particular business (or working on selling it)is then your career.

Just like non-profit work is not a career - usually people who go into a non-profit work environment have a passion for something in particular, that then becomes their career, which so happens to be for a non-profit entity.

points by Kaizyn 22 hours ago replies      
Hello Rocamboleh, what route you need to take to learn programming skills depends entirely on what kind of business you intend to start. Programming is a big field and has a lot of different technologies in it to pick from.

While espeed gave you good advice for how to setup your own server and all the tools needed for a Linux-based web application, this isn't necessarily the best route for you to go. If your software is intended to run in a big corporation, for example, then you should probably consider learning either the Microsoft technologies or the Java Enterprise technologies. If instead you're going to be working on iPhone/iPad or Android devices, then you will need a different tool set. There are a number of other alternatives you could pursue, as well. The answer really depends on what kind of startup software you need/want.

If I can help you further, please send me an email (address is in my profile) and I will be happy to try. Good luck with your endeavors.

points by a_bad_dream 1 day ago replies      
You could probably get away with not knowing how to code, but even an elementary understanding helps you to know what is and isn't possible. Spend a week or two getting the fundamentals of programming (even if you won't be able to program very well at the end of that time), and you'll be in a much better place.

Try Mark Pilgrim's Dive Into Python. It's free online, and python is one of the better introductory languages: http://diveintopython.org/toc/index.html

Aside from that, search stackoverflow for variations of your question - it's been answered lots before!

points by buckwild 19 hours ago replies      
I've found that I've learned the most about "programming" from working on projects. Imagine something you want to build, design it, and then code it. You'll learn tons, I promise. Plus, you'll have something to show for your trouble at the end of it (which is a great motivator to get you going on your next project). Rinse and repeat.
points by wccrawford 1 day ago replies      
Either take a class, or do it like most self-taught programmers: Find a need and start looking up how to make it happen. It's going to be VERY painful at first if you teach yourself, but if you stick with it, you'll get there.
points by gcv 1 day ago replies      
The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures.

- http://mitpress.mit.edu/sicp/
- http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of intense study.

Plus, as a bizdev person, you will earn incredible street cred with programmers. MBAs with backgrounds in Lisp hacking don't come along every day.

points by ksmith 1 day ago replies      
If you'd like to learn basic programming concepts right away, check out Pine's 'Learn to Program' (http://pine.fm/LearnToProgram/)

If you'd like to learn best practices, check out Hunt & Thomas' 'The Pragmatic Programmer' (http://www.pragprog.com/the-pragmatic-programmer).

To get up to speed fairly quickly on what's going on under the hood, check out Petzold's 'Code' (http://www.charlespetzold.com/code/) and Nisan & Schocken's
'The Elements of Computing Systems' (http://www1.idc.ac.il/tecs/).

points by tmachinecharmer 17 hours ago replies      
If you are using Windows:
1. Download Visual Studio Express Edition
2. Google for C# tutorials for beginners
3. Follow it.

If you are using Linux:
1. Google for Python tutorial for beginners
2. Follow it.

Learn some web programming by following tutorials on
w3schools. You should be able to create simple static web page and host
it on localhost.

Why C# and Python? Well both are widely used and are easy to grasp.

Once you grasp basic concepts like
1. if...else..
2. for
3. while
4. case
5. What are libraries?
7. What is difference between
compilation and interpretation?
8. What is the difference between editor, IDE and compiler?

the force will guide you.

And if at any point you get stuck you can always ask question at StackOverflow.com

Then, you can come back and "Ask HN" how do I become better programmer?

Best of luck!

points by ef4 19 hours ago replies      
Learning the basics would be a smart move. Just don't get a big head once you've learned a little, because the gap between "knows enough to be dangerous" and "truly competent" is vast.

The strategy is simple. Stay focused on practical problems at all times. Pick some real thing you would like to achieve, and bang away at it, learning as you go. When you get stuck, look for help on places like Stack Overflow.

Expect to suck at it, and expect to spend countless hours baffled by things you can't figure out. There's no skipping this process. Most people find it too painful, which is why most people never learn to program.

It doesn't really matter what projects you pick, so long as they're relevant to you. If they turn out to be "too difficult" you'll learn just as much, and be able to pick a smarter project next time.

points by ekanna 18 hours ago replies      
Start Learning JavaScript!
In one shot you will learn 3 things
1. Client Side Programming (Browsers)
2. Server Side Programming (NodeJS)
3. Database programming (Using JSON eg. MongoDB and CouchDB)
How to start?
1. Install NodeJS
2. Install Chrome Browser
Start palying.....
points by systems 1 day ago replies      
The best advice I can give you (by which I will also be echoing others), try to apply your knowledge as soon as you can.

Don't just learn to learn, because you will forget more than you remember.

points by eru 1 day ago replies      
Python, as mentioned, is an excellent choice for a first language.

However, if you are either mathematically minded or somewhat into chain-and-bondage, then Haskell might also be worth looking into. I'd suggest reading Raymond Smullyan's "To Mock a Mockingbird" if you want to go down that road.

It's a popular book about combinatory logic. The kind of logic you need for functional programming.

points by rblion 1 day ago replies      
Here is an MIT Course: Introduction To CS and Programming


Professor keeps everything simple and direct because this class is designed for beginners with no or little programming experience.

points by kodisha 1 day ago replies      
When i think about it - one language wont do it.
When you learn html/CSS - you will know how browser renders elements on the page, nothing else.
If you learn javascript - you wont know anything about server side.
If you learn PHP - it will complement your knowledge of html/css nicely, but you still need to know some javascript.

So my vote goes to PHP + javascript (+node.js) + HTML + CSS

edit: i recommend Ubuntu for development, or if you own a Mac, just install xampp and enjoy.

points by pepsi_can 1 day ago replies      
I wonder if my site can help you. It is intended as a online tutor designed for programmers preparing for job interviews but I think you'd find the find the practice problems, in-depth tutorials and the video lectures (coming soon) helpful once you get a bit of programming experience.

If you happen to try it out, I can answer any programming questions you may have, give you tips, feedback, etc.

Check it out at:


points by MichaelL 22 hours ago replies      
Do you want to be an entrepreneur or a coder?


This does not fit everybody, so if it's not for you, what could you take from this?

points by simon_kun 1 day ago replies      
points by SoftwarePatent 1 day ago replies      
I posted a similar question a few months ago, there are a lot of great answers in that thread


points by jdefr89 22 hours ago replies      
Don't start programming at all. I am going to be brutally honest, programming is not for everyone. The fact you stated you want to start programming and you're entrepreneur is a flag for 'someone who wants to learn to program in order to become some millionaire'. These sorts of people are not successful in the field. Worse, we have bad enough people in CS already don't poison the pool with even more people who bring nothing to the software table.
points by vchien 17 hours ago replies      
MIT open courseware - ocw.mit.edu
points by jschlesser 18 hours ago replies      
The same way you learn to write a novel in a foreign language.
Tell HN: Ann Arbor-Detroit HN Group
8 points by antidaily 10 hours ago   3 comments top 3
points by rmason 1 hour ago replies      
If you live outstate there's Hackers and Hustlers in East Lansing which meets this Wednesday. Theres also a Hackers and Hustlers chapter that has formed in Kalamazoo. Best place for information is on their page on Facebook. Some interesting discussions going on there.
points by dtwwtd 4 hours ago replies      
Great, also look into a2geeks for more local meetups: http://a2geeks.org/display/geek/Groups

One group of particular interest to people here might be http://www.a2newtech.org/ monthly meetups with presentations of new startups and startup ideas).

points by jeffepp 7 hours ago replies      
Awesome. Be sure to checkout http://startupdigest.com, Michigan edition. I am a curator.

BTW, I am in Bham too.

Ask HN: Does your (non EU) company charge VAT to European customers?
4 points by jibjab 9 hours ago   13 comments top 6
points by patio11 9 hours ago replies      
No, I don't.

I'm of two minds on this:

1) I think I'm in compliance, since most EU nations appear to have a floor for sales numbers beneath which you don't have to remit VAT payments. I am nowhere near any of the floors I am aware of.

2) Hypothetically supposing that that exception was eliminated, it does not strike me as obvious that a country on the other side of the world which I have never visited has the moral right to make their revenue problems into my development to-do list for tomorrow. I understand that this gives me a theoretical pricing advantage against EU firms, but seeing as how they have a vote on EU taxation policies and I do not, that should ideally not be too difficult to correct. If they can't convince the EU polity that their international competitiveness is more important than all the things the EU buys with their tax money, well, still not seeing why that is my problem.

points by jcr 8 hours ago replies      
I mean no offense, but here in the US, I never knew this directive existed, let alone how to comply with it. Will some group in the EU pay me to collect their taxes for them? If not, why should I bear the expense? And particularly so since I already have to bear the expense of my local tax laws. --Essentially, it seems this far reaching EU law exists to please some political purpose, like pretending to level a playing field, but as far as I know, it's mostly ignored or unknown outside of the EU (and possibly within the EU as well).
points by rmc 3 hours ago replies      
For the record, a 'Directive' is not a law upon people. It's something that individual member states must implement. So Each EU member state must implement this law. The EU has no courts for people (you can only bring countries to the EU courts), and likewise it has no prisons for people. It would not be the European Union that charges you with this, but it would have to be an individual member state.
points by SabrinaDent 2 hours ago replies      
However, I have never seen non-EU based companies do this. Why is that?

iStock charges VAT based on billing residency. So does Big Fish Games. That's just where I've spent money today, so yeah, it's common.

points by jpcosta 6 hours ago replies      
I am based in europe and my hosting service recently requested me to confirm my details (country of residence etc..) to charge VAT in accordance with EU laws.
points by rabble 8 hours ago replies      
It seems that this rule only applies on B2C sales. You only need to figure out what to do if your end use is a consumer, not a company.
Ask HN: Software Engineering Vs. Computer Science
5 points by riskish 12 hours ago   4 comments top 4
points by g-wizz 2 hours ago replies      
In my experience, the subjects you have listed such as QA and project planning are indeed useful in industry.

However, they are not complicated concepts. I didn't get a degree in SE but found that within a couple of months of working after graduation, I had been exposed to all of these and been taught best practice. After one or two internships, you may find that you will have too.
For most people, this is not the case with advanced CS theory which you may or may not be interested in.

Since many of the courses are common between the two, do you need to commit to one or the other right at the start?

points by regularfry 7 hours ago replies      
If you're anything like me, you'll be stuffed either way. I did a more engineering-focussed degree (10 years ago) and I'm still learning things that I would have learnt on a CS course. However, I'm also constantly using the SE knowledge I was taught.

I guess it boils down to which side you're happier picking up as you go along after you leave.

points by scol 11 hours ago replies      
(I am soon entering my final year in a CS degree and thus may be entirely wrong)

I'd go with the CS, rather than SE degree. Although I did not enjoy or learn much from Programming Languages, Automata theory (and basic CS theory) is WILDLY interesting. I can't imagine graduating without knowing that type of theory.

The best part is that since not many schools have SE degrees, having a CS degree (rather than a SE degree) will disqualify you from exactly 0 jobs.

points by stonemetal 12 hours ago replies      
I have never heard of anyone treating a SE degree differently than a CS degree. Mostly because as you point out they aren't really that different. One is more theory the other more practical.
Ask HN: What do you do to become a better software developer?
9 points by yijinsei 19 hours ago   7 comments top 4
points by makecheck 18 hours ago replies      
Learn multiple programming languages, so that you are in a better position to use the one that is most suited to a given task. This also exposes you to new ways of thinking...some languages aren't nearly as good at expressing certain concepts as other languages.

The ability to "glue" is a related skill. One type of glue is inter-process communication and shell scripting, allowing you to tie small programs in multiple languages together. Another type of glue is a generator tool like SWIG or Cython, where a single large program can take advantage of a high-level language and a low-level language instead of being confined to one suboptimal language.

points by ericHosick 14 hours ago replies      
Not in any order:

Learn to do more than just write software. In fact, learning how to minimize source code is a good start (really source code is bad like crossing streams bad).

Learn how to read and leverage off of existing, hopefully open source, resources.

Learn how to design away problems instead of coding a solution for them.

Learn to keep things simple.

Learn to design/mockup and get feedback (UX, etc.) on your solutions before coding them.

Did I mention the try not to write code part?

points by StudyAnimal 15 hours ago replies      
Practice, learn from others. Don't spend more time reading than coding, but a couple of books with good tips include "The Pragmatic Programmer" and "Apprenticeship Patterns"

Also going to dojos and doing katas.

points by nreece 12 hours ago replies      
Write lots of "bad" code. Read lots of "bad" code. Fix lots of "bad" code.

In essence, fix lots of bugs.

Ask HN: What startups are near a liquidity event?
5 points by fapi1974 4 hours ago   1 comment top
points by pitdesi 4 hours ago replies      
Ask HN: How should I establish myself as a freelance developer?
4 points by throwaway_yes 3 hours ago   3 comments top 2
points by imechura 3 hours ago replies      
A lot depends on your goals and your location. For instance, here in N. Texas you could make 1/3 more money programming Java then a cool language like ruby or python.

Also to be a well paid Java developer here you don't need amazing skills or more than 2 years of experience.

points by ryankals 3 hours ago replies      
What is your understanding of PHP/Java? I live in Brooklyn and am looking for a a freelance programmer for a site I'm working on.
Which programming language is the best for programming beginner?
10 points by surendra_sedhai 10 hours ago   13 comments top 11
points by DanielStraight 10 hours ago replies      
I would divide languages into these categories:

Practical and beginner-friendly: C# (if you're a Windows person), Python, Ruby

Technical and foundational (start here if you don't mind studying for 5 years before you produce anything practical): C, Lisp (using SICP)

Interesting but not beginner-friendly or foundational (play with these when you get bored): Erlang, Go, JavaScript, ML, Scala, Smalltalk

Haskell falls somewhere in between the last two groups. It's very technical, and it's foundational for functional programming, but it doesn't transition to other languages as well as C or Lisp might, and it doesn't have as much support as C and Lisp.

The last group is languages that are not especially interesting, beginner-friendly or foundational. That group consists of: C++ (complicated), Delphi/Pascal (little community support), Java (crufty, limiting), Perl (nightmarish syntax), PHP (jumbled mess which allows, but does everything possible to discourage, good code), Visual Basic (basically just C# with "simpler" syntax and less community support)

Any languages not mentioned are probably either far too obscure or outdated for you to even think about now.

I welcome disagreement on this categorization.

PS: I didn't forget Objective C, I've just never used it so I didn't know where to put it. Probably "interesting but not beginner-friendly."

PPS: There is a category which includes languages from all of the above categories. That category is "Likely to get you a job." It includes C, C++, C#, Java, JavaScript, Objective C, PHP, Python, and Ruby.

points by imechura 10 hours ago replies      
I am not a professional teacher but I tend to recommend Javascript for learning the first basics of programming.

The reasons are as follows.

1) Follows (mostly) C style syntax which transfers well into many other languages (Java, C, C++, C#, etc).

2) Lots of good examples available, just view source on your browser

3) Runs in your browser so no software to install no classpath, projects, compilation, or configuration to deal with. Also easy install of debugger, console, etc through firebug.

4) High instant gratification factor. e.g. make change, see results on web page. It makes a direct connection between the the students coding effort and creating something useful as opposed to a for-loop that prints 100 numbers to a green screen. If you are dealing with a teenager or younger person, getting something "cool" published on the web can be a great factor in motivation. Javascript requires the least amount of cost infrastructure and deployment hassles.

points by msluyter 10 hours ago replies      
Python is often recommended, and a great starting point is Zed Shaw's popular "Learn Python the Hard Way:"


points by checoivan 3 hours ago replies      
There's a theory about this. If one starts by learning object orientation first, it becomes second nature and easier to write well structured code afterwards(thinking of making smaller component, good structures etc) instead of vice versa, starting with procedural code and learning objects afterwards.

That's why most colleges start with Java and learn basics and object orientation, then move to C to learn memory management,pointers etc, and then Lisp and data structures to expand one's mind.

Though some courses start now with python which I find extremely cool. If I were to start again I'd like python since you can hack fully functional programs more quickly, and think about lists and data structures first instead of way later on. It also helps to rule out faster if the person is meant for programming or not.

points by euroclydon 8 hours ago replies      
Well, that depends on the goals of the beginner in question. We could also ask which human language is best for the beginner, but the answer would invariably be the language of the culture they live in.

I was just talking to a neighbor who's a game and graphics developer. He writes code in C/C++/C#. I was telling him about my side project, a website which sells cupcake wrapper designs. We got to talking about web development and he asked me what homework would I give him to get started. Well, after some more digging, it turns out he was most motivated by the idea of making some passive income on the web.

So, while I did email him links to RoR. I told him that learning about SEO, Keywords, and WordPress is what he should do first; that he should put up a couple of "trial balloon" sites to collect emails about his ideas, and then if he found potential customers who were interested in one of his ideas, he would have some great motivation to work through that RoR tutorial.

So, my advice is: Programming is just a tool, and unless the person is interested in programming from a pure academic standpoint, it's better to first find out what they want to do with that tool, and go from there.

points by madhouse 10 hours ago replies      
Whichever your friends or family know best (or lacking that, whichever you find the most readable / enjoyable documentation for).

You can't really go wrong with either of the mainstream languages, so I'd advise you to have a look at the documentation or tutorials for some of them, and choose one that you like best.

It also depends a lot on what you want to write, as certain languages are better for one task than the other. I wouldn't write a web app in C, for example, nor would I write an operating system kernel in python.

points by vannevar 6 hours ago replies      
I was just considering this question myself. I'm teaching programming to a friend with no experience at all. I finally settled on Lua, even though I don't know it myself. The syntax is clean, it's a compact language, and once she learns it she could use it in gaming, which she's into. My runner-up was Ruby. Python would be good too, though I think the significant whitespace is a distracting pitfall for absolute beginners.
points by mhd 10 hours ago replies      
The language matters less than the book or teacher presenting it. While some languages might make it a bit harder on the instructor, the inverse is a lot worse for a beginner.

And the quality of the book often depends on the prior knowledge of the fledgling programmer and his/her ambitions (important for the topics of exercises etc.).

It's hard to give an easy answer here. Scheme and Python are quite popular in this area, but not everyone should start programming by reading SICP.

points by babeKnuth 9 hours ago replies      
I find Python the easiest for non-programmers to learn. Less things to account for (syntax, conventions, etc.). Allows people to be very direct with what they want their program to achieve.
points by lovskogen 6 hours ago replies      
I'm actually starting with Node.js. I was thinking of Python, but Node seemed more up my alley, as a interface designer for web apps. Haven't had much time to dabble, though.
points by taphangum 8 hours ago replies      
Ask HN: Honestly, why are there so many "how to learn to program" asks?
8 points by maxbrown 8 hours ago   13 comments top 11
points by dwc 7 hours ago replies      
This isn't a new problem.

    Do you think the askers are following through, and
actually learning based off of the recommendations?

Some do, but most do not.

    Is there any way to compile the information in one
place and point askers towards that?

This has been done so many times over so many years that there's a plethora of pages out there (http://www.google.com/search?q=learn+how+to+program), some current and others in various stages of decomposition.

A truly motivated individual is likely to realize that this question is Googleable and will find tons of information. That leaves us with the occasional capable and motivated person asking for some guidance that HN could uniquely provide, and the rest of such questions are less worthy, IMO.

Making a nice resource, perhaps with some HN flavored info, would be really great were it to be referenced. The best case to me would be that "how to learn programming" posts would get no up votes and a single comment linking the resource. Or something along those lines.

points by JoeCortopassi 4 hours ago replies      
I think that the main reason that this question comes up so often (only to have it's answers essentially ignored) is because, "How do I learn how to program?" isn't what they really want to know. Programming, in and of itself doesn't take much to learn. A person with average intelligence can learn the syntax and basic idea of a language in a day.

I believe the question they really want an answer to is, "How do programs work?".

If you really boil down the initial appeal of programming, it isn't Python/C/PHP/Ruby, it's learning how to make the things that those languages are associated with. People are fascinated by programs that can sync files between computers (dropbox/Python), share pictures on the internet (facebook/PHP), or cause your computer to run (Linux/C).

I think the best way to help somebody with this question is to find out what it is about software that fascinates them, then suggest a language/framework that facilitates that.

points by bendmorris 3 hours ago replies      
My question is, why are so many people upvoting these threads? People should be encouraged to use Google as their first resource before posting questions on Hacker News. Even if you haven't been here long, you could probably guess that such a basic question has likely been asked before.
points by tnorthcutt 7 hours ago replies      
I think you see this for the same reason you see people endlessly debating/discussing version control systems, GTD, IDEs, OSes, keyboards, mice, browsers, etc. etc. etc. They're all just tools, and yet we (myself included) spend far too much time talking about them, and not nearly enough time using them. True, some of the discussion is merited and is rooted in useful thought about real differences between tools, but much of it is over analyzing.

I think much of this could actually be rooted in fear, which drives procrastination in lots of people - more than most of us realize, I think. Merlin Mann's gave a great talk on fear: http://www.youtube.com/watch?v=Lk0hSeQ5s_k

The key is to understand that fear isn't going to go away completely, and to still keep doing, even though you're scared.

Enough talk. I'm going to go build something now.

points by brudgers 4 hours ago replies      
There are so many "How do I learn to program?" questions because:

1. Asking the question on HN is a hell of a lot less painful than actually sitting down to learn to program.

2. Reading the answers feels a hell of a lot more like progress than eight lines of code that still doesn't work after four hours.

3. Programmers are more willing to answer "How do I learn to program?" questions than cellists are willing to answer "How do I learn to play the cello?" questions.

points by lovskogen 6 hours ago replies      
Myself, I want to learn basic programming to build stuff. Being just a designer, limited to front end " is limiting. I would think the same goes for some programmers, wanting to learn user experience and interface design. I think we'll see more people knowing how to build things, code and design. Like Shaun Inman.
points by rdin 8 hours ago replies      
I think part of it is that everybody has their own opinion of where others should start. For example, some people think that new programmers should start low-level (such as with C) and learn how memory management works; others think that a higher-level language (such as Java) is better and abstracts away all of the things that people can learn later. And of course, there's also web app programming, which brings in another curve
points by jrsmith1279 7 hours ago replies      
I'm betting a lot of them are people who have an idea and want to build it instead of either hiring someone or trying to find a tech co-founder.
points by themonk 7 hours ago replies      
Person asking such question wants to validate he learned it right way or not.
points by jcr 8 hours ago replies      
Personally, I believe they're trolling.
points by mariusz10jonski 7 hours ago replies      
I left one just a second ago
Ask HN: Why do Apps use sound FX and websites don't?
3 points by helipad 4 hours ago   3 comments top
points by madhouse 4 hours ago replies      
Probably the lack of a single sound format that is supported by all popular browsers on most platforms. And because animations can be easily done with JS/CSS, and that doesn't require all that much bandwidth or space, while good quality sound is considerably larger.
Ask HN: Examples of Great UX?
5 points by stevenj 7 hours ago   10 comments top 3
points by staunch 6 hours ago replies      
A lot of people like Mailchimp's UX.

I lean towards Hacker News' style: boring/minimalist/functional.

points by marilyn 5 hours ago replies      
The Dominos Pizza online ordering system has surprisingly impressive UX design.
points by imechura 6 hours ago replies      
Hipmunk is an example of great UX for advanced users of airline services.
Ask HN: Can Node.js Replace Mozilla Rhino?
9 points by euroclydon 11 hours ago   9 comments top 6
points by vladd 10 hours ago replies      
Comparing Rhino with NodeJS is not exactly fair since NodeJS is a server-side JavaScript engine while Rhino is just a JS engine.

You should compare V8 with Rhino, or NodeJS with RingoJS (one example for the later: http://www.erbix.com/documentation/overview/nodejs/ ).

points by olegp 5 hours ago replies      
As vladd pointed out, one should be comparing Rhino with V8, especially since there are other server side JavaScript platforms running on V8 like http://www.akshell.com

Apparently the new Dynamic Invoke feature in Java 7 has resulted in significant performance improvements in the latest patches of Rhino, but it still lags behind V8: http://twitter.com/hannesw/status/39677300169515008

That being said, performance isn't the only factor, since Rhino offers the ability to utilize the wealth of well designed and production ready Java libraries, a much better garbage collector and ability to use more than 2GB of heap. However, these advantages that Rhino has over V8 will be eroded with time as more and more of these libraries are reimplemented in pure JavaScript.

A much more interesting question is whether asynchronous I/O will trump synchronous I/O for web app development. At Akshell we believe that the concrete advantages that synchronous I/O offers in terms of ease of development outweigh the potential benefits of increased performance offered by asynchronous I/O.

points by jm4 9 hours ago replies      
Rhino is fine if you have to use the JVM. If you have a choice then I would avoid it. It performs like a pig. The re-throws everything as a RuntimeException. It uses statics all over the place so having more than one instance can cause all sorts of weird problems. The documentation is a little out of date and there are some gotchas that you are left to figure out on your own. Still, it's the only thing available on the JVM and it actually works so it's not all bad. I would love to have alternatives to look at, but it's not to the point where I want to start writing my own. FYI, I'm using it for DOM scripting in a custom spider.

Also, like someone else said, Rhino is an analog for V8 while RingoJS is an analog for NodeJS.

points by samuel 9 hours ago replies      
I don't think they overlap too much. Rhino's primary use case is Java scripting, and it's (alleged) low performance probably doesn't matter a lot since it's just the glue that binds together heavier Java libraries. I know a handful of apps that use rhino that way: Mirth, Orion Rhapsody, Pentaho's Kettle...
points by thedjinn 11 hours ago replies      
I have written command line data preprocessing scripts using Rhino and later ported them to Node. They became significantly faster. Haven't touched Rhino since that day.
points by onassar 10 hours ago replies      
I heard of Rhino a few years ago, but never got too into it. Node caught my attention recently because of the copious amounts of plugins that have come around. Kind of like JQuery; the community is so good that it makes sense that it's getting much more visibility than rhino. imo.
Ask PG: Can we see karma on Ask HN comments?
44 points by ibejoeb 2 days ago   1 comment top
points by adrianwaj 1 day ago replies      
So whatever happens, I'd prefer is the underlying html didn't change, so as not to throw off parsing efforts. Perhaps there can be a display:none.
Ask HN: How to pay developers in Europe?
33 points by DarkShikari 7 days ago   discuss
points by JonnieCache 7 days ago replies      
Western union is definitely less than what you're quoting there from BoA.

A general tip in this area is to find out what immigrants use to send money home. You can be pretty confident that they're getting a good deal.

points by TillE 7 days ago replies      
One way or another, you're probably going to want to set up an account of your own in Europe and figure out the cheapest way to transfer large lumps of cash into it.

At least in Germany, there's absolutely no charge to wire money to another account in Europe, including the UK.

points by vessenes 7 days ago replies      
B of A is gouging you. Are you big enough to shop for another bank? You may want to sit down with a VP of some competing banks, and take proposals, along with checking out some of these other options here.

One issue you face is Patriot Act, anti-terrorism laws. These laws have made it difficult for small / local banks to send international wires out to random people all the time; they need to have a "Know your wiree" type policy in place for everyone they're wiring. In your use case, since you sound like you'll have common developers, this would be an upfront, but not permanent problem. At any rate, I'd start by calling some Branch managers of large regional - national banks, and see who wants your business.

points by gommm 6 days ago replies      
The 35$ per transfer is normal, the 5% is not. It'll probably be cheaper to send the money directly in USD without currency exchange, the european bank will then deal with it and their rates are usually cheaper (at least for french banks).

You can also maybe suggest to the people you work with to setup a USD account with their bank. That's what I did with my bank in France, it was quite easy and allows me to exchange all the payments from USD to Euros in one go.

Another services I've heard some good things of but haven't tested is Xe.com Transfers [1] and Xoom [2]

[1] http://www.xe.com/fx/
[2] https://www.xoom.com/

points by dschobel 7 days ago replies      
Check out http://www.xe.com/

I'm living in Australia at the moment and lots of people recommended them for sending money abroad.

Not sure what the ramifications are for commercial purposes, but for changing large amounts of currency for personal use they give a damned good rate. I'm a BofA customer in the States and as you found, their rates are a joke.

points by TamDenholm 6 days ago replies      
I'm a UK developer and this is one of the reasons I very rarely accept work from people not in the UK. I usually accept paypal for overseas payments because even though the fees are ridiculous and I hate paypal, it actually takes about the same time and fees to accept international payments this way compared to a bank transfer. This however has the added benefit of being better for my client that is making the payment as it costs them nothing extra.
points by xgMz 7 days ago replies      
Use Citibank Global Transfers. I think this option requires opening a Citibank account by both parties, but once done you can transfer to most countries in the World, Mexico and India for Free and other places for $10 (less than a third of BoA)… https://online.citibank.com/US/JRS/pands/detail.do?ID=InterC...
points by mkuhn 7 days ago replies      
What about Paypal? It should allow you to move around money quite easily and people can withdraw it to their accounts also relatively problem free. Although I am not sure about the state of Paypal in all the countries you mention.
points by gexla 7 days ago replies      
Take a look at an exchange service such as xe.com. Basically the way it works is that you would do an ACH transfer to them and then they would do the conversion and then transfer out to the requested bank account. These services are supposed to give you the best conversion rates.
points by stevanl 6 days ago replies      
I run a small startup in the UK (www.mycurrencytransfer.com) that helps people compare currency transfers from different providers.

We've found specialist currency brokers such as Moneycorp, The FX Firm, IFX, and World First, amongst others, offer more competitive rates than the banks.

They are what businesses tend to use when paying overseas suppliers, and people purchasing properties overseas.

(Sorry for the "shameful plug", I just thought I'd chime in seeing as it seemed appropriate)

points by NonEUCitizen 6 days ago replies      
You can try Everbank www.everbank.com , which has World Currency accounts. It is a US-based bank, but you can have a Euro account, from which you can do wire transfers to Europe. Their conversion rates are good.
points by centdev 7 days ago replies      
A US check being cashed in the UK or most places, can take a few weeks. We had an office in West London, and the best way we found to pay our European team was by bank wire. You may want to look into Ruesch International (now known as Travelex Business). Might also be able to use them for other Sweden/Germany/France and Russia as well.
points by markklarich 6 days ago replies      
For smaller amounts, how about setting up an account in the US and getting a debit card for the payee? Pay into the local account. They use the debit card.
points by known 6 days ago replies      
I believe checks are safe and better for sender/receiver/govt
Ask HN: Where to get ideas?
7 points by white 17 hours ago   6 comments top 6
points by iamelgringo 13 hours ago replies      
Ask rich people what problems they have. Ask business people what problems they have. Ask business owners what problems they have.
points by stevenj 6 hours ago replies      
Take a look at things that exist today. What do you wish was significantly better?

What's broken that you have the skills to fix, or to at least investigate further?

In general, I think people should start by building things for themselves.

points by eswat 11 hours ago replies      
Make a text file and just dump notes, everyday or every other day, on anything that frustrates you (or others) that you can vaguely imagine being a successful startup. Keeping count with each note of how many times you get that "Ugh, I wish someone had solved this problem!" feeling can also help narrow down things when you're looking to build something.
points by gary4gar 13 hours ago replies      
points by ChrisNorstrom 15 hours ago replies      
Alex, I checked out your profile and your sites. I think we might be a good fit. I'm Chris Norstrom (http://www.chrisnorstrom.com) and basically I'm up to my ass in ideas. I've only posted a fraction of my creations online, my startup ideas I keep offline.

I'd love to chat with you on Skype if you can, I'm in St. Louis, Missouri but am planning on moving to the Bay Area soon.

Show HN: See how your startup stacks up against others in your space
12 points by paulsingh 1 day ago   11 comments top 5
points by pmjoyce 12 hours ago replies      
Sunnytrail [1] offers a service for SaaS providers to track key metrics once they have paying customers. However, they don't (yet) offer the most interesting part of your idea, comparing results against others in your industry.

It's a fascinating and a non-trivial problem you're addressing here and I'm interested to see how you approach it. Get it right and it could add huge amount of value.

The three toughest challenges as I see it:

1. Standardising metrics across a broad range of different business stages, verticals and models to provide a meaningful number (compare apples with apples).

2. Helping users to identify appropriate metrics from each of the AARRR categories. I.e. indicative and actionable.

3. The perennial problem of identifying unique users so that the behaviour of new or repeat visitors can be accurately measured prior to signup. IP addresses are not reliable (NAT & dynamic IPs), cookies can be flushed and potential customers have opportunity to access a service from a variety of devices - I know the folks at KISSmetrics put a lot of work into this.

[1] https://www.thesunnytrail.com/

edited for readability

points by carbocation 1 day ago replies      
Google Analytics does this ("benchmarking"), at least for traffic information (time on site, visitors, etc). Admittedly I don't think they do a great job of it, but are you aware of their offering, and can you explain how you'd distinguish yours from theirs?
points by sibsibsib 1 day ago replies      
are you planning on adding some kind of tour? I'd like to see screenshots before diving in.
points by ra 1 day ago replies      
Sounds very neat. I just gave you my email in the signup.
points by pearanalytics 1 day ago replies      
I'm very interested in this, but even just to auto track funnel metrics. If you can show me other startups in my space, that's just icing on the cake.
Ask HN: Do you use real-time analytics and for what?
9 points by matthiaswh 21 hours ago   6 comments top 4
points by shantanubala 19 hours ago replies      
If you're just talking about traffic analytics, then having an understanding of who's sending you traffic in real-time is really important for building a brand. The only way you can comment on blogs, Reddit, HN, or any other web site to answer questions is via real-time analytics. It'll help you connect with online communities and web sites, and make the communities want to support you.
points by benologist 19 hours ago replies      
Real time lets you spot problems and opportunities as they happen.

Developers using my platform have been able to identify problems they introduced very quickly when they were fixing bugs because data hits their reports in seconds and counters stopped going up just after their last build did.

In the context of websites real time analytics helps you efficiently produce or monetize content that has far too short a lifespan to wait for older systems to refresh their reports.

It's also very reassuring for users - before I made Playtomic real time devs often asked when the stats would update because they were testing their games, the reports weren't updating, and one of the options in that situation is they did something wrong.

points by staunch 18 hours ago replies      
I'm using GetClicky and really like it. It's useful to be able to see who's on your site and what they're doing. It's great for testing things (campaigns, site changes). Instead of waiting hours or a day to see what the effect was you can watch as people come in and see what they do.

Olark(YC S09) is another really awesome thing for this. It's meant for messaging but it lets you watch users as they browse around from page to page. You can popup a message saying "Hey, did you find everything okay today?" which may sound a bit creepy, but is really powerful.

points by illdave 11 hours ago replies      
I used Chartbeat on Hackerbuddy.com - it has customisable alerts which can go straight to your iPhone, so when traffic spiked I was able to react. The app hit the front page of Hacker News, and I was able to join in the conversation early on, which was really useful. It also got mentioned by Mashable, and Chartbeat alerted me and let me share the Mashable link around. It also monitors uptime and alerts me if the site is down - which means I get to reboot the server pretty much as soon as it happens. I'm not 100% sure real-time analytics is a requirement for everyone, but for me it's been extremely useful.
Ask HN: Why not fix JavaScript?
32 points by gary4gar 18 hours ago   46 comments top 16
points by phoboslab 18 hours ago replies      
JavaScript - without a doubt - has it's quirks, but it's a very nice and elegant language if you can restrict yourself to a subset of its features. The ECMAScript 5 standard and the Strict Mode[1] fix some of JavaScript's design problems. It's already implemented in Firefox 4 and should arrive soon-ish in Chrome (v8) and Safari (JavaScriptCore).

Also, jQuery doesn't "fix" JavaScript, it "fixes" the DOM. I.e. jQuery and many other libraries, have little to no use for programming games (shameless plug: e.g. with Impact[2]) or server side stuff. And some of jQuery's ideas have already been implemented natively in browsers[3].

JavaScript is extremely flexible and allows implementations of other languages like Coffescript with relative ease. I don't see a problem with "fragmentation"; it drives innovation.

[1] https://developer.mozilla.org/en/JavaScript/Strict_mode

[2] http://impactjs.com/

[3] https://developer.mozilla.org/en/DOM/document.querySelectorA...

points by neilk 16 hours ago replies      
I think your unstated assumption is that everything you describe shows that JavaScript is broken. I feel your pain, but a lot of your complaints show just how successful JavaScript really is.

It has libraries to abstract away differences in the underlying platforms -- obscures the miracle that it basically works on different platforms, even written by bitter competitors. What was the last language to do that? C? Perl?

It allows the programmer to create new abstractions like jQuery -- again, this is because of the good parts. It's highly dynamic. Even if JavaScript had all of jQuery from day one, people would still be writing frameworks to reach the next level of abstraction.

As for languages that treat JavaScript as assembly; well, it depends. Sometimes the motivation is to write better applications -- like, people want to define server-client communication at a higher level, or use similar representations of the same concepts on server and client. But that's more of a flaw of the browser (or server) platform, not JavaScript the language. It wouldn't be fixed if we suddenly had python in the browser as a viable scripting language.

The last category are people who treat JS as assembly because it's missing features, as a language, like types, or asynchronous communication, or internationalization. Now these really do show where the flaws in the language are, in my opinion. Some of this is being addressed in newer versions of the language.

points by dualogy 16 hours ago replies      
Your dilemma is analysis paralysis. jQuery is widely popular because of what it accomplishes, not just its syntax. And its syntax is totally "pure" JavaScript. How could anyone understand jQuery code that couldn't grok "pure" JS? jQuery is pure JS and does not radically alter the syntax.

The other camp, CoffeeScript (which I use and love) or "Objective-J"... yes they are different languages that compile to JavaScript but why does it bother you? Check out if you like or need them -- if not, stick to JS with or without libraries.

Now get busy =)

points by mrspeaker 15 hours ago replies      
It's easy to say "just fix it" but it the history behind JavaScript is complex and wacky - and one persons problem is another persons super-powerful closure. If you really want to know the nuts & bolts then you have to watch the Crockford on JavaScript series: http://developer.yahoo.com/yui/theater/video.php?v=crockonjs...

Yes. All of them!

points by yesbabyyes 17 hours ago replies      
Hi gary4gar, Brendan Eich is working on the next version and parts of it will be inspired by CoffeeScript. That said, you will probably be well off learning all three!
points by madhouse 18 hours ago replies      
If you'd 'fix' javascript, you'd still have to wait for browsers to support the new version, and they would have to support the old js until there are pages out there that use it. Which means pretty much forever.

At which point, the fixed language becomes irrelevant, as it cannot replace the older one.

points by Jarred 18 hours ago replies      
An even better question is "Why does it take at least four different languages for database-backed web applications, and why should developing on the web be so much more of a hassle than on the desktop?
points by ggeorgovassilis 17 hours ago replies      
Hello gary4gar,

1) Libraries offer functionality, they don't change the nature of the language. With this respect, jQuery & al. are not different from libraries you use with java or .Net. This is the same thing as considering the browser API (DOM etc) to be the JRE lib in Java and other libraries just extending the functionality.

2) Or the Google Web Toolkit which uses the Browser's Javascript engine as a form of bytecode interpreter. It is an efficient technique allowing for very compact programmes.

Javascript won't be changed (too much) because it is not broken - it brings an untyped system, closures and other goodies which just recently entered java, not to mention the benefit that it speeds up development because it does not require compilation. Adding libraries and frameworks is what happens just alike to any other programming language which allows other users to bring in new functionality and a different way of thinking.

points by grimlck 18 hours ago replies      
Is it a workaround that your CPU doesn't run C++ code directly and instead runs assembly, and a compiler is needed to convert C++ to assembly?

The answer is obviously no, so how are 1) and 2) any different? I think they are great things - they encourage competition and allow for much more rapid progress than if there were a single monolithic framework and language that everyone was forced to use. Trying to create a single perfect platform that makes everyone happy is an impossible task.

points by aberkowitz 17 hours ago replies      
How can you call it fragmentation when everything ultimately turns into valid JavaScript?
points by edtechdev 12 hours ago replies      
A 'simpler' solution would be to simply offer a complete alternative to javascript in the browser. If they released a new, fixed version of javascript, it would take at least a few years for the other browsers to catch up, assuming they even do (IE won't).

They actually did work out how to 'fix' many of javascript's issues over 10 years ago with the Javascript 2 proposal, but it never happened. http://www.mozilla.org/js/language/js20-2000-07/index.html
If they had simply added type annotations, for example, javascript would be an order of magnitude faster today, and pretty much every language out there could easily compile to javascript without losing any speed or features.

points by adrianoconnor 10 hours ago replies      
The answer is pretty simple: whatever 'fix' you come up with will only last until somebody tries doing yet something else that you hadn't anticipated. At that point, you'll be back to square one.

This is the magic of human ingenuity. It has nothing to do with standards and best practices. That said, Javascript (as a standard) is obviously plenty good enough to let us coerce it in to doing all of these thing (like jQuery, Coffee-script, node.js and so on), that I'd say the people who have steered Javascrip over the years have done a pretty good job, all considered.

points by X4 12 hours ago replies      
That's is simple.
You're watching it from the wrong perspective dude.
When DSLs/Frameworks/Libraries/ spread around languages, it's a strong indicator that the language is highly valueable, but not abstract enough to like it.

What I mean is that it's not easily understandable, fullstop. That's a simple reason for, why people create jQuery,CofeeScript,SproutCore and many other Abstraction Layers.

You will see that only the fittest will survive!

Your question is at the bottom of your post, irony..
Javascript's roots are anchored at the bottom too, you cannot just unearth it and plant it into another pot.
But you can graft it :)

Evolution Baby!!

points by mburns 17 hours ago replies      
Microsoft threw a fit when Adobe proposed a significantly improved version of Javascript (inspired by modern ActionScript, not surprisingly).
points by pschlump 17 hours ago replies      
There is no problem to fix - JavaScript is the 2nd best language. LISP is better. KnR C is 3rd. No good language is easy to learn and understand.
points by dorkitude 17 hours ago replies      
Because it would take roughly 1 billion years for those standards to have actual, web-wide meaning (thanks in no small part to the popularity of Microsoft's so-called browsers).
Ask HN: How would you make a site resistant to government takedown?
138 points by icey 3 days ago   55 comments top 23
points by die_sekte 3 days ago replies      
TLD: .is (pricey, but not expensive). Registration at inwx (seems competent, nice interface). DNS at either inwx or ______ (I haven't been able to find an EEA/Switzerland DNS provider). Hosting at OVH (cheap, IP failover, often used for torrents) or Leaseweb (used by some torrent sites, not quite as cheap as OVH).

This assumes that your content is only somewhat controversial. For worse: TLD .is, Hosting at PRQ (hosts NAMBLA, AnonTalk, …), no idea which registrar I'd use.

If people are actively trying to kill you because of what you want to publish, your only options are PRQ or NearlyFreeSpeech. Both can be fully anonymous, i.e. they will host your content without knowing who you are. Payment would be somewhat hard (I wonder whether they would accept mailed-in, sterile bills (though these could be traced)).

points by rdl 3 days ago replies      
The easiest way is to not make a "site" but a collection of files which can be distributed by others. You could possibly include offline-executable content, or if you must have it be online (some kind of transactional thing), make it easy to set up mirrors, especially for people to set up mirrors without your cooperation or awareness.

The hierarchy of resilience:

It's trivial to censor an (average wealth, average risk tolerance) individual -- just harass and prosecute for unrelated things. Everyone is a criminal, once you have enough laws...

It is fairly easy to censor a commercial organization (just cut off their payments and banking...)

It's harder to censor a free site (it can do what everyone is suggesting here; hosting offshore, non-US domain name, etc.)

It is much harder to censor something which can be readily mirrored by others.

It is very hard to censor distribution of a dataset. Even harder if the dataset is very small (sony keys, dvd-css, etc.)

It's almost impossible to censor an idea.

points by thaumaturgy 3 days ago replies      
Build it on i2p: http://www.i2p2.de/

I'm a huge fan of (and advocate for) i2p. As cases like today's FBI seizure of domain names continues to spread, I think i2p will gain even more traction as a viable alternative to the "old" internet.

It is multipath, encrypted, and completely decentralized.

All it needs now is a "killer site".

points by kgo 3 days ago replies      
Which TLD? All of them. Or at least several TLDs and registrars that all have different legal jurisdictions. (online-hunting.ly, online-hunting.ch, online-hunting.cn)

Where would I host it? Everywhere. Or at least in multiple physical locations in different countries that all have different legal jurisdictions. Either synchronized up or sharded out depending on how the app works.

points by jdp23 3 days ago replies      
TorrentFreak had some recommendations a couple months ago: http://torrentfreak.com/how-to-stop-domain-names-being-seize...
points by jberryman 3 days ago replies      
It wouldn't really be part of the WWW proper, but you could run a web server as a TOR hidden service which would (assuming TOR doesn't disappear) be totally anonymous and impossible to take down.


points by pumpmylemma 3 days ago replies      
I mentioned this in the Poker thread. (If I had time right now, I'd consider implementing it.) I would like and would use a DNS service that 1) did not keep any record of my queries and 2) would not propagate government takedowns (e.g. by ignoring updates with NS:ns2.cirfu.net.
points by JoachimSchipper 3 days ago replies      
Iceland is trying to attract this kind of clients.
points by grandalf 2 days ago replies      
I don't think it's possible. Instead try a social engineering approach where you have enough broad-based support for the concept that there is pressure on the government not to shut it down.

Wikileaks has been very smart lately in the way that it has expanded its own PR reach before delving back into controversial material.

points by omouse 2 days ago replies      
Keep spare domains around and keep mirrors of your content. Make sure to keep a static copy around as it can be a pain in the ass to setup a database server and other apps quickly. Toss the mirror on BitTorrent and get friends, family, strangers to download it and host it. Host it on free website hosts. Host it on Freenet!

Take over forums, pastebins, and other websites to keep the message alive.

Basically, you'll want to have as many avenues as possible in order to send the content across them. As soon as one domain goes down, a bunch of mirrors should pop up.

points by maxharris 2 days ago replies      
Instead of trying to outfox your own government, which is something you cannot do, turn your attention to peacefully and openly advocating for whatever it is you want to say. If that doesn't work, or you can't do so, move.

I know that this is a life-threatening proposition in totalitarian states (the Berlin Wall was designed to keep East Germans in), but I don't think that life under dictatorship is very much of a life anyway.

points by Calabane 3 days ago replies      
Obviously .ch which is Switzerland and Switch.ch as the register. They are the original neutral nation.
points by iuguy 2 days ago replies      
It depends on whether you're looking to get it in front of lots of eyes or whether you're more concerned about it not being taken down.

For the former, I'd use a .is domain (Iceland) and host it with OVH or Nearly Free Speech.

For the latter I'd host it on Tor as a set of static files, available via a torrent for mirroring, and would encourage mirroring in the name of free speech.

"All rulers in all ages have tried to impose a false view of the world upon their followers." - George Orwell

points by drtse4 3 days ago replies      
A site takedown starts with a request from some government agency, so the first thing that come to mind is to host it in a place where every request will need to go through a tick barrier of language issues/misunderstanding/bureaucracy. But considering that you'll also need a good network infrastructure there aren't many places that meet these requirements.
What about China?
points by reso 3 days ago replies      
For the very hardcore/paranoid, you could serve it through TOR as a hidden service. You get DoS protection, server and client anonymity, you don't even need to disclose your IP address. Of course, you can only connect to it through TOR.


points by duodecim 2 days ago replies      
Convince someone with diplomatic immunity or a member of parliament or other government entity. It will become an international battle of words and strong-arm diplomacy, but one country's government is quite unlikely to shut down another's. (Well, except perhaps the US.)

But truth be told, I don't think you can safeguard data on just one site. There's (D)DoS, ip routing, domain registration system, physically cutting backbones, etc. I'm sure no registrar wants to risk losing 50% of their customers ("50% of the world", assuming even spread), especially everyone in the US market, so as a profit-based organisation they will have to give in to threats of litigation or plain IP null-routing.

Mass distribution seems the way to go then. P2P or just lots of willing people putting the content on their own websites. Once it's out there, I guess it's nearly impossible to get Jack back in the box.

points by quadhome 2 days ago replies      
How badly does the USG want your hostname? They control the root zone. And all but three of the organizations that run root servers are based out of the US.

Therefore, if the USG were motivated to block your hostname-- regardless of TLD-- they could make a fairly good go at it.

points by blendergasket 2 days ago replies      
This idea is something that's been really interesting me a lot since the US Govt started doing this and since all of the craziness with the internet in the middle east.

The Pirate Bay is working on a "P2P DNS" network: http://arstechnica.com/tech-policy/news/2010/11/fed-up-with-...

Unhosted is a project that seems to be trying create a decentralized cloud: http://www.unhosted.org/manifesto.html

and what was mentioned before, i2p and tor.

This is all very interesting to me. It's like authority structures of all different kinds are putting their thumb down right in the middle of the web trying to crush it's autonomy. The inevitable backlash will lead to the fragmentation of the web in just as fundamental a way as the walled gardens that cell phone/tablet/game console companies create.

points by handsomeransoms 3 days ago replies      
Interesting. Does anybody here have experience with PRQ or easyDNS, two sites that are often mentioned in connection Wikileaks et. al.?

This is a great question, thanks for asking it!

points by cheez 2 days ago replies      
.onion seems good but I don't trust it.
points by known 2 days ago replies      
points by jeffclark 3 days ago replies      
Don't make a site that's illegal.
       cached 19 April 2011 00:05:01 GMT