Page 1 of 1

Standard practice for implementing basic functionality?

Posted: Mon Oct 12, 2009 5:54 pm
by cardinal
Hi all,

I'm starting my own website which will have need for the basic ubiquitous functionality of login authentiation, registration, automated emails, private messaging, picture uploading, text searching, etc. which is found in alot of websites especially forum-based ones.

Just to be clear, I'm not starting up a forum website - I know there are autogenerators out there which can setup everything with the click of a button, but my requirements are such that I need to tailor alot of the PHP/SQL and HTML code to fit the website's purpose.

I've been going through alot of online documentation (mainly through Googling), but I was wondering if anyone knows what the standard procedure is for implementing these kinds of services? Because they are so common, I figure that there has to be some de facto way of implementing registration/log-in and picture uploading (not to mention the backend of how to save/store and sort through this information later) - I did get a great answers from Chalks about the PM'ing, thanks Chalks!

So far, I've written all the code myself with help from literature that I find online, but I have to ask myself (and you all) whether there's a better faster way and possibly more secure as well, i.e. some Guru somewhere wrote the book on text searching through multiple posts and everyone just uses his code - infact I'm quite concerned about searching and how to do in a smart way that will have the least impact on servers but I can't seem to find anything good other than the standard wildcard search method.

If anyone has any suggestions or links that I can follow up on that'd be really helpful. I know that some peoples' whole jobs are to work on questions like these, but I need a compromise between getting my site up and running and making it perfect.

Cheers!
Card

Re: Standard practice for implementing basic functionality?

Posted: Mon Oct 12, 2009 6:03 pm
by Christopher
Depending on the type of site, you may want to look at CMSs like Drupal or Joomla.

Re: Standard practice for implementing basic functionality?

Posted: Mon Oct 12, 2009 6:12 pm
by superdezign
Forgive me if I'm assuming too much, but it sounds as if you are doing fine, but you are getting bored. If you want tips on keeping yourself on track, I have a few pointers.

Design first. As a programmer, it's easiest (for me, at least) to make something after I know what it should do and how it should do it. I work well when I have a client giving me all of the functionality that they want and design templates that they like. However, when it comes to making a website from scratch, I lose focus. I've found that if you spend more time in the design phase, you can organize your workload into steps. I suggest looking into Data Flow Diagrams, then designing your software with UML and designing your database with Entity-Relationship diagrams. It's purely visual and very easy to do when you get the hang of it. It helped me to complete a few projects.

Focus on visuals. Keep the creative juices flowing by drawing out how you want your UI to look before getting too deep into code. Web development focuses on the UI, as everything is event-driven. Don't be afraid to make it pretty, and don't rush it. Hell, re-design if you want to. Don't make it a habit, but a quick re-design mid-development cycle can help keep it fresh. When you are your own client, you don't want to be a boring client. Tell that dev to spice it up some more. :P

Separate your system into subsystems. If you work on one subsystem at a time, you'll find that it is more clear what each subsystem should be able to accomplish. Then, you can focus on what each subsystem should communicate to other subsystems. Data Flow Diagrams are great for breaking things up into subsystems. It gives you an idea of your processes and what data each process will receive, mutate, and send.

Prototype your work. Instead of working in the abstract forever, try to start small and work big. Get something displayed, add some data to your database, and test out things as if you were an actual user. Going straight for a finished product almost dooms you for failure, and it's best to have an idea of what direction you are moving in before moving too far.

Get into the user's shoes. When testing your UI, don't worry about what your website allows people to do. Look at what it doesn't allow. Looking at the little things will always give you something to strive for and keep your attention. If something seems harder or less intuitive than it should, then fix it!

Participate in the forums! Ask questions about anything that you are unsure of here. Sometimes, just venting about your system will help you along in the development process. And, if that isn't enough, we're all willing to help.

Good luck.

Re: Standard practice for implementing basic functionality?

Posted: Mon Oct 12, 2009 8:09 pm
by Mirge
superdezign wrote:Forgive me if I'm assuming too much, but it sounds as if you are doing fine, but you are getting bored. If you want tips on keeping yourself on track, I have a few pointers.

Design first. As a programmer, it's easiest (for me, at least) to make something after I know what it should do and how it should do it. I work well when I have a client giving me all of the functionality that they want and design templates that they like. However, when it comes to making a website from scratch, I lose focus. I've found that if you spend more time in the design phase, you can organize your workload into steps. I suggest looking into Data Flow Diagrams, then designing your software with UML and designing your database with Entity-Relationship diagrams. It's purely visual and very easy to do when you get the hang of it. It helped me to complete a few projects.

Focus on visuals. Keep the creative juices flowing by drawing out how you want your UI to look before getting too deep into code. Web development focuses on the UI, as everything is event-driven. Don't be afraid to make it pretty, and don't rush it. Hell, re-design if you want to. Don't make it a habit, but a quick re-design mid-development cycle can help keep it fresh. When you are your own client, you don't want to be a boring client. Tell that dev to spice it up some more. :P

Separate your system into subsystems. If you work on one subsystem at a time, you'll find that it is more clear what each subsystem should be able to accomplish. Then, you can focus on what each subsystem should communicate to other subsystems. Data Flow Diagrams are great for breaking things up into subsystems. It gives you an idea of your processes and what data each process will receive, mutate, and send.

Prototype your work. Instead of working in the abstract forever, try to start small and work big. Get something displayed, add some data to your database, and test out things as if you were an actual user. Going straight for a finished product almost dooms you for failure, and it's best to have an idea of what direction you are moving in before moving too far.

Get into the user's shoes. When testing your UI, don't worry about what your website allows people to do. Look at what it doesn't allow. Looking at the little things will always give you something to strive for and keep your attention. If something seems harder or less intuitive than it should, then fix it!

Participate in the forums! Ask questions about anything that you are unsure of here. Sometimes, just venting about your system will help you along in the development process. And, if that isn't enough, we're all willing to help.

Good luck.
Very, very well spoken.

Re: Standard practice for implementing basic functionality?

Posted: Tue Oct 13, 2009 6:04 pm
by cardinal
superdezign wrote:Forgive me if I'm assuming too much, but it sounds as if you are doing fine, but you are getting bored. If you want tips on keeping yourself on track, I have a few pointers.



Design first. As a programmer, it's easiest (for me, at least) to make something after I know what it should do and how it should do it. I work well when I have a client giving me all of the functionality that they want and design templates that they like. However, when it comes to making a website from scratch, I lose focus. I've found that if you spend more time in the design phase, you can organize your workload into steps. I suggest looking into Data Flow Diagrams, then designing your software with UML and designing your database with Entity-Relationship diagrams. It's purely visual and very easy to do when you get the hang of it. It helped me to complete a few projects.



Focus on visuals. Keep the creative juices flowing by drawing out how you want your UI to look before getting too deep into code. Web development focuses on the UI, as everything is event-driven. Don't be afraid to make it pretty, and don't rush it. Hell, re-design if you want to. Don't make it a habit, but a quick re-design mid-development cycle can help keep it fresh. When you are your own client, you don't want to be a boring client. Tell that dev to spice it up some more. :P



Separate your system into subsystems. If you work on one subsystem at a time, you'll find that it is more clear what each subsystem should be able to accomplish. Then, you can focus on what each subsystem should communicate to other subsystems. Data Flow Diagrams are great for breaking things up into subsystems. It gives you an idea of your processes and what data each process will receive, mutate, and send.



Prototype your work. Instead of working in the abstract forever, try to start small and work big. Get something displayed, add some data to your database, and test out things as if you were an actual user. Going straight for a finished product almost dooms you for failure, and it's best to have an idea of what direction you are moving in before moving too far.



Get into the user's shoes. When testing your UI, don't worry about what your website allows people to do. Look at what it doesn't allow. Looking at the little things will always give you something to strive for and keep your attention. If something seems harder or less intuitive than it should, then fix it!



Participate in the forums! Ask questions about anything that you are unsure of here. Sometimes, just venting about your system will help you along in the development process. And, if that isn't enough, we're all willing to help.



Good luck.


Thanks for the incredibly detailed and peppy (thanks coach! :wink: ) reply. Yeah, we are getting bogged down a bit mostly because alot of the functionality we're coding right now is pretty basic - we started off with page designs, E-R diagrams, and data flows to get a good understanding of how the site will work on paper. From there we've coded the authentication, email, and login portions of the site, but still have so much to do in terms of picture uploading, private messaging, and even the bulk of the tables that will be needed to store our real data, it is a bit daunting and we're thinking that there has to be a better way since alot of the stuff we're talking about is pervasive and should be modularized to a point where we can at least look at the code for some hints - error checking is the absolute worst, but necessary to make a robust site, and if someone did it all before us we could definitely leverage the knowledge.



From your description though it sounds like most people who build their site do it completely custom from the ground up, which if this is the case then I really need to look for more code literature on some topics - specifically text searching, does anyone have any good references for this? Our site will be heavy text and we're worried that an inefficient (doesn't have to be perfect, just not horribad) search could bring down the whole thing, but we don't have much experience with any metrics or quantification of search besides what was taught in college, so if anyone has any past experience or hints, please let me know :mrgreen:.



Cheers,

Card

Re: Standard practice for implementing basic functionality?

Posted: Tue Oct 13, 2009 9:06 pm
by superdezign
Using Google to search your site is efficient, but not very practical for websites that are just starting up, as not all pages will be crawled. But starting off, using SQL's basic text searching capabilities should be sufficient. MySQL is built for optimization, and works faster than you may think.

As for the monotonous "been there, done that" busywork, I understand how you feel. I normally break monotony by giving myself a small inner project to work on, such as a text parser, form generator, or database handler. Anything that keeps it fresh. It's like playing an MMO. You can do the same grinding to get to the max level, but you'll probably get bored and stop if you don't embrace the other entertaining aspects.