| Hi HN, I'm embarrassed when looking at my web development work flow, that basically hasn't changed ever since I started programming as a hobby ten years ago. I have never moved beyond writing my code, testing it locally with a standard version of WAMP and then dragging my files into an FTP client, uploading them to some unspectacular web hosting service, as if it was just another folder on my computer. [Web development was never priority for me (I studied design and I work as a designer now), but I both enjoy working on small project on the side and also believe that it is my duty as a good designer to understand what it means to implement the things that I come up with.] If I ever wanted to develop something that is more than just a little personal experiment on the side, I would miserably fail, because my knowledge of a serious workflow is just non existent. So this is where I'm asking for your help: It's hard to learn about something that you hardly know anything about. I don't even know where to start. I would greatly appreciate to get your opinions on a good, not too complex (keep in mind that I'm not exactly trying to build the next big thing here), modern and professional workflow that shows me a more serious side of web development than Notepad and Filezilla.
What are the keywords I can use to start learning about this? What are the programs and technologies that you use yourself and that you would recommend? What are the absolute nonos, that expose an absolute amateur? Thanks! |
It's really comes down to personal choices (see the discussions about vi vs emacs), and for this reason, it's hard to track down quality advice -esp. keywords. Instead, try Googling what you'd like to achieve (eg. "use ftp as local drive"), and be amazed by the variety of tools available :)
> What are the programs and technologies that you use yourself and that you would recommend?
Taking care of the whole webdev site of our web-based startup, here's what my current configuration looks like.
Assuming: Windows as the dev machine, Debian/ubuntu, or shared web hosting on the server side
* Total commander: is my file navigator of choice -shows 2 tabs of filelist side-by-side, can bookmark any number of directories, many awesomeness included.
* Webdrive: mounts a remote FTP / SFTP / SSH account as a local drive. Check the "support for FTP" requirement off of your texteditor of choice.
* Putty: if you've got shell access to the remote machine, running two of these parallel: tail -f ./access.log tail -f ./errors.log will give you a realtime view of what's happening of your web server, and what error messages did you generated -the later isn't always readily available, esp. if you start getting into ajax
* Notepad++ : has a nice syntax highlighting, an awful lot of shortcuts, support for unix-encoding (on windows), amongst many features.
* Git: you will need to do version control.
Here's how this works together:
* Have 2 machines, 1 for dev, 1 for live, both using a dedicated machine, and a database of it's own. (quick intro how to set up a staging server: [1] )
* Webdrive mounts dev machine's web directory via SSH. All changes are securly transmitted to the server.
* REPL[2] cycle: navigate to the target of interest in Total commander, hit F4 (opens it in Notepad++), do some changes, hit CTRL+S (Webdrive automagically uploads the file), ALT+TAB (chrome), F5 (page refresh), observe changes / errors, ALT+TAB (back to notepad++), bang away. Added bonus: you'll see what you'll get while being deployed on a linux server (the differences between a WAMP, and a LAMP server can be quite a pain)
This allows for a REPL-cycles clocking <2sec, which I found hard to beat for remote-based REPLs :)
* Once the features are tested, and pre-deploy checklist is done, git add ./ , and git commit will push this into local git repo. Then, on the live-server's side, do a git pull ssh://[staging-server] ,and it's live. If you're having "a learning experience", you can always git reset to a previous version.
> What are the absolute nonos, that expose an absolute amateur?
Standard FTP-based transfer is malleable to Man-in-the-middle attacks[3]. Notepad usually does \r\n instead of \n, which caused me some headaches with older versions of readline/writelines. Putting together design in notepad is possible, but massively sub-optimal: try sketching it with photoshop, generate some skeletons, and use this as a starting point. Local development (requesting from 127.0.0.1) allows using several javascript capabilities, which aren't available for public deployed sites.
I think this should you a good headstart, comment below if you have any questions :)
[1] http://www.kalzumeus.com/2010/12/12/staging-servers-source-c...
[2] http://en.wikipedia.org/wiki/REPL
[3] http://en.wikipedia.org/wiki/Man-in-the-middle_attack