Also update on the most important thing: My friend did end up making his website :)
After solving each challenge, you're given access to the message board for that problem where people post their code and discuss how they solved it. The problems tend to become more focused on math implementations than programming after a while though, so this may not be the best example for you.
> Create a directory to hold your website and cd into it.
would already confuse them.
Now that you already got that nice domain I think I'd be great to have a guide like that aimed at beginners with more detailed instructions. I could see this as a great resource to link friends who always thought about getting their own little site, even if it's just a page listing their contact details.
I stopped after writing one article because I didn't get much interest, but then I didn't put much work into publicising it either. If people found it useful I'd certainly like to keep adding to it until it explains how to go from never having programmed to building a website which can take payments.
You can find it at http://makethispage.com/chapter-1.html
I struggle with this a lot when writing teaching materials. It feels like teaching somebody how to create a directory should not be a part of teaching somebody how to make a website. Beginner or not. You should already know how to use a computer.
At what point do you say "You know what, a beginner should know this"? Or whatever the specific level you decide to teach at.
Personally I try to teach at levels above beginner. This only makes the line blurrier because there's no clear divide between someone who kinda knows his stuff and someone who's an expert. It's the same problem as putting rocks in the same place. At what point does a bunch of rocks become a pile?
Same here, at what point does a total beginner become just a beginner? When do they become not a beginner? What turns them into someone who kinda knows what they're doing? At what point do they become "actually kinda good"?
For instance: my mum can accomplish all her work tasks with a computer. But she has no conceptual idea of what is a file. She thinks in documents and she only knows how to open documents by going through the app she created them with. The attachments in her email are a completely different world than the ones she creates with Word directly. I once blew her mind by showing her that she can use Word to open something that was sent to her via email.
Or, for another example, my girlfriend always gets frustrated with me because I can't just "Explain How Everything in Computers Works. How Does a Source File Turn Into A Working App?" in under five minutes. How do you even begin answering a question like that? Do I claim magic, or start with turing machines and work her way up to formal grammars and compilers? She's asking a question so far beyond her understanding that I don't even know how to begin answering.
You could try to be romantic and playful and say the love child created by a sexy, error-free relationship between source code and the compiler is an executable?
Sure, they (probably) understand what a file is much better than your mum, but still: Canvas, "this", libraries, dependencies, etc etc..
I was having trouble explaining stuff to my father as well but I realised that I don't have to give him a pretty picture of how a computer works when all he wants is to be able to reply to emails, print attachments and create documents. Forget the file system and the desktop and the folders and this and that, all he wanted was simple step guides to perform these very specific tasks.
In the end, the teaching process is the same, no matter how (non) beginner someone is: There is always something they probably don't know and you don't have to teach them the whole universe before they learn how to do something. You don't have to know what electricity is in order turn the lights on..
A typo only someone from this community would make.
I've found that it helps to start with the content first. Whenever I've tried to create a site where there was no content it felt really overwhelming since it's difficult to figure out how to present things nicely when you have no idea what you're trying to present! Of course, if it's your first personal site you very likely don't have much content for it, so it's a bit of a catch-22.
Also, don't github pages need to be deployed to the gh-pages branch?
But it's still a lot worse than the simple web page builders (using a web-based UI) that have been around for 15 years or so. Why not just use about.me or some similar modern service?
Taken from https://about.me/laraodm, which I got to from the About.me homepage > staff picks.
However, I can't help noticing that when I first used a home ISP, you got some web space thrown as part of the deal, and setting up a first web site would have required only this:
1. Write the index.html file.
2. Upload it to your ISP-provided server by FTP.
3. There is no step 3.
This was 15-20 years ago and pretty much universally available free of charge with any residential ISP here in the UK. The most complicated thing would have been getting your own domain name, because that would have required a few more button clicks and a small payment.
Sadly, the centralised "build my web site" sites and social networks seem to have taken over, and looking around it seems like today most ISPs no longer offer basic shared web hosting for free as a routine part of their plans.
So today, per this article, getting your own site on-line might need all of this:
1. Know the most complicated VCS in history.
2. Be comfortable with CLI use.
3. Have Python installed, just to run a local web server for testing.
4. Depend on a third party (GitHub) and all that comes with that (I wonder how many people who advocate GH all the time have actually read what they're signing up for).
5. Know how to order a domain name from a separate registrar and then how to hook it up to the aforementioned third party.
Any one of those things will probably be a huge barrier and a cause of repeated failures and frustrations for anyone who is interested in this kind of help in the first place.
Again, I appreciate the effort to help a friend navigate these waters for the first time, but in general I'm not sure this constitutes progress.
Putting HTML in place that it can be opened by a web browser is not a challenge and has not been a challenge for over a decade. Github is one choice, shared hosting is another... as the comments already show, you can argue pros and cons of various choices ad nauseum, even on such a trivial web page as OP's.
The larger point that seems to be getting missed is that the question of "How?" pales in comparison to the question of "What content should I put on my site in the first place?"
You need to learn a bit about git, but that's about it. The DNS parts are mostly about knowing what you need to do (add an A-record and/or a CNAME) and then it really depends on your DNS service provider or registrar. Some registrars manage to make a mess of it. I use a registrar that has an extremely bare bones interface that is exquisitely clear.
Having tried to help various friends who use all-in-one hosting solutions, I would have to say that it is far, far easier to spend a couple of hours learning just enough DNS and Git + Github to get this done than use those systems.
Because if you use the method outlined in the above mentioned website, you will have tons of documentation and community support to lean on.
Most all-in-one-solutions end up being between you and a useless service provider who will lose money on you if they provide you with any support.
Unfortunately, solving this problem isn't easy or obvious. You'd need to use ALIAS / ANAME records, which are only supported by a very few DNS providers (DNSMadeEasy, Rage4, Amazon Route53 if you are hosting on S3). Also, you need to set a low TTL to make sure that you are not caching an old cloud instance's IP address.
The best writeup I found about it is here: http://www.dnsmadeeasy.com/aname-records/
Could be really great as a resource to send to friends who complain about doing XYZ. Send them to MakeThisInAnHour.com
`python -m http.server 8000`
In case anyone was interested.
Great post, I really think it highlights the power of technology and the appeal that it offers.
The name of the bucket has to be the same as your domain (e.g. `www.example.co`), and then you turn on static site hosting in the bucket settings, and get a URL like `www.example.co.s3-website-us-east-1.amazonaws.com`, then you can add a CNAME record in CloudFlare pointing `www.example.co` to the bucket URL. (If the bucket name doesn't match the domain name, S3 will complain)
It's not free, but it is cheap.
Now as to why start the simple http server to check your work vs. opening the index.html file directly in the browser:
1) relative links can behave in an unexpected manner using the file:// path, and you'll get more consistent behavior using the server
2) There are sometimes permissions errors loading scripts into the page when it's displaying through file:// (relatedly, protocol relative links eg. //code.jquery.com/jquery-2.1.3.min.js won't work).
markdown is clear and easy to write posts. If this post extends to teach hosting markdown pages, one can use the website built using this tool to make his own blog. This might help people more than teaching just to create a website.!
Also, noticed you're working on CareersMob? Let me know if you want an intro to the folks CareerMob (https://twitter.com/careermob)
Would anyone be interested in a fork of the page that includes a quick primer about where to type the given commands?
Sorry, bit of a personal rant at my first GoDaddy experience.
But for sure, nothing wrong with this info...it's cool how the OP set things up for his solution.
What's the database backed dynamic website equivalent of this? For node? For python? For ruby?
Building out your own deployment on AWS or linode is obnoxious. Heroku gets expensive fast.
or he'll still no see anything :P
There's a heavy backend, multiple servers to setup, manage and monitor. Then there are databases, SSLs configurations, privacy concerns, http requests that need to be routed, emails that need quick replies, fault-tolerance strategies, CDNs, authentication schemes, payment gateways, rating systems, backup schemes...
Did Code Academy teach how to handle all of the above or are you referring to a front page that I could fetch and regenerate in 20 seconds using curl?
The site also doesn't say to copy paste the contents (read point 6 and 7) so your example is a bit strange. The site doesn't even mention to copy paste anything as far as I saw.
Also she* :) (doesn't matter, but hopefully it won't be an automatic assumption eventually)
It is a website.