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.
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.
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.
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.
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.
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.
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/
Use StackOverflow to ask programming questions: http://stackoverflow.com/
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 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.
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.
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.
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.
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.
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?
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
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
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.
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!
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.
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.
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
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.
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.
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!
- 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.
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/).
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?
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.
Don't just learn to learn, because you will forget more than you remember.
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.
Professor keeps everything simple and direct because this class is designed for beginners with no or little programming experience.
2. Search for: "start programming"|"learn to program" site:stackoverflow.com
edit: i recommend Ubuntu for development, or if you own a Mac, just install xampp and enjoy.
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:
This does not fit everybody, so if it's not for you, what could you take from this?
One group of particular interest to people here might be http://www.a2newtech.org/ monthly meetups with presentations of new startups and startup ideas).
BTW, I am in Bham too.
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.
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.
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?
I guess it boils down to which side you're happier picking up as you go along after you leave.
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.
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.
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?
Also going to dojos and doing katas.
In essence, fix lots of bugs.
Also to be a well paid Java developer here you don't need amazing skills or more than 2 years of experience.
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)
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."
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.
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.
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.
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.
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.
Do you think the askers are following through, and actually learning based off of the recommendations?
Is there any way to compile the information in one place and point askers towards that?
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.
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.
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.
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.
I lean towards Hacker News' style: boring/minimalist/functional.
You should compare V8 with Rhino, or NodeJS with RingoJS (one example for the later: http://www.erbix.com/documentation/overview/nodejs/ ).
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
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.
Also, like someone else said, Rhino is an analog for V8 while RingoJS is an analog for NodeJS.
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.
At least in Germany, there's absolutely no charge to wire money to another account in Europe, including the UK.
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.
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  and Xoom 
 http://www.xe.com/fx/ https://www.xoom.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.
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)
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.
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.
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.
edited for readability
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.
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.
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?
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.
Now get busy =)
Yes. All of them!
At which point, the fixed language becomes irrelevant, as it cannot replace the older one.
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.
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.
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!
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)).
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.
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".
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.
Wikileaks has been very smart lately in the way that it has expanded its own PR reach before delving back into controversial material.
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.
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.
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
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.
Therefore, if the USG were motivated to block your hostname-- regardless of TLD-- they could make a fairly good go at it.
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.
This is a great question, thanks for asking it!